Standard IEEE pro aritmetiku s plovoucí desetinnou čárkou (IEEE 754) je technický standard pro výpočty s plovoucí desetinnou čárkou, který byl založen v roce 1985 Institut elektrotechnických a elektronických inženýrů (IEEE) . Norma řešila mnoho problémů nalezených v různých implementacích s pohyblivou řádovou čárkou, které ztěžovaly jejich spolehlivé použití a snižovaly jejich přenositelnost. Standard IEEE 754 s plovoucí desetinnou čárkou je dnes nejběžnějším zobrazením reálných čísel na počítačích, včetně počítačů PC, Maců a většiny unixových platforem s procesorem Intel.
Existuje několik způsobů, jak reprezentovat číslo s pohyblivou řádovou čárkou, ale IEEE 754 je ve většině případů nejúčinnější. IEEE 754 má 3 základní komponenty:
- Znamení mantisy -
To je stejně jednoduché jako název. 0 představuje kladné číslo, zatímco 1 představuje záporné číslo. - Předpojatý exponent –
Pole exponentů musí představovat kladné i záporné exponenty. Ke skutečnému exponentu je přidána odchylka, aby se získal uložený exponent. - Normalizovaná mantisa -
Mantisa je součástí čísla ve vědeckém zápisu nebo čísla s plovoucí desetinnou čárkou, které se skládá z jeho platných číslic. Zde máme pouze 2 číslice, tj. O a 1. Takže normalizovaná mantisa je taková, která má pouze jednu 1 vlevo od desetinného místa.
Čísla IEEE 754 jsou rozdělena do dvou na základě výše uvedených tří složek: jednoduchá přesnost a dvojitá přesnost.
| TYPY | PODEPSAT | PŘEDMĚTNÝ EXPONENT | NORMALIZOVANÁ MANTISA | bias |
|---|---|---|---|---|
| Jediná přesnost | 1 (31. bit) | 8(30-23) | 23 (22-0) | 127 |
| Dvojitá přesnost | 1 (63. bit) e r modelové příklady | 11(62-52) | 52 (51-0) | 1023 |
Příklad –
85.125 85 = 1010101 0.125 = 001 85.125 = 1010101.001 =1.010101001 x 2^6 sign = 0 1. Single precision: biased exponent 127+6=133 133 = 10000101 Normalised mantisa = 010101001 we will add 0's to complete the 23 bits The IEEE 754 Single precision is: = 0 10000101 01010100100000000000000 This can be written in hexadecimal form 42AA4000 2. Double precision: biased exponent 1023+6=1029 1029 = 10000000101 Normalised mantisa = 010101001 we will add 0's to complete the 52 bits The IEEE 754 Double precision is: = 0 10000000101 0101010010000000000000000000000000000000000000000000 This can be written in hexadecimal form 4055480000000000>
Zvláštní hodnoty: IEEE má vyhrazené některé hodnoty, které mohou být nejednoznačné.
- nula –
Nula je speciální hodnota označená exponentem a mantisou 0. -0 a +0 jsou odlišné hodnoty, i když jsou obě stejné.
- Denormalizované –
Pokud jsou exponentem samé nuly, ale mantisa nikoli, pak je hodnota denormalizované číslo. To znamená, že toto číslo nemá předpokládanou úvodní jedničku před binárním bodem. - Nekonečno -
Hodnoty +nekonečno a -nekonečno jsou označeny exponentem všech jedniček a mantisou všech nul. Znaménkový bit rozlišuje mezi záporným nekonečnem a kladným nekonečnem. Operace s nekonečnými hodnotami jsou v IEEE dobře definovány. - Not A Number (NAN) –
Hodnota NAN se používá k reprezentaci hodnoty, která je chybová. Toto je reprezentováno, když pole exponentu jsou všechny jedničky s bitem znaménka nuly nebo mantisou, která není 1, za kterou následují nuly. Toto je speciální hodnota, kterou lze použít k označení proměnné, která ještě nemá žádnou hodnotu.
| EXPONENT | MANTISA | HODNOTA |
|---|---|---|
| 0 | 0 | přesná 0 |
| 255 | 0 | Nekonečno |
| 0 | ne 0 | denormalizované |
| 255 | ne 0 | Není číslo (NAN) |
Podobné pro dvojitou přesnost (jen nahrazení 255 číslem 2049), rozsahy čísel s pohyblivou řádovou čárkou:
| Denormalizované | Normalizované | Přibližné desetinné číslo | |
|---|---|---|---|
| Jednoduchá přesnost | ±2-149až (1-2-23)×2-126 | ±2-126až (2-2-23)×2127 | ± přibližně 10-44,85do cca 1038,53 |
| Dvojitá přesnost | ±2-1074až (1-2-52)×2-1022 | ±2-1022až (2-2-52)×21023 | ± přibližně 10-323,3do cca 10308,3 |
Rozsah kladných čísel s pohyblivou řádovou čárkou lze rozdělit na normalizovaná čísla a denormalizovaná čísla, která využívají pouze část přesnosti zlomků. Protože každé číslo s plovoucí desetinnou čárkou má odpovídající negovanou hodnotu, jsou výše uvedené rozsahy symetrické kolem nuly.
Existuje pět různých číselných rozsahů, které čísla s plovoucí desetinnou čárkou s jednoduchou přesností nejsou schopna reprezentovat v dosud prezentovaném schématu:
levé spojení vs pravé spojení
- Záporná čísla menší než – (2 – 2-23) × 2127(negativní přetečení)
- Záporná čísla větší než – 2-149(negativní podtečení)
- Nula
- Kladná čísla menší než 2-149(pozitivní podtečení)
- Kladná čísla větší než (2 – 2-23) × 2127(pozitivní přetečení)
Přetečení obecně znamená, že hodnoty narostly příliš velké na to, aby je bylo možné reprezentovat. Podtečení je méně závažný problém, protože je pouze označuje ztrátu přesnosti, která je zaručeně blízko nule.
Tabulka celkového efektivního rozsahu konečných čísel IEEE s plovoucí desetinnou čárkou je uvedena níže:
| Binární | Desetinný | |
|---|---|---|
| Singl | ± (2 – 2-23) × 2127 | přibližně ± 1038,53 |
| Dvojnásobek | ± (2 – 2-52) × 21023 | přibližně ± 10308,25 |
Speciální operace -
| Úkon | Výsledek |
|---|---|
| n ÷ ±nekonečno | 0 |
| ±Nekonečno × ±Nekonečno | ± Nekonečno |
| ±nenulová ÷ ±0 | ± Nekonečno |
| ±konečně × ±Nekonečno | ± Nekonečno |
| Nekonečno + nekonečno Nekonečno - - Nekonečno | + Nekonečno |
| -Nekonečno - Nekonečno -Nekonečno + – Nekonečno | – Nekonečno |
| ±0 ÷ ±0 | NaN |
| ±Nekonečno ÷ ±Nekonečno | NaN |
| ±nekonečno × 0 | NaN |
| NaN == NaN | Nepravdivé |