Ugrás a tartalomhoz

IEEE lebegőpontos számformátum

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából

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

IEEE 754/1985 lebegőpontos számformátum

[szerkesztés]

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]

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]

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:

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]

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:

Példák

[szerkesztés]
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]

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

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]

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]
  1. 3,4028234663852885981170418348452e+38 a számológép program szerint

Források

[szerkesztés]

További információk

[szerkesztés]

Kapcsolódó szócikkek

[szerkesztés]