IEEE lebegőpontos számformátum
Az IEEE lebegőpontos számformátum az informatikában használatos számrendszer.
IEEE 754/1985 lebegőpontos számformátum
szerkesztésA lebegőpontos szám általános alakja ahol az s az előjel; m a mantissza, amely önmagában egy tetszőleges fix pontos írásmódú szám; R a számrendszer alapszáma (radixa) és e a karakterisztika, a hatványkitevő, amely önmagában egy tetszőleges fix pontos írásmódú szám.
Az IEEE (ejtsd: I triple E) 754/1985 szabvány szerinti szám nem tartalmazza az adott számrendszer alapját (radix, r), mivel csak kettes számrendszerben értelmezett. Minden szám tartalmaz egy előjelbitet (s); karakterisztikát (k), melyből az adott számformátum karakterisztikai alapját kivonva (b) megkapjuk a valós kitevőt (e = k – b); és mantisszát (F) egyes normalizált alakban.
Az egyes normalizált azt jelenti, hogy a számokat olyan hatványkitevős, (tehát lebegőpontos) alakra hozzuk, amelyben a szám egészrészén csak az egyeseknek megfelelő helyiértéken található értékes számjegy.
Az IEEE 754/1985 szabvány szerint a lebegőpontos szám mantisszájának egyes normalizált alakja: m = 1.F, ahol a szám egész részén lévő egyes magától értetődő (implicit), ezért azzal, hogy nem tároljuk, a szám tört részét tudjuk eggyel több biten ábrázolni.
Az IEEE 754/1985 szabvány szerint 4 féle lebegőpontos számformátum létezik, melyek csak az adott elem bitszámában térnek el egymástól. Az 1985-86-os évben került elfogadásra az IEEE 754-es (854) számú lebegőpontos számábrázolási szabvány, melyet a legfontosabb processzorgyártók is elfogadtak.
Ezek szerint ennél:
- a mantissza előjele 0, ha a szám pozitív és 1, ha negatív;
- a mantisszában levő fixpontos szám 1-re normalizáltan értendő, azaz 1. a formájú;
Pontosság
szerkesztésA szabvány a lebegőpontos műveletvégrehajtáshoz többfajta pontosságot definiál:
pontosság, | előjel, | mantissza, | karakterisztika, | ||
---|---|---|---|---|---|
egyszeres | 32 | 1 | 23 | 8 | (bit) |
dupla | 64 | 1 | 52 | 11 | (bit) |
kiterjesztett | 80 | 1 | 64 | 15 | (bit) |
négyszeres | 128 | 1 | 112 | 15 | (bit) |
A táblázatban a számok a megfelelő mezőkben levő bitek számát mutatják.
A lebegőpontos szám általános alakja: N = s ∙ m ∙ Re, ahol az s az előjel; m a mantissza, amely önmagában egy tetszőleges fix pontos írásmódú szám; R a számrendszer alapszáma (radixa) és e a karakterisztika, a hatványkitevő, amely önmagában egy tetszőleges fix pontos írásmódú szám.
Bonyolultabb, igen sok lépésből álló számítások során előfordulhat, hogy a műveletek eredménye a legkisebb illetve legnagyobb mantisszájú és karakterisztikájú (a számítógépen még ábrázolható) számnál kisebb, illetve nagyobb. Ezt alulcsordulásnak illetve túlcsordulásnak nevezzük. Többek között az ilyen esetek kezelhetősége érdekében vezeti be a szabvány:
- a denormalizált számot,
- a ± 0-t,
- a ± végtelen számot és a
- „nem számot” (lásd az ábrát).
Előjel Karakterisztika Mantissza denormalizált szám ± 0 tetszőleges szám ≠ 0 nulla ± 0 0 végtelen ± 11…11 0 „nem szám” ± 11…11 tetszőleges szám ≠ 0
Ezek közül a denormalizált szám az igen kis számértékek számítógépes kezelését segíti (alulcsordulás esetén nem kell a művelet-végrehajtást hibajelzéssel megszakítani). A túlcsordulásokat (igen nagy számok) a „végtelen” számmal kezelhetjük. Az ezekkel végzett műveleteket a szabványnak megfelelő lebegőpontos aritmetikai egység a matematikában szokásos módon fogja értelmezni. Az úgynevezett „nem számok” azt a célt szolgálják, hogy programunk akkor se álljon le, ha az elvégzett művelet (például végtelen/végtelen) matematikailag értelmezhetetlen.
Short real (32 bit)
szerkesztésA mantissza explicit bites egyes normalizált: m = 1.F
Bitértékek: s = 1 bit, k = 8 bit, F = 23 bit, b értéke: 127
A biteket az alábbi ábra szemlélteti:
Az exponensek 00H és FFH értéke speciális értelmezést kapott. Ha a szignifikandus 0, akkor a 00H érték mellett a szám a pozitív és negatív nullát, a FFH értékkel a szám a pozitív és negatív végtelent reprezentálja. Ha a szignifikandus értéke nem nulla, akkor 00H exponenssel a szám a denormált értékeket jelenti, FFH exponenssel pedig a NaN, „nem szám” értéket.
Legkisebb pozitív (denormált) érték: 2−149 ≈ 1,4 × 10−45.
A legkisebb pozitív normált érték: 2−126 ≈ 1,18 × 10−38.
A legnagyobb ábrázolható érték: (2−2−23) × 2127 ≈ 3,4 × 1038.[1]
Long real (64 bit)
szerkesztésA mantissza explicit bites egyes normalizált: m = 1.F
Bitértékek: s = 1 bit, k = 11 bit, F = 52 bit, b értéke: 1023
A biteket az alábbi ábra szemlélteti:
Példák
szerkesztés3ff0 0000 0000 000016 = 1 3ff0 0000 0000 000116 ≈ 1,0000000000000002, a legkisebb 1-nél nagyobb szám 3ff0 0000 0000 000216 ≈ 1,0000000000000004 4000 0000 0000 000016 = 2 c000 0000 0000 000016 = –2
0000 0000 0000 000116 = 2−1022−52 = 2−1074 ≈ 4,9406564584124654 × 10−324 (minimum szubnormál pozitív duplapontos érték) 000f ffff ffff ffff16 = 2−1022 − 2−1022−52 ≈ 2,2250738585072009 × 10−308 (maximum szubnormál duplapontos érték) 0010 0000 0000 000016 = 2−1022 ≈ 2,2250738585072014 × 10−308 (minimum normal pozitív duplapontos érték) 7fef ffff ffff ffff16 = (1 + (1 − 2−52)) × 21023 ≈ 1,7976931348623157 × 10308 (maximum duplapontos érték)
0000 0000 0000 000016 = 0 8000 0000 0000 000016 = –0
7ff0 0000 0000 000016 = ∞ fff0 0000 0000 000016 = −∞
Temporary real (80 bit)
szerkesztésA mantissza explicit bites egyes normalizált: m = 1.F
Bitértékek: s = 1 bit, k =15 bit, F = 64 bit, b értéke: 16383
Az ábrázolandó számtartomány, a szubnormált számokat is beleértve, körülbelül 3,65×10−4951 és 1,18×104932 közötti számokat foglalja magában. Ez a formátum körülbelül tizennyolc decimális számjegy pontosságot ad.
Quad real (128 bit)
szerkesztésA mantissza explicit bites egyes normalizált: m = 1.F
Bitértékek: s = 1 bit, k =15 bit, F = 112 bit, b értéke: 16383
Jegyzetek
szerkesztés- ↑ 3,4028234663852885981170418348452e+38 a számológép program szerint
Források
szerkesztésTovábbi információk
szerkesztés- A szabvány hivatalos oldala: 754-2008 - IEEE Standard for Floating-Point Arithmetic.