Gleitkommazahlen sind gemäß dem IEEE 754-Standard organisiert. Bei einfacher Genauigkeit besteht das Format aus 1 Bit für das Vorzeichen, 8 Bits für den Exponenten und 23 Bits für den Bruch. Der Exponent ist um -127 voreingenommen, daher steht 0 für 2^-126 und 1 für 2^-125.
Die „Konvention für führende Bits“ geht davon aus, dass jede Zahl außer 0,0 mit einer 1 im Binärformat beginnt. Dadurch wird vermieden, dass ein Präzisionsbit für die führende Ziffer verschwendet wird. Es wird jedoch eine Ausnahme für 0,0 erstellt, bei der sowohl Exponenten- als auch Bruchbits gleich 0 sind.
Daher ist die kleinste darstellbare Zahl ungleich Null 1,0 × 2^-126. Um noch kleinere Zahlen darzustellen, haben Ingenieure subnormale Zahlen eingeführt, die ein führendes Bit von 0 und einen festen Exponenten von -126 haben.
Die größte subnormale Zahl ist 0,FFFFFE × 2^-126, was sehr nahe kommt auf die kleinste nicht-subnormale Zahl. Die kleinste subnormale Zahl ungleich Null ist 0,000002 × 2^-126, was sogar noch näher an 0,0 liegt.
Subnormale Zahlen sind ein Kompromiss zwischen Präzision und Darstellungslänge. Beispielsweise hat die kleinste Subnormalzahl ungleich Null eine Genauigkeit von nur 1 Bit, sodass eine Division durch 2 genau 0,0 ergibt.
In einer Visualisierung verdoppeln Subnormalzahlen die Länge des Exponenten-0-Bereichs und halbieren die Anzahl der Punkte in diesem Bereich im Vergleich zu einem System ohne Subnormale. Dies führt zu einigen Lücken im darstellbaren Zahlenraum.
In C stellt der Datentyp „float“ IEEE 754-Gleitkommazahlen mit einfacher Genauigkeit dar. Subnormale Zahlen können mit der Funktion isnormal() identifiziert werden, die für subnormale Zahlen false und für normale Zahlen true zurückgibt.
Das obige ist der detaillierte Inhalt vonWarum haben wir subnormale Gleitkommazahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!