IEEE 754-1985

IEEE 754-1985 war ein Industriestandard, um Schwimmpunkt-Zahlen in Computern, offiziell angenommen 1985 zu vertreten, und hat 2008 durch IEEE 754-2008 ersetzt. Während seiner 23 Jahre war es das am weitesten verwendete Format für die Schwimmpunkt-Berechnung. Es wurde in der Software, in der Form von Schwimmpunkt-Bibliotheken, und in der Hardware, in den Instruktionen von vielen Zentraleinheiten und FPUs durchgeführt. Der erste einheitliche Stromkreis, um den Entwurf dessen durchzuführen, was IEEE 754-1985 werden sollte, war Intel 8087.

IEEE 754-1985 vertritt Zahlen in binären, zur Verfügung stellenden Definitionen für vier Niveaus der Präzision, von der die meistens verwendeten zwei sind:

  • Präzision: Die Zahl der dezimalen Ziffer-Präzision wird über number_of_mantissa_bits * Klotz (2) berechnet. So ~7.2 und ~15.9 für die einzelne und doppelte Präzision beziehungsweise.

Der Standard definiert auch Darstellungen für die positive und negative Unendlichkeit, eine "negative Null", fünf Ausnahmen, um ungültige Ergebnisse wie Abteilung durch die Null, speziellen Werte genannt NaNs zu behandeln, um jene Ausnahmen, denormal Zahlen zu vertreten, um Zahlen zu vertreten, die kleiner sind als, gezeigt oben, und vier sich rundende Weisen.

Darstellung von Zahlen

Schwimmpunkt-Zahlen in IEEE 754 Format bestehen aus drei Feldern: Ein Zeichen, hat eine voreingenommene Hochzahl und ein Bruchteil gebissen. Das folgende Beispiel illustriert die Bedeutung von jedem.

Die Dezimalzahl 0.15625 vertretene in der Dualzahl ist 0.00101 (d. h. 1/8 + 1/32). (Subschriften zeigen die Zahl-Basis an.) Analog der wissenschaftlichen Notation, wo Zahlen geschrieben werden, um eine einzelne Nichtnullziffer links vom dezimalen Punkt zu haben, schreiben wir diese Zahl um, so hat es ein einzelnes 1 Bit links vom "binären Punkt". Wir multiplizieren einfach durch die passende Macht 2, um zu ersetzen, die durch drei Positionen verlassenen Bit auszuwechseln:

:

Jetzt können wir vom Bruchteil und der Hochzahl lesen: Der Bruchteil ist.01, und die Hochzahl ist 3.

Wie illustriert, in den Bildern, den drei Feldern im IEEE 754 Darstellung dieser Zahl sind:

: unterzeichnen Sie = 0, weil die Zahl positiv ist. (1 zeigt negativ an.)

: voreingenommene Hochzahl = 3 + die "Neigung". In der einfachen Präzision ist die Neigung 127, so in diesem Beispiel ist die voreingenommene Hochzahl 124; in der doppelten Präzision ist die Neigung 1023, so ist die voreingenommene Hochzahl in diesem Beispiel 1020.

: Bruchteil =.01000 ….

IEEE 754 fügt eine Neigung zur Hochzahl hinzu, so dass Zahlen in vielen Fällen können, günstig durch dieselbe Hardware verglichen werden, die unterzeichnete ganze 2'S-Ergänzungszahlen vergleicht. Mit einer voreingenommenen Hochzahl werden die kleineren von zwei positiven Schwimmpunkt-Zahlen "weniger herauskommen als" das größere folgende dieselbe Einrichtung bezüglich des Zeichens und der ganzen Umfang-Zahlen. Wenn zwei Schwimmpunkt-Zahlen verschiedene Zeichen haben, arbeitet der Vergleich des Zeichens-Und-Umfangs auch mit voreingenommenen Hochzahlen. Jedoch, wenn beide Schwimmpunkt-Zahlen der voreingenommenen Hochzahl negativ sind, dann muss die Einrichtung umgekehrt werden. Wenn die Hochzahl als, sagen wir, eine 2'S-Ergänzungszahl, Vergleich vertreten würde, um zu sehen, welche von zwei Zahlen größer ist, würde so nicht günstig sein.

Das führende 1 Bit wird seit allen Zahlen außer dem Nullanfang mit einer Führung 1 weggelassen; die Führung 1 ist implizit und braucht nicht wirklich versorgt zu werden, der ein Extrabit der Präzision für "den freien" gibt.

Null

Die Zahl-Null wird besonders vertreten:

: unterzeichnen Sie = 0 für die positive Null, 1 für die negative Null.

: voreingenommene Hochzahl = 0.

: Bruchteil = 0.

Zahlen von Denormalized

Die Zahl-Darstellungen, die oben beschrieben sind, werden normalisiert genannt, bedeutend, dass die implizite binäre Hauptziffer 1 ist. Um den Verlust der Präzision zu reduzieren, wenn ein Unterlauf vorkommt, schließt IEEE 754 die Fähigkeit ein, kleinere Bruchteile zu vertreten, als in der normalisierten Darstellung, durch das Bilden der impliziten Hauptziffer 0 möglich ist. Solche Zahlen werden denormal genannt. Sie schließen so viele positive Ziffern nicht ein wie eine normalisierte Zahl, aber sie ermöglichen einen allmählichen Verlust der Präzision, wenn das Ergebnis einer arithmetischen Operation nicht genau Null ist, aber zu nahe zur durch eine normalisierte Zahl zu vertretenden Null ist.

Eine denormal Zahl wird mit einer voreingenommenen Hochzahl aller 0 Bit vertreten, die eine Hochzahl 126 in der einfachen Präzision (nicht 127), oder 1022 in der doppelten Präzision (nicht 1023) vertritt.

Darstellung von Nichtzahlen

Das Feld der voreingenommenen Hochzahl wird mit dem ganzen 1 Bit gefüllt, um entweder Unendlichkeit oder ein ungültiges Ergebnis einer Berechnung anzuzeigen.

Positive und negative Unendlichkeit

Positive und negative Unendlichkeit wird so vertreten:

: unterzeichnen Sie = 0 für die positive Unendlichkeit, 1 für die negative Unendlichkeit.

: voreingenommene Hochzahl = das ganze 1 Bit.

: Bruchteil = alle 0 Bit.

NaN

Einige Operationen der Fließkommaarithmetik, sind wie das Teilen durch die Null oder die Einnahme der Quadratwurzel einer negativen Zahl ungültig. Die Tat, ein ungültiges Ergebnis zu erreichen, wird eine Schwimmpunkt-Ausnahme genannt. Ein außergewöhnliches Ergebnis wird durch einen speziellen Code genannt NaN, für "Nicht eine Zahl" vertreten. Alle NaNs in IEEE 754-1985 haben dieses Format:

: unterzeichnen Sie = entweder 0 oder 1.

: voreingenommene Hochzahl = das ganze 1 Bit.

: Bruchteil = irgendetwas außer allen 0 Bit (da alle 0 Bit Unendlichkeit vertreten).

Reihe und Präzision

Präzision wird als der minimale Unterschied zwischen zwei aufeinander folgenden mantissa Darstellungen definiert; so ist es eine Funktion nur im mantissa; während die Lücke als der Unterschied zwischen zwei aufeinander folgenden Zahlen definiert wird.

Einfache Präzision

Zahlen der einfachen Präzision besetzen 32 Bit. In der einfachen Präzision:

  • Die positiven und negativen Zahlen, die an der Null am nächsten sind (vertreten durch den Denormalized-Wert mit dem ganzen 0s im Hochzahl-Feld und den binären Wert 1 im Bruchteil-Feld) sind
  • : ±2  ±1.4012985
  • Die positiven und negativen normalisierten Zahlen, die an der Null am nächsten sind (vertreten mit dem binären Wert 1 im Hochzahl-Feld und 0 im Bruchteil-Feld) sind
  • : ±2  ±1.175494351
  • Die begrenzten positiven und begrenzten negativen Zahlen weiter von der Null (vertreten durch den Wert mit 254 im Hochzahl-Feld und allen 1s im Bruchteil-Feld) sind
  • : ± (12) ×2  ±3.4028235

Eine Beispiel-Reihe und Lücke schätzen für gegebene Hochzahlen in der einfachen Präzision:

Als ein Beispiel, 16,777,217 kann als eine 32-Bit-Hin- und Herbewegung nicht verschlüsselt werden, weil es zu 16,777,216 rund gemacht wird. Das zeigt, warum das Schwimmen der Punkt-Arithmetik für die Buchhaltungssoftware unpassend ist. Jedoch können alle ganzen Zahlen innerhalb der wiederpräsentablen Reihe, die eine Macht 2 sind, in einer 32-Bit-Hin- und Herbewegung ohne das Runden versorgt werden.

Doppelte Präzision

Zahlen der doppelten Genauigkeit besetzen 64 Bit. In der doppelten Präzision:

  • Die positiven und negativen Zahlen, die an der Null am nächsten sind (vertreten durch den Denormalized-Wert mit dem ganzen 0s im Feld von Exp und den binären Wert 1 im Bruchteil-Feld) sind
  • : ±2  ±5
  • Die positiven und negativen normalisierten Zahlen, die an der Null am nächsten sind (vertreten mit dem binären Wert 1 im Feld von Exp und 0 im Bruchteil-Feld) sind
  • : ±2  ±2.2250738585072020
  • Die begrenzten positiven und begrenzten negativen Zahlen weiter von der Null (vertreten durch den Wert mit 2046 im Feld von Exp und allen 1s im Bruchteil-Feld) sind
  • : ± ((1  (1/2)) 2)  ±1.7976931348623157

Eine Beispiel-Reihe und Lücke schätzen für gegebene Hochzahlen in der doppelten Präzision:

Verlängerte Formate

Der Standard empfiehlt auch erweitertem Format (En), verwendet zu werden, um innere Berechnung an einer höheren Präzision durchzuführen, als das, das für das Endresultat erforderlich ist, herum - von Fehlern zu minimieren: Der Standard gibt nur minimale Präzision und Hochzahl-Voraussetzungen für solche Formate an. Verlängertes Format der x87 80 Bit ist das meistens durchgeführte verlängerte Format, das diesen Anforderungen entspricht.

Beispiele

Hier sind einige Beispiele der einfachen Präzision IEEE 754 Darstellungen:

Das Vergleichen von Schwimmpunkt-Zahlen

Jede mögliche Bit-Kombination ist entweder NaN oder eine Zahl mit einem einzigartigen Wert im erweiterten System der reellen Zahl des affinely mit seiner verbundenen Ordnung, abgesehen von den Zwei-Bit-Kombinationen negative positive und Nullnull, die manchmal spezielle Aufmerksamkeit (sieh unten) verlangen. Die binäre Darstellung hat das spezielle Eigentum, dass, NaNs ausschließend, irgendwelche zwei Zahlen wie Zeichen und ganze Umfang-Zahlen verglichen werden können (obwohl mit modernen Computerverarbeitern das nicht mehr direkt anwendbar ist): Wenn das Zeichen gebissen hat, ist verschieden, die negative Zahl geht der positiven Zahl voran (außer dass negative positive und Nullnull gleich betrachtet werden sollte), sonst ist Verhältnisordnung dasselbe als lexikografische Ordnung, aber umgekehrt für zwei negative Zahlen; Endianness-Probleme gelten.

Fließkommaarithmetik ist dem Runden unterworfen, das das Ergebnis von Vergleichen auf den Ergebnissen der Berechnung betreffen kann.

Obwohl negative positive und Nullnull allgemein gleich zum Vergleich betrachtet wird, könnten Zwecke, einige Programmiersprache-Vergleichsoperatoren und ähnliche Konstruktionen oder sie wirklich als verschieden behandeln. Gemäß der javanischen Sprachspezifizierung behandeln Vergleich und Gleichheitsmaschinenbediener sie als gleich, aber Math.min und Math.max unterscheiden sie (offiziell mit der javanischen Version 1.1, aber wirklich mit 1.1.1 anfangend), wie tun, sind die Vergleich-Methoden , compareTo gleich , und vergleichen Sie sich sogar der Klassenhin- und Herbewegung und Doppelt.

Das Runden von Schwimmpunkt-Zahlen

Der IEEE Standard hat vier verschiedene sich rundende Weisen; das erste ist der Verzug; andere werden geleiteten roundings genannt.

  • Herum zum Nächsten - Runden zum nächsten Wert; wenn die Zahl auf halbem Wege fällt, wird sie zum nächsten Wert mit einem gleichen am wenigsten bedeutenden (null)-Bit rund gemacht, das 50 % der Zeit vorkommt (in IEEE, wird 754-2008 diese Weise roundTiesToEven genannt, um sie von einer anderen Weise der Runde-zu-nächst zu unterscheiden)
,
  • Herum zu 0 - das geleitete Runden zur Null
  • Herum zu +  - das geleitete Runden zur positiven Unendlichkeit
  • Herum zu  - hat das Runden zur negativen Unendlichkeit geleitet.

Das Verlängern der reellen Zahlen

Der IEEE Standard verwendet (und streckt sich aus) der affinely hat System der reellen Zahl mit der getrennten positiven und negativen Unendlichkeit erweitert. Während des Zeichnens gab es einen Vorschlag für den Standard, um das projektiv verlängerte System der reellen Zahl, mit einer einzelnen nicht unterzeichneten Unendlichkeit, durch das Versorgen von Programmierern mit einer Weise-Auswahl-Auswahl zu vereinigen. Im Interesse, die Kompliziertheit des Endstandards zu reduzieren, war die projektive Weise jedoch fallen gelassen. Intel 8087 und Intel 80287, der Punkt-Coprozessoren beide Unterstützung diese projektive Weise schwimmen lässt.

Funktionen und Prädikate

Standardoperationen

Die folgenden Funktionen müssen zur Verfügung gestellt werden:

  • Fügen Sie hinzu, ziehen Sie ab, multiplizieren Sie, teilen Sie
  • Quadratwurzel
  • Das Schwimmen des Punkt-Rests. Das ist keiner normalen modulo Operation ähnlich, es kann für zwei positive Zahlen negativ sein. Es gibt den genauen Wert dessen zurück.
  • Herum zur nächsten ganzen Zahl. Für das ungeleitete Runden, wenn halbwegs zwischen zwei ganzen Zahlen die gleiche ganze Zahl gewählt wird.
  • Vergleich-Operationen. Außer den offensichtlicheren Ergebnissen definiert IEEE 754 das  = , +  = +  und  für jeden (einschließlich).

Empfohlene Funktionen und Prädikate

  • Unter einigen C Bearbeitern, Rückx mit dem Zeichen von y, so ist gleich. Das ist eine der wenigen Operationen, die auf NaN in einem Weg Ähnlichkeitsarithmetik bedient. Die Funktion ist im C99 Standard neu.
  • −x gibt x mit dem umgekehrten Zeichen zurück. Das ist von 0−x in einigen Fällen namentlich verschieden, wenn x 0 ist. So − (0) ist −0, aber das Zeichen 0−0 hängt von der sich rundenden Weise ab.
  • ein Prädikat für "x ist ein begrenzter Wert" gleichwertig zu −Inf ist ein Prädikat für "x NaN", gleichwertig zu "x  x"
ist
  • wahr, wenn "x mit y nicht eingeordnet ist", d. h., sind entweder x oder y NaN.
  • gibt den folgenden wiederpräsentablen Wert von x in der Richtung zu y zurück

Geschichte

1976 hat Intel begonnen zu planen, ein Schwimmpunkt-Coprozessor zu erzeugen. Dr John Palmer, der Betriebsleiter der Anstrengung, hat sie überzeugt, dass sie versuchen sollten, einen Standard für alle ihre Schwimmpunkt-Operationen zu entwickeln. William Kahan wurde als ein Berater angestellt; er hatte geholfen, die Genauigkeit der Rechenmaschinen von Hewlett Packard zu verbessern. Kahan hat am Anfang empfohlen, dass die Schwimmpunkt-Basis dezimal ist, aber das Hardware-Design des Coprozessors wurde zu weit vorgebracht, um diese Änderung vorzunehmen.

Die Arbeit innerhalb von Intel hat andere Verkäufer beunruhigt, die eine Standardisierungsanstrengung aufgestellt haben, eine 'Chancengleichheit' zu sichern. Kahan hat dem zweiten IEEE 754 Standardarbeitsgruppe-Sitzung, gehalten im November 1977 beigewohnt. Hier hat er Erlaubnis von Intel erhalten, um einen Draftvorschlag vorzubringen, der auf dem arithmetischen Standardteil ihres Designs für ein Coprozessor gestützt ist. Die Argumente über den allmählichen Unterlauf haben bis 1981 gedauert, als ein vor dem DEZ beauftragter Experte, ihn zu bewerten, gegen die Andersdenkenden Partei ergriffen hat.

Sogar bevor es genehmigt wurde, war der Draftstandard von mehreren Herstellern durchgeführt worden. Intel 8087, der 1980 bekannt gegeben wurde, war der erste Span, um den Draftstandard durchzuführen.

Siehe auch

  • IEEE 754-2008
  • −0 (negative Null)
  • Intel 8087
  • Hin- und Miniherbewegung für einfache Beispiele von Eigenschaften von IEEE 754 Schwimmpunkt-Zahlen
  • Festkommaarithmetik

Weiterführende Literatur

  • : Ein Kompendium von nichtintuitiven Handlungsweisen des Schwimmpunkts auf populären Architekturen, mit Implikationen für die Programm-Überprüfung und Prüfung.

Links


In vitro / Intel 80186
Impressum & Datenschutz