Schlüsseltechnologie

STP009: Fließkommazahlen


Listen Later

„Wir nehmen diese Ausrede Grafik, um in diesen Grundlagenfolgen Dinge zu erklären, die überhaupt nichts mit Grafik zu tun zu haben scheinen, aber dann machen wir den Bogen doch wieder zurück.“

Damit schafft Xyrill die passende Einleitung dieser dritten Folge unserer vierteiligen Reihe.

Shownotes
  • Rückbezug zu STP001: Ganzzahlen

    • z.B. 8-Bit-Zahlen: ohne Vorzeichen 0 bis 255 oder mit Vorzeichen -128 bis 127
    • Problem 1: Wie stellt man Zahlen mit Nachkommastellen dar?
    • Problem 2: Wie stellt man sehr große Zahlen effizient dar?
    • zwei Optionen: Festkommazahlen und Fließkommazahlen
    • Festkommazahlen

      • im Prinzip dasselbe wie Ganzzahlen, aber zählt in Schritten von 0,1 oder 0,01 etc.
      • Beispiel: Währungsrechnungen oft mit 4 Nachkommastellen (also auf 0,01 Eurocent genau)
      • gegenüber Fließkommazahlen: schneller und genauer, aber nicht so flexibel (löst nur Problem 1, nicht Problem 2)
      • Fließkommazahlen

        • grundsätzliche Idee: analog zur wissenschaftlichen Zahlennotation
          • z.B. "1,2 Milliarden": nicht als 1.200.000.000, sondern 1,2 x 10^9
          • z.B. "2 Hunderttausendstel": nicht als 0,000002, sondern 2 x 10^-6
          • Vorteil: unabhängig von der Größenordnung kann immer die gleiche Zahl an Ziffern dargestellt werden
          • in Computern natürlich nicht zur Basis 10, sondern zur Basis 2
          • Bestandteile einer Fließkommazahl

            • Exponent (E): die Anzahl der Zweierpotenzen
            • Mantisse (M): der Teil der Zahl, der nicht in der Potenz steht
            • insgesamt also M * 2^E für positive oder -M * 2^E für negative Zahlen
            • Rechenoperationen ungefähr analog zum Rechenschieber

              • z.B. Addition: erst die Exponenten angleichen, dann die Mantissen addieren, dann eventuell nochmal den Exponenten anpassen, damit die finale Darstellung wieder schön kompakt ist
              • hier kommt das Überlaufbit aus STP003 wieder ins Spiel
              • Kodierung: fast immer gemäß IEEE-754-Standard

                * IEEE

                • Problem: wir wollen uns nicht merken müssen, wo in der Mantisse das Komma steht
                • Trick: wir schieben das Komma so hin, dass die Mantisse mit 1, anfängt, und speichern dann nur den Teil dahinter (normalisierte Zahlen)
                • Ausnahme: beim kleinsten Wert des Exponenten fängt die Mantisse mit 0, an, damit wir auch die Zahl 0 und sehr kleine Zahlen nahe 0 darstellen können (subnormale Zahlen)
                • z.B. für 32 Bit: einfache Genauigkeit ("Single Precision")
                  • 1 Bit Vorzeichen
                  • 8 Bit Exponent (Ganzzahl zwischen -127 und 128)
                  • 23 Bit Signifikand (Mantisse ohne das führende 1, oder 0,)
                  • Werte je nach Exponent:
                    • Exponent = -127 -> subnormale Zahlen
                    • Exponent = 128 -> spezielle Werte
                    • ansonsten -> normalisierte Zahlen
                    • im Exponent 128 werden einige spezielle Werte kodiert, die man braucht, damit jede Rechenoperation immer eine gültige Fließkommazahl erzeugt:
                      • plus Unendlich: z.B. 1 / 0 = +∞ oder ∞ + ∞ = ∞
                      • minus Unendlich: z.B. -1 / 0 = -∞ oder log2(0) = -∞
                      • keine Zahl (not a number, NaN): z.B. ∞ - ∞ = NaN oder 0 / 0 = NaN oder log2(-1) = NaN
                      • Implementation von Fließkommarechnungen

                        • initial in Software auf Basis von Ganzzahlen
                        • seit den 1980ern zunehmend in Hardware (seit den 1990ern auch in PCs)
                        • Fallstricke bei Fließkommarechnungen

                          • nicht alle kompakten Dezimalzahlen sind kompakte Binärzahlen: z.B. 0.3/0.2 = 1.4999999999999998
                          • bei komplexen Berechnungen können sich kleine Rundungsfehler zu großen Fehlern aufschaukeln, siehe zum Beispiel Kahan-Summenalgorithmus (leider in Wikipedia nur auf englisch)
                          • Anwendungsbereiche üblicher Fließkommaformate

                            • doppelte Genauigkeit (64 Bit): für wissenschaftliche Berechnungen
                            • einfache Genauigkeit (32 Bit): für 3D-Grafik (siehe nächste Folge)
                            • halbe Genauigkeit (16 Bit), Viertelgenauigkeit (8 Bit): für Training von neuronalen Netzwerken
                            • ...more
                              View all episodesView all episodes
                              Download on the App Store

                              SchlüsseltechnologieBy Xyrillian Noises


                              More shows like Schlüsseltechnologie

                              View all
                              Chaosradio by Chaos Computer Club Berlin

                              Chaosradio

                              7 Listeners

                              Freak Show by Metaebene Personal Media - Tim Pritlove

                              Freak Show

                              10 Listeners

                              Logbuch:Netzpolitik by Metaebene Personal Media - Tim Pritlove

                              Logbuch:Netzpolitik

                              7 Listeners

                              Methodisch inkorrekt! by Methodisch inkorrekt!

                              Methodisch inkorrekt!

                              14 Listeners

                              c’t uplink - der IT-Podcast aus Nerdistan by c’t Magazin

                              c’t uplink - der IT-Podcast aus Nerdistan

                              7 Listeners

                              Jung & Naiv by Tilo Jung

                              Jung & Naiv

                              43 Listeners

                              heiseshow by heise online

                              heiseshow

                              2 Listeners

                              Übermedien by Übermedien

                              Übermedien

                              3 Listeners

                              Lage der Nation - der Politik-Podcast aus Berlin by Philip Banse & Ulf Buermeyer

                              Lage der Nation - der Politik-Podcast aus Berlin

                              216 Listeners

                              Die Wochendämmerung - Der stabile Wochenrückblick by Katrin Rönicke und Holger Klein (hauseins)

                              Die Wochendämmerung - Der stabile Wochenrückblick

                              15 Listeners

                              Sicherheitshalber by Der Podcast zur sicherheitspolitischen Lage in Deutschland, Europa und der Welt.

                              Sicherheitshalber

                              45 Listeners

                              Bit-Rauschen: Der Prozessor-Podcast von c’t by c't Magazin

                              Bit-Rauschen: Der Prozessor-Podcast von c’t

                              1 Listeners

                              Legion by rbb | NDR | Undone

                              Legion

                              6 Listeners

                              Haken dran – das Social-Media-Update der c't by Gavin Karlmeier

                              Haken dran – das Social-Media-Update der c't

                              2 Listeners

                              Passwort - der Podcast von heise security by Dr. Christopher Kunz, Sylvester Tremmel

                              Passwort - der Podcast von heise security

                              3 Listeners