Zum Inhalt springen

Gleitkommazahl

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 21. August 2004 um 16:05 Uhr durch Elwood j blues (Diskussion | Beiträge) (IEEE 754 verlinkt). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Idee

Eine Gleitkommazahl (auch: Fließkommazahl, Gleitpunktzahl, binäre Gleitkommazahl) ist eine digitale Näherung für eine reelle Zahl, die in Computern verwendet wird. Im Gegensatz zur Festkommadarstellung wird dabei die Zahl geteilt in eine Mantisse und einem Exponenten gespeichert, wodurch ein größerer Wertebereich als bei Festkommadarstellung abgedeckt werden kann. Diese Darstellung wurde von Konrad Zuse für seine Computer Z1 und Z3 erfunden.

Eine Gleitkommaberechnung ist eine arithmetische Operation, die mit Gleitkommazahlen ausgeführt wird.

Beispiele von Gleitkommazahlen:

  • 5,0
  • 0,003
  • 3,1419 (keine weiteren Stellen)
  • 8E17 (äquivalent zu 8·1017)

Bei Gleitkommazahlen ist nicht die absolute Anzahl von Stellen konstant, sondern die Anzahl signifikanter Stellen.

Das heißt, dass man eine Zahl a durch zwei Zahlen m und e solcherart darstellen kann, dass a = m · be gilt. Zur Darstellung von Gleitkommazahlen wählt man eine beliebige Basis b (auch: Radix) und eine Präzision p, die angibt, wieviele Ziffern gespeichert werden sollen.

Die Zahl m wird Mantisse genannt und ist eine Zahl mit p Stellen der Form +-z,zzz...zzz . Hierbei steht z stellvertretend für eine Ziffer zwischen 0 und b-1. Eine Mantisse m heißt normalisiert, wenn ihre erste Ziffer ungleich Null ist. Bei Darstellungen von Gleitkommazahlen, die ein Vorzeichenbit verwenden, wird außerdem verlangt, dass die Mantisse positiv ist. e wird Exponent genannt. (Siehe auch: Logarithmus)

Durch die Darstellung von Gleitkommazahlen mit Mantisse und Exponent erreicht man, dass mehr Zahlen in beschränktem Speicherplatz untergebracht werden können als bei Festkommazahlen.

Beispiel:

Eine Gleitkommazahl mit vier dezimalen Stellen (b = 10, p = 4) kann dazu verwendet werden, 4.321 oder 0,00004321 darzustellen. Es wird allerdings in Kauf genommen, dass bei einer derartigen Darstellung Zahlen gerundet werden. So wird etwa aus 432,123 der Wert 432,1 und aus 43.212,3 der Wert 43.210. In der Praxis ist die Anzahl der verwendeten Stellen meist größer als vier.

Darstellung

Datei:IEEE-754-single1.png
Bitdarstellung des IEEE 754 "Single" Datentyps

Binäre Gleitkommazahlen werden analog zur wissenschaftlichen Schreibweise von Dezimalzahlen dargestellt. In der wissenschaftlichen Schreibweise wird die Zahl 0,00001234 als 1,234·10-5 geschrieben, oder die Zahl 123.400 als 1,234·105. Die wissenschaftliche Schreibweise verwendet dabei eine normalisierte Darstellung.

Für die Darstellung als Gleitkommazahl wird eine Zahl in drei Teile aufgespalten. Ein Vorzeichenbit zeigt dabei negative Werte der Mantisse an. Für die Mantisse wird eine gewisse Anzahl von Bits festgelegt, sie wird im Binärsystem gespeichert. Ebenso wird der Exponent als gewisse Anzahl von Bits gespeichert.

Das gebräuchliche IEEE-Format für Gleitkommazahlen verwendet eine normalisierte Darstellung der Mantisse. Dadurch ist die Position des Kommas implizit bekannt. Ebenso ist die Basis b = 2 implizit durch die binäre Codierung aller Zahlen bekannt.

Hidden Bit

Bei der Darstellung normalisierter Mantissen im Binärsystem kann ein Bit eingespart werden. Da die erste Stelle einer normalisierten Zahl immer ungleich 0 ist, ist diese Stelle im Binärsystem immer gleich 1. Das heißt, dass diese erste Eins nicht explizit gespeichert werden muss, da dies implizit bekannt ist. Das erwähnte IEEE-Format für Gleitkommazahlen macht von dieser Einsparungsmöglichkeit Gebrauch.

Allerdings bedeutet die Verwendung eines derartigen Hidden Bit, dass die Null nicht mehr direkt als Gleitkommazahl gespeichert werden kann. Für die Darstellung der Null wird deshalb eine bestimmte Bitfolge reserviert.

Darstellung negativer Exponenten

Exponenten können ebenso wie die Mantisse negativ sein. Meist werden negative Exponenten jedoch nicht im Zweierkomplement dargestellt, sondern in Biased-Darstellung. Dabei wird zum eigentlichen Exponenten eine festgelegte Zahl, der Bias, addiert. Bei einem Bias von 127 wird aus einem Exponenten e = -1 etwa 126, aus e = -127 wird 0 und aus e = 7 wird 134. Die negativen Werte werden also durch Addition des Bias in den positiven Bereich verschoben.

Der Vorteil der Biased-Darstellung besteht darin, dass auf diese Weise ein Größer/Kleiner-Vergleich zwischen zwei Gleitkommazahlen erleichert wird. Es genügt, die Ziffernfolgen em, also jeweils Exponent e gefolgt von Mantisse m, lexikographisch miteinander zu vergleichen. Eine Gleitkomma-Subtraktion mit anschließendem Vergleich auf Null wäre weitaus aufwendiger. Der Nachteil der Biased-Darstellung gegenüber der Zweierkomplement-Darstellung besteht darin, dass nach einer Addition zweier Biased-Exponenten der Bias subtrahiert werden muss, um das richtige Ergebnis zu erhalten.

Gleitkommazahlen in der Digitaltechnik

Die oben erwähnten Beispiele sind im Dezimalsystem angegeben, das heißt mit einer Basis b = 10. Computer verwenden stattdessen das Binärsystem mit einer Basis b = 2. Gleitkommazahlen werden in Computern normalerweise als Folgen von 32 Bit ("einfache Genauigkeit") oder 64 Bit ("doppelte Genauigkeit") dargestellt. Manche Prozessoren erlauben auch längere Gleitkommazahlen, so kennen die von der Intel x86 Serie abgeleiteten Prozessoren (u.a. Intel Pentium und AMD Athlon) eine Gleitkommazahldarstellung mit 80 Bit für Zwischenergebnisse. Manche Systeme erlauben auch Gleitkommazahlen mit 128 Bit.

Die IEEE hat die Darstellung von Gleitkommazahlen in ihrem Standard IEEE 754 reglementiert; beinahe alle modernen Prozessoren folgen diesem Standard. Ausnahmen sind einige IBM-Großrechnersysteme, die VAX-Architektur und einige Supercomputer, etwa von Cray.

Die tatsächliche Darstellung im Computer besteht also aus einem Vorzeichen-Bit, einigen Mantissen-Bits und einigen Exponenten-Bits. Wobei die Mantisse meist normiert ist und Zahlen im Interval [1; 2] darstellt. (Da in diesem Interval das erste Bit mit der Wertigkeit Eins stets gesetzt ist, wird es meist implizit angenommen und nicht gespeichert.) Der Exponent wird meist im Biased-Format, oder auch im Zweierkomplement dargestellt. Des weiteren werden zur Darstellung besonderer Werte (Null, Unendlich, Keine Zahl) meist einige Exponentenwerte, z.B. der größtmögliche und der kleinstmögliche Exponent, reserviert.

Eine Zahl f wird demzufolge als f = s · m · 2e dargestellt, wobei s Element von {-1, 1} ist.

IEEE 754 S/390
Mantisse (in Bit) Exponent (in Bit) Mantisse (in Bit) Exponent (in Bit)
Short 23 8 24 7
Long 52 11 56 7
Extended 64 15 112 7