| Der Standard IEEE-754 beschreibt das interne Speicherformat für die Darstellung von Gleitkomma-Zahlen, sowie Rechnungen, Sonderfälle usw. |
Diese Seite demonstriert die Codierung und Decodierung von Gleitkomma-Zahlen. Alle Angaben ohne Gewähr ! |
IEEE-754
|
Das Standardformat für Gleitkomma-Zahlen |
| Grundlagen | Mantisse, Exponent und Speicherbreite |
Live-Codierung und Decodierung von Gleitkomma-Zahlen:
|
|
| Codierung | Codierung Dezimal -> Binär |
| Decodierung | Decodierung Binär -> Dezimal |
| Sonderfälle | Zero, Infinity, Underflow, Overflow, NaN, ... |
| Fehler | Codier-Rest und Fehler |
| Verwandte Themen | Bitlevel-Operatoren |
Codierung einer Gleitkomma-Zahl nach IEEE-754 |
|
|
Hier wird die Umwandlung am Beispiel einer "Single Precision" Zahl mit 32 Bit
(4 Byte) Speicherbreite demonstriert. Die Grundlagen des Verfahrens werden auf der Seite '→ Mathematische Grundlagen' beschrieben. Codierung aus Vorzeichen (1 Bit), → Exponent (8 Bit) und → Mantisse (23 Bit). Die Codierung von 'Double' (1+11+52 -> 64 Bit) und 'Quad' Zahlen (1+15+112 -> 128 Bit) funktioniert nach dem gleichen Verfahren, verwendet lediglich mehr Speicher-Bits. |
|
|
Eingabe
Geben sie rechts eine Testzahl z ein oder klicken sie die
Taste für eine Zufallszahl.
|
|
|
Testzahl
|
z(dec) = 0
|
|
Vorzeichen
0 für Null und positive Zahlen, 1 für negative Zahlen.
|
Vorzeichen (1 Bit) = 0
|
|
Exponent
Exponent = int( ln(z) / ln(2) )Wert des Exponenten = 2^Exponent Codierung im → 2er-Komplement Binär-Code (8 Bit) des Exponenten |
Exponent(dec) = 0
ExponentWert(dec) = 0 Exponent + 127 = 0 Exponent = 00000000 |
|
Mantisse
Mantisse = Zahl / Exponent-WertBinär-Code der Mantisse (24 Bit) abzügl. führendes → Hidden Bit; (23. Bit) |
Mantisse (dec) = 0
Mantisse = 1.000000 - Hidden Bit = 00000000 |
|
Zusammensetzung
IEEE-754 = Vorzeichen + Exponent + MantisseDer gleiche Code (32 Bit) in Byte-Gruppen und in Hexdezimal-Code |
0 00000000 00000000000000000000000
00000000 00000000 00000000 00000000 00 00 00 00 |
|
Speicherform
In den meisten Betriebssystemen werden Worte aus >1 Bytes in umgekehrter Reihenfolge
('Little Endian') gespeichert.
|
00 00 00 00
|
Codier-Rest und Fehler |
|
|
Nicht jede Zahl lässt sich durch eine binäre Mantisse (mit endlicher Länge)
darstellen. Bei der Codierung mancher Dezimalzahlen kann ein kleiner Rest bleiben -
kleiner als oder gleich groß wie der Zahlenwert des letzten Mantissen-Bits. Beispiel:
Die Dezimalzahl 1/3 lässt sich im Dezimalsystem ebenso wie im
Binärsystem mit endlich vielen Ziffern nur annähern:0.3 -> 0.33 -> 0.333 -> 0.3333 usw. Mit zunehmender "Speicherbreite" steigt die Genauigkeit. |
►
Der Codier-Rest tritt in der Mantisse auf, daher handelt es sich um einen relativen Fehler -
er ist proportional zum Betrag der Zahl. ► Nach Mulitplikation mit dem jeweiligen Exponenten-Wert erhält man den absoluten Fehler. ► Der Fehler lässt sich in der Praxis noch etwas verkleinern, wenn die Mantisse vor der Codierung auf die Anzahl codierbarer Bits gerundet wird (hier nicht ausgeführt). |
|
Rest bei ↑ Codierung der
Testzahl (Live): Fehler = Rest * Exponent-Wert In ↑ Sonderfällen keine Aussage über Rest und Fehler ! Durchschnittlicher Rest ohne Rundung = 2^(-24) Durchschnittlicher Rest mit Rundung = 2^(-25) |
Rest = 0
Fehler = 0 Restor = 6E-08 Restmr = 3E-08 |
|