Az IEEE 754 ( IEC 60559) egy széles körben használt IEEE -szabvány, amely a lebegőpontos számok megjelenítési formátumát írja le . Az aritmetikai műveletek (matematikai műveletek) szoftveres ( különböző programozási nyelvek fordítói ) és hardveres ( CPU és FPU ) megvalósításaiban használatos.
A szabvány leírja:
A 2008-as szabvány az IEEE 754-1985 helyébe lép . Az új szabvány a korábbi szabvány bináris formátumait és három új formátumot tartalmaz. A jelenlegi szabvány szerint egy implementációnak támogatnia kell az alapformátumok legalább egyikét, valamint az aritmetikai és a csereformátumot.
A szabványok listája:
Az IEEE 754-2008 jelenlegi verziója 2008-ban jelent meg. Kiegészíti és felváltja az IEEE 754-1985 korábbi verzióját , amelyet Dan Zuras írt és Mike Coulishaw szerkesztett..
Az ISO/IEC/IEEE 60559:2011 nemzetközi szabványt (azonos IEEE 754-2008-cal) jóváhagyták és közzétették a JTC1 /SC 25 számára az ISO/IEEE PSDO megállapodás értelmében.
Az eredeti szabvány bináris formátumait az új szabvány tartalmazza, három új alapformátummal együtt (egy bináris és két decimális). A jelenlegi szabványnak való megfelelés érdekében egy implementációnak legalább az egyik alapformátumot meg kell valósítania.
2015 szeptemberétől a szabvány felülvizsgálat alatt áll, hogy pontosításokat tartalmazzon.
Az IEEE 754 formátum "számértékek és karakterek reprezentációinak halmaza". A formátum kódolási módszert is tartalmazhat.
A formátum a következőket tartalmazza:
A formátumban megjeleníthető lehetséges végső értékeket az alap , a mantissza karaktereinek száma (pontossággal ) és a maximális érték határozza meg :
Ezért (az előző példában) a legkisebb ábrázolható nullától eltérő pozitív szám a , a legnagyobb pedig ( ), valamint a teljes számtartomány tól -ig . A számok és ( és ) a legkisebb (abszolút értékben) normál számok; Az e legkisebb számok közötti nullától eltérő számokat szubnormálisnak nevezzük .
Egyes számoknak több ábrázolása is lehet az imént leírt formátumban. Például ha és , akkor a szám a következőképpen ábrázolható: , vagy .
A decimális formátumok esetén bármely reprezentáció érvényes, és ezeknek a reprezentációknak a gyűjteményét kohorszoknak nevezzük . Ha egy eredménynek több reprezentációja is lehet, a szabvány határozza meg, hogy a kohorsz egyik tagja melyiket válassza ki.
A bináris formátumok esetében az ábrázolás egyedivé válik a legkisebb reprezentálható kitevő kiválasztásával. A normál tartományba eső kitevővel rendelkező számok esetében (nem mindegyik, vagy mindegyik nulla) a mantissza kezdőbitje mindig 1 lesz. Ezért a bevezető 1 bit inkább utalható, mintsem kifejezetten a memóriában tárolható. Ezt a szabályt vezető bitkonvenciónak vagy rejtett bitkonvenciónak nevezik. A szabály lehetővé teszi, hogy 1 bit memóriát takarítson meg a pontosság növelése érdekében. Az egyezmény kezdőbitje nem használatos szubnormális számokhoz; arányuk kívül esik a normál értéktartományon.
A szabvány öt alapvető formátumot határoz meg, amelyeket a számbázisuk és a kódolásukban használt bitek száma alapján neveznek el. Három alapvető bináris lebegőpontos formátum létezik (32, 64 vagy 128 bittel kódolva) és két decimális lebegőpontos formátum (64 vagy 128 bittel kódolva). A bináris32 és bináris64 formátumok az IEEE 754-1985 egyes és bináris formátumok. A megfelelő megvalósításnak teljes mértékben meg kell valósítania legalább az egyik alapvető formátumot.
A szabvány meghatározza azokat a csereformátumokat is, amelyek általánosítják ezeket az alapvető formátumokat. A binárisak megegyezést igényelnek a vezető bitekkel. A táblázat felsorolja a legkisebb csereformátumokat (beleértve az alapszintűeket is).
Név | Teljes cím | Bázis | A mantissza bináris számjegyeinek száma | Tizedesjegyek száma | Kitevő (bit) | Decimális Emax |
Exponenciális eltolás [1] | Emin | Emax | Megjegyzések |
---|---|---|---|---|---|---|---|---|---|---|
bináris16 | fél pontossággal | 2 | tizenegy | 3.31 | 5 | 4.51 | 2 4 −1 = 15 | −14 | +15 | Nem mainstream |
bináris32 | egyetlen pontosság | 2 | 24 | 7.22 | nyolc | 38.23 | 2 7 −1 = 127 | −126 | +127 | |
bináris64 | dupla pontosság | 2 | 53 | 15.95 | tizenegy | 307,95 | 2 10 -1 = 1023 | −1022 | +1023 | |
bináris128 | Négyszeres pontosság | 2 | 113 | 34.02 | tizenöt | 4931,77 | 2 14 −1 = 16383 | −16382 | +16383 | |
bináris256 | 8x pontosság | 2 | 237 | 71.34 | 19 | 78913.2 | 2 18 −1 = 262143 | −262142 | +262143 | Nem mainstream |
decimális32 | tíz | 7 | 7 | 7.58 | 96 | 101 | −95 | +96 | Nem mainstream | |
decimális64 | tíz | 16 | 16 | 9.58 | 384 | 398 | −383 | +384 | ||
decimális128 | tíz | 34 | 34 | 13.58 | 6144 | 6176 | −6143 | +6144 |
Felhívjuk figyelmét, hogy a fenti táblázatban a minimális értékek normál számokra vonatkoznak. A szubnormális számok speciális ábrázolása lehetővé teszi még kisebb számok ábrázolását is (némi pontosságvesztéssel). Például a legkisebb nullánál nagyobb dupla pontossági szám, amely ebben a formában ábrázolható, a 2 − 1074 (mert 1074 = 1022 + 53 − 1).
A decimális érték a × log 10 bázis érték , amely tízes számban megadja a hozzávetőleges pontosságot.
A decimális E max az emax × log 10 bázis, ez adja meg a decimális maximális teljesítményt.
Amint azt korábban említettük, a binary32 és a binary64 formátumok megegyeznek az IEEE 754-1985 formátumokkal, és ez a két leggyakrabban használt formátum ma. A jobb oldali ábra a bináris32 és bináris64 formátumok abszolút pontosságát mutatja, 10–12 és 10 12 között . Egy ilyen mutató segítségével kiválasztható a megfelelő formátum, figyelembe véve a szám várható értékét és a szükséges pontosságot.
A szabvány kiterjesztett és bővíthető precíziós formátumokat is meghatároz, amelyek az alapformátumoknál nagyobb pontosság érdekében ajánlottak. A kiterjesztett precíziós formátum kiterjeszti az alapformátumot, nagyobb pontossággal és szélesebb kitevő-tartománnyal. A fejlett precíziós formátum lehetővé teszi a felhasználó számára a pontosság és a kitevő megadását. Egy megvalósítás bármilyen belső reprezentációt használhat az ilyen formátumokhoz. Csak a b, p és emax paramétereket kell megadni. Ezek a paraméterek egyértelműen leírják a véges számok halmazát (előjel és kitevő kombinációi egy adott bázishoz), amelyet képviselni tud.
A szabvány nem igényel implementációt a kiterjesztett vagy bővíthető precíz formátumok támogatásához.
A szabvány azt javasolja, hogy a nyelvek biztosítsanak egy módszert a p és az emax értékeinek megadására minden támogatott b bázishoz.
A szabvány azt javasolja, hogy a nyelvek és megvalósítások támogassanak egy kiterjesztett formátumot, amely nagyobb pontossággal rendelkezik, mint az egyes alapokhoz támogatott legnagyobb alapformátum.
Két alapformátum közötti pontossággal bővített formátum esetén a kitevőtartománynak akkorának kell lennie, mint a következő szélesebb alapformátumé. Így például egy 64 bites kiterjesztett pontosságú bináris szám emax értékének legalább 16383-nak kell lennie.
A csereformátumokat úgy tervezték, hogy lebegőpontos adatokat cseréljenek egy rögzített hosszúságú bitsor használatával.
A bináris lebegőpontos számok cseréjéhez 16 bites, 32 bites, 64 bites és 32 bit ≥128 bites többszöröse csereformátumok vannak meghatározva. A 16 bites formátum kis számok cseréjére vagy tárolására szolgál (például grafikus vagy neurális hálózati számításokhoz).
Ezeknek a bináris csereformátumoknak a kódolási sémája ugyanaz, mint az IEEE 754-1985 esetében: egy előjelbit, amelyet a kitevő-eltolást leíró indexek és az értéket leíró p-1 bitek követnek. A kitevőmező szélességét a k bites formátumhoz a következőképpen számítjuk ki: w = round(4 log 2 ( k ))−13. A meglévő 64 és 128 bites formátumok követik ezt a szabályt, de a 16 és 32 bites formátumok több teljesítménybittel rendelkeznek (5 és 8 bit), mint amennyit ez a képlet ad (3, illetve 7 bit).
Az IEEE 754-1985-höz hasonlóan a NaN kódolásban is van némi rugalmasság.
A tizedes lebegőpontos számok cseréjéhez a csereformátumok a 32 bit bármely többszörösére vannak meghatározva.
A szabvány öt kerekítési szabályt határoz meg. Az első két szabály a legközelebbi értékre kerekít, a többit irányított körnek nevezzük.
Mód / Példa | +11,5 | +12,5 | −11.5 | −12.5 |
---|---|---|---|---|
a legközelebbi (pároshoz kötött) | +12,0 | +12,0 | −12.0 | −12.0 |
a legközelebbihez (a végtelenig) | +12,0 | +13,0 | −12.0 | −13,0 |
0-ra | +11,0 | +12,0 | −11.0 | −12.0 |
+ ∞-re | +12,0 | +13,0 | −11.0 | −12.0 |
hogy - ∞ | +11,0 | +12,0 | −12.0 | −13,0 |
A támogatott aritmetikai formátumhoz (beleértve az alapformátumokat is) szükséges műveletek a következők:
A szabvány egy totalOrder predikátumot biztosít, amely meghatározza az összes lebegőpontos szám teljes sorrendjét az egyes formátumokhoz. A predikátum összhangban van a szokásos összehasonlítási műveletekkel. A normál összehasonlítási műveletek azonban rendezetlenként kezelik a NaN-eket, és egyenlőnek hasonlítják a -0-t és a +0-t. A totalOrder predikátum rendezi ezeket az eseteket, és különbséget tesz a NaN különböző reprezentációi között ugyanazon lebegőpontos számhoz, különböző módon kódolva.
IEEE szabványok | |||||||
---|---|---|---|---|---|---|---|
Jelenlegi |
| ||||||
802-es sorozat |
| ||||||
P-sorozat |
| ||||||
Lecserélve | |||||||
|