Der Martin: Gleitkommadarstellung, 16 Bit

Beitrag lesen

Hallo Axel,

die Darstellung von Zahlen wie 1,2345 z.B. klappt nun schon langsam in der 16 Bit Gleitkommadarstellung.

ups, das ist recht ungewöhnlich und kann wohl nur für einen recht kleinen Wertebereich und/oder eine geringe Genauigkeit funktionieren.

Jetzt soll ich aber auch noch eine Ganzzahl 23456 in die Darstellung bringen. Nun weiß ich aber nicht, wie es dabei dann zu der Mantisse kommt.

Die gängigen Implementierungen stellen Fließkommazahlen dar, indem die Mantisse auf den Zahlenbereich [½ .. 1[ normalisiert wird. Dein Zahlenbeispiel 23456 (binär: 0101 1011 1010 0000) wäre damit also

0.1011011101(b) * 2^15

Du dividierst also den Wert so oft durch 2, bis das Ergebnis kleiner 1, aber noch größer oder gleich ½ ist. Die Anzahl der Divisionen (bzw. Rechts-Shifts) ist dann der Exponent, der verbliebene Quotient die Mantisse.
Das Prinzip funktioniert auch in umgekehrter Richtung, wenn die ursprüngliche Zahl kleiner als ½ ist: Verdopple sie so oft (Links-Shift), bis sie größer oder gleich ½, aber kleiner 1 ist. Der Exponent ergibt sich dann auch als Anzahl der Shifts (aber negativ!), die Mantisse wie vorher.
Nur wenn die Ausgangszahl schon im Intervall [½ .. 1[ liegt, kannst du sie direkt als Mantisse übernehmen, der Exponent ist dann 0.

oder mit DIV und MOD wie es bei der bisherigen Umrechnung von Ganzzahlen in binär üblich war?

Huch? An welches komplizierte Verfahren denkst du da?

So long,
 Martin

--
Alleine sind wir stark ...
gemeinsam sind wir unausstehlich!