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,100100000000000000000002
Mantisse = 10010000000000000000000Achtung: 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
|