Fachkonzept - Fest- und Gleitkommazahlen
Die Darstellungsmethode von Kommazahlen hängt vom Anwendungsfall und den damit einhergehenden Anforderungen ab.
Anforderungen
Spezielle Steuerungsanlagen wie etwa die Automatisierung der Helligkeit einer Lichtanlage in Abhängigkeit vom Tageslicht oder die Temperaturmessung einer Kühlanlage erfordern Messungen in ganz bestimmten Intervallen mit festgelegter Genauigkeit, zum Beispiel:
- Temperaturen zwischen -30° und +20° mit einer Genauigkeit von einer Dezimalen oder
- Spannungen zwischen 0 und 12 V mit einer Genauigkeit von einer Hundertstel an einem Fotowiderstand.
- ...
Rechner, die frei programmierbar sind, müssen unterschiedliche Anforderungen bewältigen können: Manchmal werden sehr große Zahlen benötigt, oft aber auch kleinste Bruchteile. Andere Anwendungen verrechnen sehr kleine Bruchteile mit großen Zahlen - wie man es beispielsweise aus der Chemie bei der Berechnung mit molaren Massen kennt.
Wie bei ganzen Zahlen benötigt man ein Bit für das Vorzeichen. Bei Festkommazahlen hat dann jedes weitere Bit einen festen Stellenwert, bei Gleitkommazahlen erhält man unter Einschränkung der Genauigkeit einen größeren Wertebereich.
Festkommazahlen
Eine Festkommazahl stellt eine Zahl mit einer bestimmten Anzahl von Ziffern dar, wobei die Position des Kommas fest vorgegeben ist und daher nicht mit gespeichert werden muss.
Die digitale Darstellung einer Festkommazahl kann in
n
Bits für den Vorkommateil und m
Bits für die Nachkommastellen zerlegt werden.
In der Bitfolge
bn-1 ... b0 b-1 ... b-mhat dann jedes Bit
b
i die Wertigkeit 2i.
Beispiel
Als Beispiel wird hier eine (positive) Festkommazahl aus einem Byte betrachtet mit n=5
und m=3
:
Hinweise
Zu beachten ist, dass im Dezimalsystem abbrechende Brüche im Binärsystem periodisch sein können. Beispielsweise lässt sich der Dezimalbruch 0,6 nicht als Summe von Zweierpotenzen mit negativen Exponenten darstellen.
Werden negative Zahlen benötigt, so kann auch das Zweierkomplement verwendet werden.
Gleitkommazahlen
Eine Gleitkommazahl (auch: Fließkommazahl) ist eine (i. a. näherungsweise) Darstellung einer Zahl mithilfe der Exponentialschreibweise in der Form . Die Darstellung besteht dabei aus Vorzeichen ~, Mantisse m, Basis b und Exponent e. Die Mantisse bezeichnet dabei die Ziffernfolge der Zahl.
Bei fester Basis genügt es also Vorzeichen, Mantisse und Exponent anzugeben.
Wissenschaftliche Darstellungen im Dezimalsystem
Aus den Naturwissenschaften oder der Mathematik kennen wir Darstellungen von sehr großen oder sehr kleinen Zahlen wie (Avogadro-Konstante) oder (Elementarladung).
Man spricht von einer normalisierten Darstellung, wenn genau eine Ziffer (ungleich 0) der Mantisse vor dem Komma steht.Bei Taschenrechnern findet man häufig auch die Darstellung 6.022E23
oder 1.6E-19
.
Darstellung im Binärsystem
Im Falle der Binärdarstellung ist bei normalisierten Gleitkommazahlen (außer 0) immer eine 1 vor dem Komma und eine positive Gleitkommazahl kann in der Form
1,mn...m0 * 2ek...e0dargestellt werden. Daher genügt es, neben dem Vorzeichen, die Nachkommastellen der Mantisse und die Darstellung des Exponenten zu speichern.
Bias
Damit der Exponent als positive Zahl gespeichert werden kann, wird eine feste Zahl, der Bias B, hinzuaddiert. Der kleinstmögliche Exponent der Vorkommastelle (-B) wird dann als 0 gespeichert.Beispiel
Als (überschaubares) Beispiel wird hier eine Gleitkommazahl aus einem Byte betrachtet mit einem dreistelligen Exponenten, einem Bias von 3 und einer vierstelligen Mantisse:
Darstellbar sind damit Zahlen im Intervall [-31;31] jedoch nur mit geringer Genauigkeit.
Gängige Codierungen
Normierte Darstellungen verwenden folgende Bitlängen für Mantisse und Exponent:
Datentyp | VZ | Exponent (Bias) |
Mantisse | Summe |
---|---|---|---|---|
half | 1 | 5 (15) |
10 | 16 (=2 Byte) |
single (float) | 1 | 8 (127) |
23 | 32 (=4 Byte) |
double | 1 | 11 (1023) |
52 | 64 (=8 Byte) |
Rechenschritte zur Bestimmung der Gleitkommadarstellung
Im folgenden Beispiel wird der o. g. single-Datentyp mit einem Bias von 127 verwendet.
Bestandteil | Vorschrift | Beispiel für x=125,4 |
---|---|---|
Vorzeichen | +: 0, -: 1 | 0(2) |
Exponent | exp=[log2(x)] expB=exp+Bias |
6+127=133 1000 0101(2) |
Mantisse | (x:2exp-1)*2m, m ist Mantissenlänge |
(125,4:26-1)*223=8 047 820 (,8) 111 1010 1100 1100 1100 1101(2) |
0 1000 0101 111 1010 1100 1100 1100 1101 |
Konverter
Einen Konverter für Gleitkommazahlen findet man unter https://www.h-schmidt.net/FloatConverter/IEEE754de.html