Wat is IEEE 754?

Internationale norm die de weergave van drijvendekommagetallen en de rekenregels vastlegt. Definieert formaten zoals enkele precisie (32 bits) en dubbele precisie (64 bits), afrondmethoden en speciale waarden zoals oneindig en NaN, zodat rekenresultaten op elke computer gelijk zijn.

Japanse benaming: IEEE 754

“IEEE 754” komt voor in 14 oefenvragen uit 1 onderwerpen, bijv. Computerarithmetiek.

Bitindeling van een IEEE 754-float met enkele precisie 31 30 23 22 0 s e f Teken Exponent (8 bits) Mantisse (23 bits) 1 bit Bias 127 opgeteld Leidende 1 weggelaten (verborgen bit) Waarde = (−1)^s × 1.f × 2^(e − 127) Vb.: −6.5 = −110.1₂ = −1.101₂ × 2² 1 10000001 10100000000000000000000 Negatief e = 2 + 127 = 129 Fractie „101” aangevuld met nullen Hexadecimaal: 0xC0D00000
Bitindeling van een IEEE 754-float met enkele precisie · Bekijken in het figurenoverzicht

Vakgebied: Computerarithmetiek

Hoe de bits een waarde coderen

Een binair IEEE 754-getal slaat een tekenbit, een exponentveld met bias en een fractie op, en stelt voor normale getallen (−1)^teken × 1,fractie × 2^(exponent − bias) voor. Enkele precisie (FP32) gebruikt 1, 8 en 23 bits met een bias van 127; dubbele precisie (FP64) gebruikt 1, 11 en 52 bits met een bias van 1.023. De voorste 1 wordt verondersteld (de hidden bit), wat 24 en 53 bits precisie geeft, ongeveer 7 en 15–16 decimale cijfers. Zo heeft 1,0 een opgeslagen exponent van 127 en een fractie van alleen nullen, wat in FP32 0x3F800000 is.

Speciale waarden en excepties

De uiterste exponentcodes zijn gereserveerd. Een exponent van alleen nullen codeert ±0 en subnormale getallen, die de hidden 1 weglaten om het gat onder de kleinste normale waarde te vullen met gelijkmatig verdeelde zeer kleine waarden (gradual underflow). Een exponent van alleen enen codeert ±oneindig als de fractie nul is, en anders NaN (not a number). Een getal ongelijk aan nul delen door nul geeft oneindig, terwijl 0 ÷ 0 of ∞ − ∞ NaN geeft, dat zelfs met zichzelf vergeleken ongelijk is. +0 en −0 zijn bij vergelijking gelijk, maar geven als deler tegengestelde oneindigheden. Standaard zetten deze gebeurtenissen statusvlaggen in plaats van het programma te stoppen.

Afronding en precisiegrenzen

De basisbewerkingen, waaronder optellen, vermenigvuldigen, delen en worteltrekken, moeten correct afgerond zijn: het resultaat is gelijk aan de exacte waarde, afgerond naar een representeerbare waarde. De standaardmodus rondt af naar de dichtstbijzijnde waarde, bij gelijke afstand naar de even waarde (round to nearest, ties to even), wat een systematische opwaartse drift voorkomt. Machine-epsilon, het verschil boven 1,0, is 2⁻²³ (ongeveer 1,19 × 10⁻⁷) in FP32 en 2⁻⁵² in FP64, en gehele getallen zijn alleen exact tot respectievelijk 2²⁴ en 2⁵³. Decimale breuken zoals 0,1 zijn niet exact representeerbaar, en optellen met drijvende komma is niet associatief, dus resultaten moeten met een tolerantie worden vergeleken.

Drijvende komma versus vaste komma

Vastekommagetallen hebben gelijkmatig verdeelde waarden, dus de absolute fout is constant en het bereik is smal. Drijvende komma houdt de relatieve fout ruwweg constant over een enorm bereik, ongeveer 10⁻³⁰⁸ tot 10³⁰⁸ voor FP64, ten koste van complexere hardware voor uitlijning, normalisatie en afronding. De standaard definieert ook halve precisie met een exponent van 5 bits en een fused multiply-add die maar één keer afrondt. Hardware voor machine learning gebruikt vaak bfloat16, dat de exponent van 8 bits van FP32 behoudt met een fractie van 7 bits; het volgt dezelfde coderingsprincipes, maar is geen van de formaten van de standaard.

Nu oefenen: vragen over IEEE 754

Welke combinatie van drie onderdelen vormt een IEEE 754-drijvendekommagetal?

  1. ATeken, exponent, mantisse
  2. BGeheel deel, fractioneel deel, overdracht
  3. CHoogste byte, laagste byte, pariteit
Antwoord en toelichting tonen

Antwoord: A. Teken, exponent, mantisse

Een drijvendekommagetal drukt een waarde uit als (−1)^teken × 1.mantisse × 2^exponent en legt dit vast in drie delen: een tekenbit voor positief of negatief, een exponent die aangeeft met welke macht van 2 wordt vermenigvuldigd, en een mantisse voor de significante cijfers. Omdat de exponent de komma verschuift, kunnen met hetzelfde aantal bits zowel zeer kleine als zeer grote getallen worden weergegeven. De indeling in een geheel en een fractioneel deel is het principe van vaste komma; pariteit is een bit voor foutdetectie.

Welke combinatie van aantallen bits voor teken, exponent en mantisse geldt voor een IEEE 754-getal met enkele precisie (32 bit)?

  1. A1 · 11 · 20
  2. B1 · 8 · 23
  3. C1 · 5 · 26
Antwoord en toelichting tonen

Antwoord: B. 1 · 8 · 23

Enkele precisie (FP32) bestaat uit 1 tekenbit, 8 exponentbits en 23 mantissebits, samen 32 bit. Bij genormaliseerde getallen wordt de voorste 1 van de mantisse weggelaten, zodat de precisie 24 bit bedraagt, ongeveer 7 decimale cijfers. Dubbele precisie (FP64) heeft 1 teken-, 11 exponent- en 52 mantissebits, met een groter exponentbereik en een hogere precisie. 1 · 11 · 20 verwart met de exponentbreedte van dubbele precisie en 1 · 5 · 26 met die van halve precisie.

Veelgestelde vragen

Waarom is 0,1 + 0,2 niet gelijk aan 0,3 bij drijvende komma?

Geen van deze decimale waarden heeft een exacte binaire representatie, dus elke waarde wordt afgerond opgeslagen en de afrondingsfouten heffen elkaar niet op. In dubbele precisie komt de som uit op 0,30000000000000004, dus gelijkheidstests moeten een tolerantie gebruiken.

Wat is de exponentbias bij IEEE 754 enkele precisie?

De bias is 127, dus de werkelijke exponent is de opgeslagen waarde van 8 bits min 127. De opgeslagen waarden 0 en 255 zijn gereserveerd voor nul, subnormale getallen, oneindig en NaN, zodat 1–254 overblijft voor normale getallen.

Waarom is NaN niet gelijk aan zichzelf?

IEEE 754 definieert elke vergelijking met NaN als ongeordend, dus x == x is onwaar als x NaN is. Gebruik een daarvoor bedoelde functie zoals isnan in plaats van op deze truc te vertrouwen.

“IEEE 754” in de toelichting

Vragen met “IEEE 754” (14)

  1. Welke combinatie van drie onderdelen vormt een IEEE 754-drijvendekommagetal?
  2. Welke combinatie van aantallen bits voor teken, exponent en mantisse geldt voor een IEEE 754-getal met enkele precisie (32 bit)?
  3. Welke combinatie van aantallen exponent- en mantissebits is juist voor een IEEE 754-getal met dubbele precisie (64 bit)?
  4. Wat is de werkelijke exponent (de macht van 2) wanneer in een IEEE 754-getal met enkele precisie de opgeslagen exponentwaarde 130 is?
  5. Wat is het juiste effect van het niet opslaan van de voorste 1 van de mantisse (verborgen bit) bij genormaliseerde IEEE 754-getallen?
  6. Welk hexadecimaal getal is het bitpatroon van het decimale getal 1,0 in IEEE 754 met enkele precisie?
  7. Wat is de machine-epsilon (het verschil tussen 1 en het eerstvolgende weer te geven getal groter dan 1) bij IEEE 754 met enkele precisie?
  8. Wat is de juiste rol van gedenormaliseerde getallen (subnormale getallen) in IEEE 754?
  9. Wat is het resultaat dat de norm voorschrijft wanneer bij drijvendekommabewerkingen volgens IEEE 754 een positief getal door 0 wordt gedeeld?
  10. Welke uitspraak is juist over het bitpatroon bij enkele precisie in IEEE 754 waarvan het exponentveld uit alleen enen (255) bestaat?
  11. Welke uitspraak over +0 en −0 in IEEE 754-drijvendekommagetallen is juist?
  12. Welke afrondmethode schrijft IEEE 754 standaard voor?
  13. Wat is de bovengrens, beginnend bij 0, tot waar alle gehele getallen exact kunnen worden weergegeven in een IEEE 754-drijvendekommagetal met enkele precisie?
  14. Wat is in veel programmeertalen het resultaat van de evaluatie van x == x wanneer x NaN is?

Verwante termen

Mantisse (significand) Exponent NaN Vaste komma (fixed-point) Gedenormaliseerd getal (subnormaal getal) Machine-epsilon Numerieke apertuur (NA) Afronden naar even (round to nearest even) bfloat16 Booth-algoritme

Naar de woordenlijst