IEEE 754-2008

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2019. augusztus 24-én felülvizsgált verziótól ; az ellenőrzések 22 szerkesztést igényelnek .

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:

A szabvány kidolgozása

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.

Formátum

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 .

Ábrázolás és kódolás a memóriában

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.

Alapvető és cserélhető formátumok

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.

Bővített és bővíthető precíziós formátumok

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.

Csere formátumok

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.

Kerekítési szabályok

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.

Kerekítés a legközelebbi

Irányított kerekítés

Példa egész számokra kerekítésre
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

Szükséges műveletek

A támogatott aritmetikai formátumhoz (beleértve az alapformátumokat is) szükséges műveletek a következők:

Általános állítmány

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.

Lásd még

Jegyzetek

  1. Cowlishaw, Mike decimális aritmetikai kódolások . IBM. Letöltve: 2015. augusztus 6. Az eredetiből archiválva : 2016. február 8..

Linkek