Heim  >  Artikel  >  Web-Frontend  >  Darstellungsbereich von Gleitkommazahlen

Darstellungsbereich von Gleitkommazahlen

清浅
清浅Original
2019-03-08 15:57:2237664Durchsuche

Gleitkommazahlen bestehen aus drei Teilen: Symbol, Exponentencode und Mantisse. Gleitkommazahlen werden in Gleitkommazahlen mit einfacher Genauigkeit und Gleitkommazahlen mit doppelter Genauigkeit unterteilt Zahlen beträgt -3,4E38 ~3,4E38, der Bereich der Gleitkommazahlen mit doppelter Genauigkeit beträgt -1,79E+308 ~ +1,79E+308

Darstellungsbereich von Gleitkommazahlen

[Empfohlen Kurs: JavaScript-Tutorial

Darstellung von Gleitkommazahlen

Eine Gleitkommazahl (Floating Point Number) besteht aus drei Grundkomponenten : Vorzeichen (Sign), Expand Code ( Exponent) und Mantisse (Mantissa). Gleitkommazahlen können normalerweise im folgenden Format dargestellt werden:

S  P M    

wobei S das Vorzeichenbit, P der Exponentencode und M die Mantisse ist.

Gemäß der Definition im IEEE (Institute of Electrical and Electronics Engineers) 754-Standard sind Gleitkommazahlen mit einfacher Genauigkeit 32 Bit (d. h. 4 Bytes) und Gleitkommazahlen mit doppelter Genauigkeit 64-Bit (d. h. 8 Bytes) von. Die Anzahl der von S, P und M belegten Ziffern und die Darstellungsmethode der beiden sind in der folgenden Tabelle aufgeführt:

Gleitkommazahl mit einfacher Genauigkeit

S    M   表示公式 偏移量   
单精度浮点数 1(第31位) 8(30到23位) 23(22到0位) (-1)^S*2(P-127)*1.M 127    
双精度浮点数 1(第63位) 11(62到52位) 52(51到0位) (-1)^S*2(P-1023)*1.M 1023    
S P M td> Formel darstellen Offset
1 (31. Position) 8 (Ziffern 30 bis 23) 23 (Ziffern 22 bis 0) (-1)^S*2(P-127)*1.M 127
Gleitkommazahl mit doppelter Genauigkeit 1 (63. Position) 11 ( 62 bis 52 Bit) 52 (51 bis 0 Bits) (-1)^S*2(P -1023)* 1.M 1023

wobei S das Vorzeichenbit ist, nur 0 und 1, was jeweils positiv und negativ anzeigt

P ist der Exponentencode, der normalerweise durch Rahmencode dargestellt wird (Rahmencode und Komplementcode haben nur das entgegengesetzte Vorzeichenbit, Der Rest ist derselbe. Für positive Zahlen sind der ursprüngliche Code, das Komplement und das Komplement gleich; für negative Zahlen ist das Komplement die Umkehrung aller ursprünglichen Codes ihrer Absolutwerte und die anschließende Addition von 1). Der Exponentencode kann eine positive oder eine negative Zahl sein. Um den Fall eines negativen Exponenten zu handhaben, muss der tatsächliche Exponentenwert mit einem Bias-Wert als dem im Exponentenfeld gespeicherten Wert addiert werden Der Abweichungswert der Zahl mit einfacher Genauigkeit beträgt 127, der Abweichungswert der Zahl mit doppelter Genauigkeit beträgt 1023. Beispielsweise wird der tatsächliche Exponentenwert 0 mit einfacher Genauigkeit als 127 im Exponentenfeld gespeichert, während 64 im Exponentenfeld den tatsächlichen Exponentenwert -63 darstellt. Die Einführung des Bias ermöglicht Zahlen mit einfacher Genauigkeit Drücken Sie tatsächlich den Exponentenwert aus. Der Bereich beträgt -127 bis 128 (beide Enden eingeschlossen).

M ist die Mantisse, wobei Zahlen mit einfacher Genauigkeit 23 Bit lang und Zahlen mit doppelter Genauigkeit 52 Bit lang sind. Der IEEE-Standard verlangt, dass Gleitkommazahlen kanonisch sein müssen. Dies bedeutet, dass die linke Seite des Dezimalpunkts der Mantisse 1 sein muss. Wenn Sie also die Mantisse speichern, kann die 1 vor dem Dezimalpunkt weggelassen werden, wodurch ein Binärbit frei wird, um mehr Mantissen zu speichern. Dabei wird tatsächlich ein 23-Bit langes Mantissenfeld verwendet, um die 24-Bit-Mantisse auszudrücken. Beispielsweise kann für Zahlen mit einfacher Genauigkeit die Binärzahl 1001,101 (entsprechend der Dezimalzahl 9,625) als 1,001101 × 23 ausgedrückt werden, sodass der tatsächlich im Mantissenfeld gespeicherte Wert 00110100000000000000000 ist, d. h. die 1 links vom Dezimalpunkt entfernt und rechts wird 0 verwendet.
Gemäß den Standardanforderungen müssen Werte, die nicht genau gespeichert werden können, auf den nächsten speicherbaren Wert gerundet werden, d. h. wenn er weniger als die Hälfte beträgt, wird er gerundet, und wenn er mehr als die Hälfte (einschließlich der Hälfte) beträgt ), wird gerundet. Für binäre Gleitkommazahlen gilt jedoch noch eine weitere Regel: Wenn der zu rundende Wert genau die Hälfte beträgt, wird nicht einfach gerundet, sondern der letzte der beiden speicherbaren Werte, die äquidistant nahe beieinander liegen Vorher und Nachher wird genommen. Die Anzahl der signifikanten Ziffern ist Null.

Gemäß der obigen Analyse definiert der IEEE 754-Standard den Darstellungsbereich von Gleitkommazahlen als:

Gleitkommazahl mit doppelter Genauigkeit

二进制(Binary) 十进制(Decimal)
单精度浮点数 ± (2-2^-23) × 2127 ~ ± 10^38.53
双精度浮点数 ± (2-2^-52) × 21023 ~ ± 10^308.25
Binär Dezimal
Gleitkommazahl mit einfacher Genauigkeit ± (2-2^-23) × 2127 ~ ± 10^38.53
± (2-2^-52) × 21023 ~ ± 10^308.25

Die Darstellung von Gleitkommazahlen hat einen bestimmten Bereich. Wenn der Bereich überschritten wird, kommt es zu einem Überlauf (Flow). Im Allgemeinen werden Daten, die größer als der maximale Absolutwert sind, als Überlauf (Overflow) bezeichnet Der minimale absolute Wert wird als Unterlauf (Underflow) bezeichnet.

Darstellungskonventionen für Gleitkommazahlen

Gleitkommazahlen mit einfacher und doppelter Genauigkeit sind beide im IEEE 754-Standard definiert , und es gibt einige spezielle Konventionen, zum Beispiel:
1. Wenn P=0 und M=0, bedeutet es 0.
2. Wenn P = 255 und M = 0, bedeutet dies Unendlich, und das Vorzeichenbit wird verwendet, um zu bestimmen, ob es sich um positive Unendlichkeit oder negative Unendlichkeit handelt.
 3. Wenn P=255 und M≠0, bedeutet das NaN (Not a Number, not a number).
Nicht standardmäßige Gleitkommazahlen

Wenn zwei Gleitkommazahlen mit extrem kleinen Absolutwerten subtrahiert werden, kann der Exponent der Differenz den zulässigen Bereich überschreiten und kann am Ende nur ungefähr 0 sein. Um solche Probleme zu lösen, hat der IEEE-Standard denormalisierte Gleitkommazahlen eingeführt, die festlegen, dass die Mantisse nicht normalisiert werden muss, wenn der Exponent einer Gleitkommazahl der minimal zulässige Exponentenwert ist. Bei nicht standardmäßigen Gleitkommazahlen wird die implizite Einschränkung des Mantissenbits aufgehoben und es können Gleitkommazahlen mit kleineren Absolutwerten gespeichert werden. Da es zudem nicht mehr durch das implizite Mantissenfeld eingeschränkt wird, besteht das oben erwähnte Problem extrem kleiner Unterschiede nicht, da alle speicherbaren Unterschiede zwischen Gleitkommazahlen auch gespeichert werden können.
Gemäß der Definition im IEEE 754-Standard kann der Darstellungsbereich kanonischer und nichtkanonischer Gleitkommazahlen wie folgt zusammengefasst werden:


规范浮点数 非规范浮点数 十进制近似范围
单精度浮点数 ± 2^-149 至 (1-2^-23)*2^-126 ± 2^-126 至 (2-2^-23)*2^127 ± ~10^-44.85 至 ~10^38.53
双精度浮点数 ± 2^-1074 至 (1-2^-52)*2^-1022 ± 2^-1022 至 (2-2^-52)*2^1023 ± ~10^-323.3 至 ~10^308.3
Normale Gleitkommazahlen Nicht standardmäßige Gleitkommazahl Dezimaler ungefährer Bereich
Gleitkommazahl mit einfacher Genauigkeit ± 2^-149 bis (1-2^-23)*2^-126 ± 2^-126 bis (2-2^-23)*2^127 ± ~10^-44,85 bis ~10^38,53
Gleitkomma mit doppelter Genauigkeit number ± 2^-1074 bis (1-2^- 52)*2^-1022 ± 2^-1022 bis (2-2^-52)*2^1023 td> ± ~10^-323,3 bis ~10^308,3

Standards im Zusammenhang mit IEEE 754

Die Schlussfolgerung daraus Der Artikel basiert auf dem IEEE 754-Standard. Bei diesem Standard handelt es sich um dezimale Gleitkommazahlen, es wird jedoch kein bestimmtes Format angegeben, weshalb es selten verwendet wird. Darüber hinaus begann im Jahr 2000 eine Überarbeitung des IEEE 754, bekannt als IEEE 754R, mit dem Ziel, die Standards IEEE 754 und IEEE 854 zu integrieren. Die Überarbeitungen des Gleitkommaformats dieses Standards umfassen: 1. Hinzufügen von 16-Bit- und 128-Bit-Binär-Gleitkommaformaten 2. Hinzufügen von Dezimal-Gleitkommaformaten und Übernahme des von IBM vorgeschlagenen Formats;

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er wird für alle hilfreich sein.

Das obige ist der detaillierte Inhalt vonDarstellungsbereich von Gleitkommazahlen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

In Verbindung stehende Artikel

Mehr sehen