Binäre Zahlen in der Informatik - Rechnen im Dualsystem / Binärsystem
StartseiteKontaktImpressum

Gleitkommazahlen

Was sind Gleitkommazahlen?

Im Begriff Gleitkommazahl steckt schon das Wort "Komma". Gleitkommazahlen sind der heute übliche Weg, um Kommazahlen, also reelle Zahlen, für den Computer darzustellen. Das Wort entstammt der wörtlichen Übersetzung vom englischen "floatingpoint". Es gibt eine Vielzahl von Begriffen, die alle das selbe bedeuten: Fließkommazahl, Gleitkommazahl, Fließpunktzahl, Gleitpunktzahl.

Gleitkommazahlen sind nur Näherungen

Reelle Zahlen sind Zahlen, die Nachkommastellen haben. Manche dieser Zahlen sind vollkommen unproblematisch. Zum Beispiel 3,5. Diese Zahl entsteht beispielsweise, wenn man 7 durch 2 teilt.
Schwieriger sind jedoch Zahlen die kein Ende haben, also unendlich viele Nachkommstellen. Hierzu zählt zum Beispiel das Ergebnis aus 10 geteilt durch 3. Es ist 3,33333...
Ein Computer kann jedoch nicht problemlos eine unendliche Zahl anzeigen, bzw. berechnen. Das würde ja bedeuten, dass er unendlich lang diese Zahl ausdrucken müsste oder er unendlich viel Speicher besitzen müsste.

Aus diesem Grund beschränkt man sich auf eine bestimmte Anzahl an Nachkommastellen. Nehmen wir beispielsweise 10 Euro. Wenn man die durch drei teilen würde, würde jeder 3,33 Euro bekommen. Es bleibt dann jedoch ein Cent übrig. Wir geben uns also auch im realen Leben mit einer guten Näherung zufrieden.

Warum sind Näherungen problematisch?

Meistens stören Näherungen nicht. Problematisch wird es jedoch, wenn durch die Näherungen Folgefehler entstehen. Ein Beispiel ist wieder 10 geteilt durch 3.
Mathematisch richtig ist: 10/3*3=10
Ich teile eine Zahl durch drei und multipliziere das Ergebnis wieder mit drei. Es muss also wieder 10 herauskommen. Wenn ich mich jetzt jedoch auf die Näherung verlasse, komme ich zu einem falschen Ergebnis. Nehmen wir an, wir hätten nur 4 Nachkommastellen zur Verfügung. Also gilt:
10/3=3,3333
Wenn ich 3,3333 mit drei multipliziere kommt als Ergbenis 9,9999 heraus. Also stimmt meine Gleichung nicht mehr, da 10 ja nicht gleich 9,9999 ist.
Das mag jetzt vielleicht ein wenig spitzfindig klingen, ein Computer nimmt bekanntlicher Weise jedoch alles sehr genau.

Darstellung von Kommazahlen

Jede Zahl besteht aus einem Vorzeichen, einem Teil vor dem Komma und den Zahlen nach dem Komma.

Nehmen wir nochmal die Zahl 3,5. Wir teilen sie auf in:
Vorzeichen: +
Vorkommastelle: 3
Nachkommastelle: 5

Nehmen wir jetzt die Zahl -5432578865,7890763257556.
Vorzeichen: -
Vorkommastelle: 5432578865
Nachkommastelle: 7890763257556

Warum habe ich mir jetzt diese "seltsame" Zahl ausgesucht? Ich habe weiter oben schon von Näherungen gesprochen. Ist es bei einer so großen Zahl wichtig, die exakte Nachkommastelle zu kennen? Wahrscheinlich nicht. Wenn mich jemand nach der Zahl fragen würde, würde ich antworten: das sind ca. -5,4 Millarden.

-5,4 Milliarden bedeutet als Zahl -5400000000. Dies kann ich auch als -5,4*1000000000 schreiben. Dies kann ich nochmals anders schreiben als -5,4*109.

Wenn ich jetzt eine bessere Näherung brauche, dann kann ich einfach noch ein paar Nachkommastellen hinzufügen. -5,432*109 beschreibt die Zahl schon ziemlich gut.

Die Exponentialschreibweise

Jede reelle Zahl kann man in der Exponentialschreibweise darstellen. Ein Absatz weiter oben haben wir das schon mit der Zahl -5,4 Milliarden gemacht.
Allgemein kann man sagen: Eine Zahl kann man darstellen als Mantisse * Basis hoch Exponent.
Das bedeutet: -5400000000 = -5,4*109

Die Mantisse

Die Mantisse ist die Kommazahl, die mit der Basis hoch dem Exponenten multipliziert wird. Diese Kommazahl ist jedoch erstmal nicht auf eine bestimmte Form festgelegt. Alle untenstehenden Zahlen haben den selben Wert:

-5,4*109
= -54,0*108
= -0,54*1010

Eine gut gewählte Mantisse erspart einem beispielsweise bei sehr großen Zahlen viel Schreibarbeit.

76459000000000000000000 = 7,6459*1022

Ausserdem bestimmt die Mantisse die Genauigkeit der Zahl. Je mehr Stellen ich bei der Mantisse hinzufüge, desto genauer wird die Zahl.

Die Basis

Als Basis wählt man immer die dem jeweiligen Zahlensystem zugrundeliegende Basis. Im Dezimalsystem ist es eben die 10, im Oktalsystem die 8, im Hexadezimalsystem die 16 und im Dualsystem entsprechend die 2.
Wichtig ist hierbei, dass die Basis für das jeweilige System klar bestimmt sein muss. Wenn das der Fall ist, kann ich die Basis auch "weglassen". Man erstetzt die Basis dann einfach durch ein E. Die beiden Beispielzahlen schreiben sich dann so:

-5,4*109 = -5,4E9
7,6459*1022 = 7,6459E22

Achtung: Lassen Sie die Basis nur dann weg, wenn wirklich klar ist, auf welcher Basis das Zahlensystem aufgebaut ist.

Der Exponent

Der Exponent ist nichts anderes als eine beliebige Potenz der Basis. Man unterscheidet zwischen positiven und negativen Exponenten. Bei positiven Exponenten wird die Basis mit sich selbst mulitpliziert, bei negativen Exponenten wird (1/Basis) mit sich selbst multipliziert. Klingt kompliziert? Ist es eigentlich nicht. Beispiel:

103 = 10*10*10 = 1000
105 = 10*10*10*10*10 = 100000

10-3 = 1/10 * 1/10 * 1/10 = 0,001
10-5 = 1/10 * 1/10 * 1/10 * 1/10 * 1/10 = 0,00001

Normalisierung

Zahlen in der Exponentialschreibweise kann man normalisieren. Normalisierung bedeutet, dass keine Null vor dem Komma stehen darf.

Diese Darstellung hat den Vorteil, dass normalisierte Zahlen immer in der gleichen Form vorliegen und so eine bessere Vergleichbarkeit liefern.

IEEE-Format

Das IEEE-Format interpretiert eine bestimmte Anzahl von Bits als Dezimalzahl. Es gibt hier eine kleinere Variante mit 32 Bit und eine größere Variante mit 64 Bit.

Im 32 Bit Short-Format werden die Bits 0 bis 22 als Mantisse interpretiert, die Bits 23 bis 30 als Exponent und das Bit 31 als Vorzeichen.

Im 64 Bit Long-Format werden die Bits 0 bis 51 als Mantisse interpretiert, die Bits 52 bis 62 als Exponent und das Bit 63 als Vorzeichen.

Beispiel für das 32 Bit Short-Format:

01101101001100101010010101011101
wird zu
0 11011010 01100101010010101011101
Vorzeichen Exponent Mantisse

Das Vorzeichen 0 bedeutet dabei positiv, das Vorzeichen 1 bedeutet dabei negativ.

Der Exponent hat 8 Bit, er wird auf Basis des Zweierkomplementes mit einem Wertebereich von -128 bis +127 interpretiert.

Die Mantisse ist wird als positive Ganzzahl gewertet.

IEEE und Bias

Der Nachteil an der Darstellung laut IEEE ist die Tatsache, dass nun der Exponent eine positive oder eine negative Zahl sein kann, je nachdem ob wir sehr kleine oder sehr große Zahlen verwenden. Dies kann man dadurch umgehen, dass man gedanklich einen festen Betrag hinzu addiert. Anstatt einen Exponenten von -127 bis +128 zuzulassen, wird einfach mit dem Wertebereich 0 bis +255 gearbeitet und dann nachträglich um den Bias wieder korrigiert.

Was hat das denn für einen Sinn? Ganz einfach: bei der Umsetzung der Rechenarithmetik mit Vorzeichen in Schaltkreise und Elektronik muss ein größerer Aufwand betrieben werden. Aus diesem Grund wird mit dem "Trick" des Bias gearbeitet, so bleiben die Schaltungen einfacher. Der Bias bei Variablen mit dem Wertebereich Single ist B=127 und bei Double ist er B=1023.

Beispiel:

Dezimal: 172645455
Normalisiert: 1,72645455*108

Darstellung mit Bias B=127: 1,72645455*10(8+127) = 1,72645455*10135