Gleitkommazahlen (Floatingpoint)

Immer wieder wird im Web gefragt warum ein Ergebnis ungenau sei. Nun das liegt einfach am System. Gleitkommazahlen sind ungenau wenn:
  • sie einen gebrochenen Zahlenteil (Nachkommateil) haben der keine Potenz von 2 ist. das trifft für die meisten Nachkommastellen zu.
  • die Anzahl der Ziffern den Signifikanzbereich überschreitet. Für eine Dezimalstelle werden ca 3,3 Bits Mantisse benötigt.
    Da die Mantisse aber begrenzt ist, wird mit der ungenauen Zahl gerechnet.
    So wie viele (Politiker) die Kosten für ein Projekt mit cirka 500 Millionen angegeben, der Buchhalter aber die genauen Zahlen benötigt.

Umwandlung Gleitkomma (Single Precison) IEEE 754

Für die Umwandlung einer Dezimalzahl in eine Gleitkommazahl werden 2 Umrechnungsverfahren benötigt.
Der ganzzahlige Teil wird mittels der Divisionsrestmethode in eine Binärdarstellung umgewandelt.
Der gebrochenen Zahlenteil (die Nachkommastellen) werden mittels der Multiplikationsmethode in eine Binärdarstellung überführt.
Anschliessend werden diese beiden Ergebnisse zur Mantisse der Gleitkommazahl vereinigt und der Exponent ermittelt.

Aufbau Gleitkomma Single Precision:

Bitte geben Sie einen Wert für die Umrechnung ein. Basis 2, 8,16 zulässig.
    Neue Basis         Eingabe float

Beispiele Gleitkomma Single Precision





1.0f     3F800000     00111111 10000000 00000000 00000000
-1.0f     BF800000    11011111 10000000 00000000 00000000
5.0f     40A00000    01000000 10100000 00000000 00000000
-5.0f     C0A00000    11000000 10100000 00000000 00000000
Wie man sieht unterscheiden sich negativer Wert vom positiven Wert nur duch das Vorzeichenbit.

Exponent

Der Exponent einer Single Precision wird zum Bias 12710 = 0111 11112gebildet.
Um den Exponenten zu erzeugen wird das Dezimaltrennzeichen hinter die erste 1 verschoben.
Eine (510) 101,2 wird zu 1,012 es wurde somit um 2 Stellen nach links verschoben.
Die Anzahl der Bits, um die verschoben wird, wird gezählt (hier 2).
Da das erste Bit somit immer eine 1 ist, wird es nicht gespeichert. Das erhöht den Signifikanzbereich.
Bei einer Linksverschiebung wird die Anzahl zum Bias 127 addiert.
                            01111111   =  12710
                            00000010   =    210
                         -------------------------------------
                            10000001   =  12910
  		              
Bei einer Rechtsverschiebung wird die Anzahl vom Bias 127 subtrahiert.
Wie wir sehen unterscheidet sich 5.0f von -5.0f nur durch das zusätzlich gesetzte Vorzeichenbit.

1. Divisionsrestmethode

Die Umrechnung des ganzahligen Teils der Gleitkommazahl erfolgt mittels
Horner Schema (Divisionsrestmethode).
Dabei wird die Zahl durch die Basis des neuen Zahlensystems geteilt.
Der Divisionsrest ergibt eine Ziffer der neuen Zahl.
Mit dem ganzahligen Resultat wird die nächste Division vorgenommen
bis kein ganzahliges Resultat mehr vorhanden ist.
Die Reste in umgekehrter Reihenfolge ergeben die Zahl im neuen Zahlensystem,
d.h. der erste Rest ergibt die letzte Ziffer.

 

2. Multiplikationsmethode

Bei der Multiplikationsmethode wird der Nachkommateil mit der Basis des neuen Zahlensystems multipliziert. Der sich dabei ergebende Ganzzahlige Teil ergibt eine Ziffer im neuen Zahlensystem. Mit dem dabei jeweils entstandenden Nachkommateil wird multipliziert, bis genügend Ziffern für die Mantisse vorhanden sind. Wenn die neue Basis nicht 2 ist werden die Binärdarstellungen mittels Substitutionsmethode verwendet, um den Teil der Mantisse zu bilden.

 



3. Ermittlung Exponent und Mantisse

Exponent und Mantisse werden jetzt zusammengefasst. Um den Exponenten zu erzeugen wird das Dezimaltrennzeichen hinter die erste 1 verschoben. Bei einer 101, wird es zu 1,01 es wurde somit um 2 Stellen nach links verschoben (normalisiert). Die Anzahl der Bits, um die verschoben wird, wird gezählt.
Bei einer Linksverschiebung wird die Anzahl zum Bias 127 addiert
.
                            011111112   =  12710
  		            +       000000102   =    210
  		                    ----------
  		   Exponent         100000102  =  13010
  		              
Bei einer Rechtsverschiebung wird die Anzahl vom Bias 127 subtrahiert.
Das erste Bit (welches damit immer eine 1 ist) wird nicht mit in die Mantisse übernommen und erhöht damit den Signifikanzbereich.
                                    
       normalisiert         

Bit 3124231615870 Exponent(Bias)Mantisse Vorzeichen VEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM 00111111100000000000000000000000
Es gibt folgende Möglichkeiten:
  1. Der Nachkommateil ist eine Potenz von 2, dann wird die Mantisse mit 0 aufgefüllt. Der Wert ist genau.
  2. Das erste abgeschnittene Bit ist 0, dann rechnen Sie mit einem Wert der kleiner als die Ausgangszahl ist.
  3. Das erste abgeschnittene Bit ist 1, dann wird die Mantisse gerundet und Sie rechnen mit einem Wert der grösser als die Ausgangszahl ist.


Für weiter Formate siehe Wikipedia
Typ Exponent (r) Mantisse (p) Größe (1+r+p) Werte des Exponenten (e) Biaswert (B) Signifikanz
single 8 bit 23 bit 32 bit -126 ≤ e ≤ 127 127 7 .. 8
double 11 bit 52 bit 64 bit -1022 ≤ e ≤ 1023 1023 15 .. 16