Bei dieser Darstellung wird die Position des Dezimalpunktes einer Zahl zusätzlich dynamisch geregelt.
Unangenehmerweise ist es möglich, ein und dieselbe Zahl auf verschiedenste Arten darzustellen. Zum Beispiel: 0,123 = 123 * 10^-3 = 1230 * 10^-4 = 12300 * 10^-5 Darum wurde für die Gleitkommadarstellung die normierte Form entwickelt: Die Mantisse ist eine Zahl, deren Vorkommateil 1 ist. Einzigster Problemfall: Die Zahl 0. Die restliche Information der Zahl ist im Nachkommateil der Mantisse und im Exponenten der Zahl.
Normiert man z.B. die binäre Zahl +11001,1011 sieht das Ergebnis folgendermaßen aus: +1,10011011 * 10^100 Da die Ziffer vor dem Komma also fast immer 1 ist (Ausnahme: 0), kann man auf deren Abspeicherung verzichten und gewinnt so ein zusätzliches Mantissenbit, wodurch die Genauigkeit erhöht werden kann. Diese Genauigkeit wird allerdings mit der Sonderbehandlung von 0 erkauft.
Es muß also nur das Vorzeichen (1 Bit), die sogenannte Mantisse und der Exponent abgespeichert werden.
Charakteristik
In der Praxis treten positive Exponenten häufiger auf als negative. Man vergrößert daher den Bereich für positive Exponenten auf Kosten der negativen Exponenten. Das geschieht dadurch, daß zum Wert des Exponenten ein konstanter Betrag k addiert wird. Diese Konstante k wird als Charakteristik bezeichnet.
Bsp.: k=4; darzustellender Wert: 173d
r +173 = 10101101 binär = 0,101011010 * 2^8 normalisiert.
Darstellung des Exponenten 8-4 = 4 = 100 binär.
An diesem Beispiel kann man die Vergrößerung in Richtung der positiven Zahlen deutlich sehen: Die Zahl 173 könnte ohne Charakteristik in diesem Format gar nicht dargestellt werden, da der Exponent 8 ist (Binär: 1000) und 3 Bits im Exponenten für die Darstellung von 8 nicht reichen würden.
Genauigkeit der Nachkommastellen
Die Genauigkeit der Gleitkommazahlen ist relativ zur Größe der Zahl, und kann grob durch die Formel Genauigkeit(Gleitkomma):=a-Log(|x|) beschrieben werden. Die Genauigkeit von Festkommazahlen hingegen ist absolut, und entspricht der Formel Genauigkeit(Festkomma):=Anzahl_Nachkommabits*log(2)/log(10).
Vorteile:
. Speicherbereich ist genau definiert (z.B: 4 Bytes für einfache und 8 Bytes für doppelte Genauigkeit)
. Weite Verbreitung des IEEE Standards
. Leichte Verwendung, weil die meisten Programmiersprachen direkte Schnittstellen anbieten.
Nachteile:
. Mantisse ist begrenzt => Ungenauigkeit
. Man muß sich meistens auf die Genauigkeit des Coprozessors verlassen.
. Der Speicherbereich ist genau definiert, und man bekommt nicht mehr Genauigkeit, als angeboten wird. Als Beispiel: PI kann mit Gleitkommaartithmetik nur mit 52 Bits Mantisse gespeichert werden. Wenn man PI auf z.B. mit 100 Bits Mantisse speichern will, muß man Fixkommaartihmetik verweden.
|