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
                              Bits und so by Undsoversum GmbH

                              Bits und so

                              26 Listeners

                              wrint: gespräche zum runterladen by Holger Klein

                              wrint: gespräche zum runterladen

                              13 Listeners

                              Methodisch inkorrekt! by Methodisch inkorrekt!

                              Methodisch inkorrekt!

                              14 Listeners

                              Apfelfunk by Malte Kirchner & Jean-Claude Frick

                              Apfelfunk

                              7 Listeners

                              Das Wissen | SWR by SWR

                              Das Wissen | SWR

                              119 Listeners

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

                              c’t uplink - der IT-Podcast aus Nerdistan

                              8 Listeners

                              Stay Forever - Retrogames & Technik by Stay Forever Team

                              Stay Forever - Retrogames & Technik

                              35 Listeners

                              Logbuch:Netzpolitik by Metaebene Personal Media - Tim Pritlove

                              Logbuch:Netzpolitik

                              7 Listeners

                              Computer und Kommunikation by Deutschlandfunk

                              Computer und Kommunikation

                              9 Listeners

                              Der KI-Podcast by ARD

                              Der KI-Podcast

                              24 Listeners

                              KI-Update – ein heise-Podcast by Isabel Grünewald, heise online

                              KI-Update – ein heise-Podcast

                              3 Listeners

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

                              Passwort - der Podcast von heise security

                              3 Listeners

                              Geschichten aus der Mathematik by detektor.fm – Das Podcast-Radio

                              Geschichten aus der Mathematik

                              1 Listeners

                              UNFASSBAR – ein Simplicissimus Podcast by Simplicissimus

                              UNFASSBAR – ein Simplicissimus Podcast

                              26 Listeners

                              Darknet Diaries Deutsch by heise online

                              Darknet Diaries Deutsch

                              0 Listeners