Speichern eines float - Wertes


Werte vom Datentyp float werden als Gleitkommazahl gespeichert.

Normalisierung

Der erste Schritt besteht in der Normalisierung der Zahl. Dabei wird so umgeformt, dass die Mantisse größer oder gleich 1 und kleiner als die Basis des Zahlensystems ist. Bei Dualzalen hat das zur Konsequenz, dass die Vorkommastelle der Mantisse immer 1 beträgt.

Zahl=(-1)Signum·2Exponent-127·(1+Mantisse)

Beispiele

Dezimalsystem
Basis 10
Dualsystem
Basis 2
  940      = 9,40 ·102
  15670,45 = 1,567045 ·104
  0,0027   = 2,7 ·10-3
    
 5    = 1,25 ·22
 50   = 1,5625 ·25
 0,05 = 1,6 ·2-5
         

Für weitere Berechnungen soll die Zahl 50 abgebildet werden

Speicherabbildung

Bestimmung des Vorzeichens Die Zahl ist größer als 0, also ist

Signum=0

Normalisierung 50 = 1,5625 ·25
Bestimmung der Mantisse Da die Vorkommastelle immer 1 ist, wird diese nicht mit abgespeichert. Man bezeichnet sie als hidden Bit.
  0,5625 · 2 = 1 + 0,125
  0,125  · 2 = 0 + 0,25
  0,25   · 2 = 0 + 0,5
  0,5    · 2 = 1 + 0,0
  =======================
  0,562510 = 0,10012
  Auffüllen auf 23 Nachkommastellen (Mantissenlänge)
  0,562510 = 0,100100000000000000000002
            
Mantisse = 10010000000000000000000
Achtung: Unter Umständen liefert die Konvertierung ins Dualsystem einen periodischen Dualbruch. Dann wird nach der 24. Stelle abgebrochen und auf 23 Stellen gerundet.
Bestimmung des Exponenten Mit 8 Bit für die Darstellung des Exponenten können 256 verschiedene Werte erzeugt werden. Um auch negative Exponenten zu ermöglichen, wird der Wert des Exponenten um 127 verschoben.
 5 + 127 = 132
 132 : 2 = 66 Rest 0
 66  : 2 = 33 Rest 0
 33  : 2 = 16 Rest 1
 16  : 2 =  8 Rest 0
 8   : 2 =  4 Rest 0
 4   : 2 =  2 Rest 0
 2   : 2 =  1 Rest 0
 1   : 2 =  0 Rest 1
 ===================
 13210= 100001002
Exponent=10000100
Zusammenfassung Signum Exponent Mantisse
0 10000100 10010000000000000000000
Hexadezimal = 00 00 48 42 (umgekehrte Reihenfolge)

Sonderfälle

Mit der beschriebenen Methode kann die Zahl 0 nicht dargestellt werden. Deshalb werden einige Spezialfälle vereinbart.
Exponent = 0 In diesem Fall wird das hidden Bit weggelassen. Die Zahl ergibt sich aus 0,Mantisse · 2-126
Exponent = 255 Mantisse = 0, diese Darstellung bedeutet ∞
Mantisse ≠ 0, dies ist keine gültige Zahlendarstellung (NaN)

Wertebereich

betragsmäßig größter Wert
  Exponent=111111102=254-127 = 127
  Mantisse=1,111111111111111111111112 ≈1,99999988079071
  Zahl=1,99999988079071·2127≈3,40282·1038
        
betragsmäßig kleinster von 0 verschiedener Wert
  Exponent=000000012=1-127 = -126
  Mantisse=1,000000000000000000000012 ≈1,00000011920928
  Zahl=1,00000011920928·2-126≈1,175494491·10-38
        

zurück Beispiel