IEEE lebegőpontos számformátum

A Wikipédiából, a szabad enciklopédiából

IEEE lebegőpontos számformátum az informatikában használatos számrendszer

IEEE 754/1985 lebegőpontos számformátum[szerkesztés | forrásszöveg szerkesztése]

A 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és | forrásszöveg szerkesztése]

A szabvány a lebegőpontos műveletvégrehajtáshoz többfajta pontosságot definiál:

pontosság, előjel, mantissza, karakterisztika,
egyszeres  32  23  (bit)
dupla  64  52  11  (bit)
kiterjesztett  80  64  15  (bit)
négyszeres  128  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és | forrásszöveg szerkesztése]

A 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:

Float example.svg

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és | forrásszöveg szerkesztése]

A 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:

IEEE 754 Double Floating Point Format.svg

Példák[szerkesztés | forrásszöveg szerkesztése]

3ff0 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és | forrásszöveg szerkesztése]

A 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

X86 Extended Floating Point Format.svg

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és | forrásszöveg szerkesztése]

A 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 | forrásszöveg szerkesztése]

  1. 3,4028234663852885981170418348452e+38 a számológép program szerint

Források[szerkesztés | forrásszöveg szerkesztése]

További információk[szerkesztés | forrásszöveg szerkesztése]

Kapcsolódó szócikkek[szerkesztés | forrásszöveg szerkesztése]