IEEE 754-2008

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 24. srpna 2019; kontroly vyžadují 22 úprav .

IEEE 754 ( IEC 60559) je široce používaný standard IEEE , který popisuje formát pro reprezentaci čísel s pohyblivou řádovou čárkou . Používá se v softwarových ( překladačích různých programovacích jazyků ) i hardwarových ( CPU a FPU ) implementacích aritmetických operací (matematické operace).

Norma popisuje:

Standard z roku 2008 nahrazuje IEEE 754-1985 . Nový standard obsahuje binární formáty z předchozího standardu a tři nové formáty. Podle současného standardu musí implementace podporovat alespoň jeden ze základních formátů, stejně jako aritmetický formát a výměnný formát.

Seznam norem:

Vývoj standardu

Aktuální verze IEEE 754-2008 byla zveřejněna v roce 2008. Doplňuje a nahrazuje předchozí verzi IEEE 754-1985 , kterou napsal Dan Zuras a upravil Mike Coulishaw..

Mezinárodní standard ISO/IEC/IEEE 60559:2011 (s identickým IEEE 754-2008) byl schválen a publikován pro JTC1 /SC 25 v rámci dohody ISO/IEEE PSDO.

Binární formáty v původním standardu jsou zahrnuty do nového standardu spolu se třemi novými základními formáty (jeden binární a dva desítkové). Aby implementace odpovídala současnému standardu, musí implementovat alespoň jeden ze základních formátů.

Od září 2015 je standard revidován, aby zahrnoval upřesnění.

Formát

Formát IEEE 754 je „soubor reprezentací číselných hodnot a znaků“. Formát může také zahrnovat způsob kódování.

Formát zahrnuje:

Možné konečné hodnoty, které mohou být ve formátu reprezentovány, jsou určeny základem , počtem znaků v mantise (s přesností ) a maximální hodnotou :

Proto (pro předchozí příklad) nejmenší nenulové kladné číslo, které lze znázornit , je a největší je ( ), stejně jako celý rozsah čísel od do . Čísla a ( a ) jsou nejmenší (v absolutní hodnotě) normální čísla; nenulová čísla mezi těmito nejmenšími čísly se nazývají subnormální .

Reprezentace a kódování v paměti

Některá čísla mohou mít více reprezentací ve formátu, ve kterém byla právě popsána. Například, if a , pak číslo může být reprezentováno jako: , nebo .

Pro desítkové formáty platí jakákoli reprezentace a kolekce těchto reprezentací se nazývá kohorty . Pokud může mít výsledek více reprezentací, norma určí, kterou z nich vybere člen kohorty.

U binárních formátů je reprezentace jedinečná volbou nejmenšího reprezentovatelného exponentu. Pro čísla s exponentem v normálním rozsahu (ne všechna nebo všechny nuly) bude počáteční bit mantisy vždy 1. Proto může být počáteční 1 bit implikován spíše než uložen explicitně v paměti. Toto pravidlo se nazývá konvence vedoucích bitů nebo konvence skrytých bitů. Pravidlo vám umožňuje ušetřit 1 bit paměti, abyste získali o jeden bit přesnosti více. Úvodní bit konvence se nepoužívá pro podnormální čísla; jejich míra je mimo normální rozsah hodnot.

Základní a zaměnitelné formáty

Norma definuje pět základních formátů, které jsou pojmenovány podle číselného základu a počtu bitů použitých při jejich kódování. Existují tři základní binární formáty s pohyblivou řádovou čárkou (kódované s 32, 64 nebo 128 bity) a dva desetinné formáty s pohyblivou řádovou čárkou (zakódované s 64 nebo 128 bity). Formáty binary32 a binary64 jsou jednoduché a binární formáty IEEE 754-1985. Konformní implementace musí plně implementovat alespoň jeden ze základních formátů.

Norma také definuje výměnné formáty, které tyto základní formáty zobecňují. Binární vyžadují souhlas s vedoucími bity. V tabulce jsou uvedeny nejmenší výměnné formáty (včetně základních).

název Celý název Základna Počet binárních číslic mantisy Počet desetinných míst Exponent (bit) Desetinný
Emax
Exponenciální posun [1] Emin Emax Poznámky
binární 16 poloviční přesnost 2 jedenáct 3.31 5 4.51 2 4 −1 = 15 −14 +15 Ne mainstream
binární32 jediná přesnost 2 24 7.22 osm 38,23 2 7 −1 = 127 −126 +127
binární64 dvojitá přesnost 2 53 15,95 jedenáct 307,95 2 10 −1 = 1023 −1022 +1023
binární128 Čtyřnásobná přesnost 2 113 34.02 patnáct 4931,77 2 14 −1 = 16383 −16382 +16383
binární256 8x přesnost 2 237 71,34 19 78913.2 2 18 −1 = 262 143 −262142 +262143 Ne mainstream
desítkové32 deset 7 7 7,58 96 101 −95 +96 Ne mainstream
desítkové64 deset 16 16 9,58 384 398 −383 +384
desítkové128 deset 34 34 13,58 6144 6176 −6143 +6144

Vezměte prosím na vědomí, že ve výše uvedené tabulce jsou minimální hodnoty pro běžná čísla. Speciální reprezentace subnormálních čísel umožňuje reprezentovat ještě menší čísla (s určitou ztrátou přesnosti). Například nejmenší číslo s dvojnásobnou přesností větší než nula, které lze v tomto tvaru vyjádřit, je 2 − 1074 (protože 1074 = 1022 + 53 − 1).

Desetinná hodnota je hodnota  × log 10 základ , která udává přibližnou přesnost v desítkové soustavě.

Desetinné E max je emax  × log 10 základ, což udává maximální výkon v desítkové soustavě.

Jak již bylo uvedeno dříve, formáty binární32 a binární64 jsou totožné s formáty IEEE 754-1985 a jsou to dva nejběžnější formáty, které se dnes používají. Obrázek vpravo ukazuje absolutní přesnost pro formáty binary32 a binary64 v rozsahu od 10 −12 do 10 12 . Takový indikátor lze použít k výběru vhodného formátu vzhledem k očekávané hodnotě čísla a požadované přesnosti.

Rozšířené a rozšiřitelné přesné formáty

Norma také definuje rozšířené a rozšiřitelné přesné formáty, které se doporučují pro větší přesnost než základní formáty. Formát rozšířené přesnosti rozšiřuje základní formát pomocí vyšší přesnosti a širšího rozsahu exponentů. Pokročilý formát přesnosti umožňuje uživateli určit rozsah přesnosti a exponentu. Implementace může používat jakoukoli interní reprezentaci, kterou si pro takové formáty vybere. Jediné, co je potřeba specifikovat, jsou parametry b, p a emax. Tyto parametry jednoznačně popisují množinu konečných čísel (kombinací znaménka a exponentu pro daný základ), kterou může reprezentovat.

Norma nevyžaduje implementaci pro podporu rozšířených nebo rozšiřitelných přesných formátů.

Norma doporučuje, aby jazyky poskytovaly metodu pro specifikaci hodnot p a emax pro každý podporovaný základ b.

Norma doporučuje, aby jazyky a implementace podporovaly rozšířený formát, který má vyšší přesnost než největší základní formát podporovaný pro každý základ b.

Pro rozšířený formát s přesností mezi dvěma základními formáty musí být rozsah exponentů stejně velký jako rozsah dalšího širšího základního formátu. Takže například 64bitové binární číslo s rozšířenou přesností musí mít hodnotu emax alespoň 16383.

Výměnné formáty

Výměnné formáty jsou navrženy pro výměnu dat s pohyblivou řádovou čárkou pomocí bitového řetězce pevné délky.

Pro výměnu binárních čísel s pohyblivou řádovou čárkou jsou definovány výměnné formáty délky 16 bitů, 32 bitů, 64 bitů a libovolný násobek 32 bitů ≥128. 16bitový formát je určen pro výměnu nebo ukládání malých čísel (například pro grafiku nebo výpočty neuronové sítě).

Schéma kódování pro tyto binární výměnné formáty je stejné jako pro IEEE 754-1985: znaménkový bit následovaný indexy, které popisují posun exponentu a bity p-1, které popisují hodnotu. Šířka pole exponentu pro k-bitový formát se vypočítá jako w  = round(4 log 2 ( k ))−13. Stávající 64 a 128 bitové formáty se řídí tímto pravidlem, ale 16 a 32 bitové formáty mají více výkonových bitů (5 a 8 bitů), než dává tento vzorec (3 a 7 bitů v tomto pořadí).

Stejně jako u IEEE 754-1985 existuje určitá flexibilita v kódování NaN.

Pro výměnu desetinných čísel s pohyblivou řádovou čárkou jsou formáty výměny definovány pro libovolný násobek 32 bitů.

Pravidla zaokrouhlování

Norma definuje pět pravidel zaokrouhlování. První dvě pravidla zaokrouhlují na nejbližší hodnotu, ostatní se nazývají směrová kola.

Zaokrouhlování na nejbližší

Směrové zaoblení

Příklad zaokrouhlování na celá čísla
Režim / Příklad +11,5 +12,5 −11.5 −12.5
k nejbližšímu (vazba na sudé) +12,0 +12,0 −12,0 −12,0
k nejbližší (přichytit do nekonečna) +12,0 +13,0 −12,0 −13,0
na 0 +11,0 +12,0 −11,0 −12,0
na + ∞ +12,0 +13,0 −11,0 −12,0
na - ∞ +11,0 +12,0 −12,0 −13,0

Nezbytné operace

Požadované operace pro podporovaný aritmetický formát (včetně základních formátů) zahrnují:

Obecný predikát

Standard poskytuje predikát totalOrder, který definuje celkové pořadí pro všechna čísla s pohyblivou řádovou čárkou pro každý formát. Predikát je konzistentní s obvyklými srovnávacími operacemi. Normální srovnávací operace však považují NaN za neuspořádané a porovnávají -0 a +0 jako rovnocenné. Predikát totalOrder seřadí tyto případy a také rozliší mezi různými reprezentacemi NaN pro stejné číslo s pohyblivou řádovou čárkou zakódované různými způsoby.

Viz také

Poznámky

  1. Cowlishaw, Mike desetinná aritmetická kódování . IBM. Získáno 6. srpna 2015. Archivováno z originálu 8. února 2016.

Odkazy