Werte vom Datentyp float werden als Gleitkommazahl gespeichert.
Zahl=(-1)Signum·2Exponent-127·(1+Mantisse)
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
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,100100000000000000000002Mantisse = 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= 100001002Exponent=10000100 |
Zusammenfassung | Signum Exponent Mantisse 0 10000100 10010000000000000000000 Hexadezimal = 00 00 48 42 (umgekehrte Reihenfolge) |
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) |
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 |