Gleitkommazahlen werden durch Vorzeichen, Mantisse und Exponent beschrieben
und erreichen damit deutlich größere Absolutwerte als Integerzahlen
und können auch gebrochene Zahlen codieren.
Genauer: Für eine gegebene Zahl werden
Mantisse und Exponent gesucht mit der Eigenschaft
Java verwendet zur Kodierung von Vorzeichen, Mantisse und Exponent den IEEE-Standard 754-1985, den wir hier aus didaktischen Gründen etwas vereinfacht darstellen.
Codierung
Bei einer Codierung für 32 Bits (float) werden für das Vorzeichen 1 Bit, für den Exponenten 8 Bits und für die reduzierte Mantisse 23 Bits vorgesehen.
X | XXXXXXXX | XXXXXXXXXXXXXXXXXXXXXXX |
Vorzeichen | Exponent | reduzierte Mantisse |
Die Codierung des Vorzeichens geschieht über 0 = positiv und 1 = negativ,
die Codierung des ganzzahligen Exponenten erfolgt im 2-er Komplement,
die Codierung der nichtganzzahligen Mantisse erfolgt als Dualzahl mit
Nachkommastellen. Hierbei werden die Dualziffern nach
dem Komma gewichtet mit 2er-Potenzen der Form mit negativen .
D.h.
Zu gegebenem lässt sich eine normalisierte Mantisse und der dazu passende Exponent wie folgt finden:
Bestimme die größte -er Potenz mit .
Setze .
Offenbar gilt
Zur Bestimmung der Nachkommastellen der reduzierten Mantisse eignet sich folgender Algorithmus
for (i = 0; i < k; i++) { f = f * 2.0; if (f >= 1.0) {IO.print('1'); f = f - 1.0;} else IO.print('0'); }
Als Codierung ergibt sich
0 | 00000011 | 10110000000000000000000 |
Vorzeichen | Exponent | reduzierte Mantisse |
Für die Spezialfälle wird vereinbart: Das vorzeichenbehaftete Unendlich () wird durch den maximal möglichen Exponent kodiert. Die vorzeichenbehaftete Null wird durch den minimal möglichen Exponent kodiert.
Die größte darstellbare positive Zahl im vereinfachten
float-Format liegt knapp unter
0 | 01111110 | 11111111111111111111111 |
Vorzeichen | Exponent | reduzierte Mantisse |
0 | 10000001 | 00000000000000000000000 |
Vorzeichen | Exponent | reduzierte Mantisse |
Bei der Codierung für 64 Bits (double) sind für das Vorzeichen 1 Bit, für den Exponenten 11 Bits und für die reduzierte Mantisse 52 Bits vorgesehen.
X | XXXXXXXXXXX | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
Vorzeichen | Exponent | reduzierte Mantisse |
Damit liegt die größte darstellbare positive Zahl im vereinfachten
double-Format knapp unter
Die kleinste darstellbare positive Zahl im vereinfachten double-Format lautet