Gleitkommazahlen
Warum Gleitkommazahlen benötigt werden
Da der Computerspeicher begrenzt ist, können Sie Zahlen nicht mit unendlicher Genauigkeit speichern, egal ob Sie binäre oder dezimale Brüche verwenden: Irgendwann müssen Sie abschneiden. Aber wie viel Genauigkeit wird benötigt? Und wo wird es benötigt? Wie viele ganzzahlige Ziffern und wie viele Bruchziffern?
- Für einen Ingenieur, der eine Autobahn baut, spielt es keine Rolle, ob es 10 Meter oder 10 sind.0001 Meter breit – ihre Messungen sind wahrscheinlich gar nicht so genau.
- Für jemanden, der einen Mikrochip entwirft, sind 0,0001 Meter (ein Zehntel Millimeter) ein großer Unterschied – Aber er muss sich nie mit einer Entfernung von mehr als 0,1 Metern auseinandersetzen.
- Ein Physiker muss die Lichtgeschwindigkeit (etwa 300000000) und Newtons Gravitationskonstante (etwa 0,0000000000667) zusammen in derselben Berechnung verwenden.
Um den Ingenieur und den Chipdesigner zufrieden zu stellen, muss ein Zahlenformat Genauigkeit für Zahlen mit sehr unterschiedlichen Größen bieten. Es ist jedoch nur relative Genauigkeit erforderlich. Um den Physiker zufrieden zu stellen, muss es möglich sein, Berechnungen durchzuführen, die Zahlen mit unterschiedlichen Größen beinhalten.
Grundsätzlich ist es nicht sinnvoll, eine feste Anzahl von ganzzahligen und gebrochenen Ziffern zu haben – und die Lösung ist ein Format mit einem Gleitkommawert.
Funktionsweise von Gleitkommazahlen
Die Idee besteht darin, eine Zahl aus zwei Hauptteilen zusammenzustellen:
- Ein Signifikand, der die Ziffern der Zahl enthält. Negative Bedeutungen stellen negative Zahlen dar.
- Ein Exponent, der angibt, wo der Dezimal- (oder Binär-) Punkt relativ zum Anfang des Signifikanden platziert ist. Negative Exponenten stellen Zahlen dar, die sehr klein sind (d. H. Nahe Null).
Ein solches Format erfüllt alle Anforderungen:
- Es kann Zahlen mit sehr unterschiedlichen Größen darstellen (begrenzt durch die Länge des Exponenten)
- Es bietet die gleiche relative Genauigkeit bei allen Größen (begrenzt durch die Länge des Signifikanden)
- Es ermöglicht Berechnungen über Größen: das Multiplizieren einer sehr großen und einer sehr kleinen Zahl bewahrt die Genauigkeit beider im Ergebnis.
Dezimale Gleitkommazahlen haben normalerweise die Form einer wissenschaftlichen Notation mit einem expliziten Punkt immer zwischen der 1. und 2. Ziffer. Der Exponent wird entweder explizit einschließlich der Basis geschrieben oder ein e wird verwendet, um ihn vom Signifikanten zu trennen.
Der Standard
Nahezu alle Hardware- und Programmiersprachen verwenden Gleitkommazahlen in den gleichen Binärformaten, die im IEEE 754-Standard definiert sind. Die üblichen Formate sind 32 oder 64 Bit Gesamtlänge:
Format | Total bits | Significand bits | Exponent bits | Smallest number | Largest number |
---|---|---|---|---|---|
Single precision | 32 | 23 + 1 sign | 8 | ca. 1.2 ⋅ 10-38 | ca. 3.4 ⋅ 1038 |
Double precision | 64 | 52 + 1 sign | 11 | ca. 2.2 ⋅ 10-308 | ca. 1.8 ⋅ 10308 |
Beachten Sie, dass es einige Besonderheiten gibt:
- Die tatsächliche Bitfolge ist zuerst das Vorzeichenbit, gefolgt vom Exponenten und schließlich den signifikanten Bits.
- Der Exponent hat kein Vorzeichen; stattdessen wird eine Exponentenvorspannung davon subtrahiert (127 für einfache und 1023 für doppelte Genauigkeit). Dies und die Bitfolge ermöglichen es, Gleitkommazahlen zu vergleichen und korrekt zu sortieren, selbst wenn sie als ganze Zahlen interpretiert werden.
- Die höchstwertige Ziffer des Signifikanden wird weggelassen und als 1 angenommen, mit Ausnahme von subnormalen Zahlen, die durch einen All-0-Exponenten gekennzeichnet sind und einen Zahlenbereich jenseits der kleinsten in der obigen Tabelle angegebenen Zahlen zulassen auf Kosten der Genauigkeit.
- Es gibt separate positive und negative Nullwerte, die sich im Vorzeichenbit unterscheiden, wobei alle anderen Bits 0 sind. Diese müssen als gleich betrachtet werden, obwohl ihre Bitmuster unterschiedlich sind.
- Es gibt spezielle positive und negative Unendlichkeitswerte, wobei der Exponent alle 1 Bit und der Signifikanz alle 0 Bit beträgt. Dies sind die Ergebnisse von Berechnungen, bei denen der positive Bereich des Exponenten überschritten wird, oder die Division einer regulären Zahl durch Null.
- Es gibt spezielle not a number (oder NaN) -Werte, bei denen der Exponent alle 1 Bit und der Signifikanz nicht alle 0 Bit beträgt. Diese stellen das Ergebnis verschiedener undefinierter Berechnungen dar (z. B. Multiplikation von 0 und unendlich, Berechnung mit einem NaN-Wert oder anwendungsspezifische Fälle). Auch bit-identische NaN-Werte dürfen nicht als gleich angesehen werden.
Wenn dies zu abstrakt erscheint und Sie sehen möchten, wie bestimmte Werte in IEE 754 aussehen, versuchen Sie es mit dem Float-Spielzeug oder der IEEE 754-Visualisierung oder Float Exposed .
Leave a Reply