desetinný formát s plovoucí desetinnou čárkou - decimal64 floating-point format

V práci na počítači , decimal64 je desetinná plovoucí desetinnou čárkou počítač číslování formát , který zabírá 8 bajtů (64 bitů) v paměti počítače. Je určen pro aplikace, kde je nutné přesně emulovat desetinná zaokrouhlování, například finanční a daňové výpočty.

Decimal64 podporuje 16 desítkové číslice na mantisy a exponent rozsah -383 až +384, tj ± 0,000 000 000 000 000 x 10 -383^± 9,999 999 999 999 999 x 10 384^ . (Ekvivalentně ± 0 000 000 000 000 000 × 10 −398^± 9 999 999 999 999 999 × 10 369.^ ) Naproti tomu odpovídající binární formát, který je nejčastěji používaným typem, má přibližný rozsah ± 0,000 000 000 000 001 × 10 −308^± 1,797 693 134 862 315 × 10 308^ . Protože význam není normalizován, většina hodnot s méně než 16 platnými číslicemi má několik možných reprezentací; 1 × 10 2 = 0,1 × 10 3 = 0,01 × 10 4 atd. Nula má 768 možných zobrazení (1536, pokud jsou zahrnuty obě podepsané nuly ).

Decimal64 s pohyblivou řádovou čárkou je relativně nový formát desetinného s plovoucí desetinnou čárkou, oficiálně představen ve verzi 2008 z IEEE 754 , stejně jako s ISO / IEC / IEEE 60559: 2011 .

Reprezentace desetinných hodnot

Podepsat Kombinace Exponent pokračování Významné pokračování
1 bit 5 bitů 8 bitů 50 bitů
s mmmmm xxxxxxxx ccccccccccccccccccccccccccccccccccccccccccccccccccc

IEEE 754 umožňuje dvě alternativní metody reprezentace hodnot decimal64. Standard neurčuje, jak označit, která reprezentace se používá, například v situaci, kdy jsou mezi systémy sdělovány hodnoty desítkové hodnoty:

Obě alternativy poskytují přesně stejný rozsah reprezentovatelných čísel: 16 číslic znaménka a 3 × 2 8  = 768 možných desetinných hodnot exponentu. (Všechny možné hodnoty desetinných exponentů, které lze uložit v čísle binary64, jsou reprezentovatelné v decimal64 a většina bitů mantinelu binary64 je uložena tak, že v tomto mantinu je zhruba stejný počet desetinných míst.)

V obou případech jsou nejvýznamnější 4 bity významnosti (které mají ve skutečnosti pouze 10 možných hodnot) kombinovány s nejvýznamnějšími 2 bity exponenta (3 možné hodnoty), aby bylo možné použít 30 z 32 možných hodnot 5bitového pole. Zbývající kombinace kódují nekonečna a NaN .

Kombinované pole Exponent Msbits Významné Msbits jiný
00mmm 00 0xxx -
01 mm 01 0xxx -
10 mm 10 0xxx -
1100 m 00 100x -
1101 m 01 100x -
1110 m 10 100x -
11110 - - ± nekonečno
11111 - - NaN. Znamení bit ignorováno. První bit pole pokračování exponentu určuje, zda NaN signalizuje.

V případech Infinity a NaN jsou všechny ostatní bity kódování ignorovány. Je tedy možné inicializovat pole na Infinities nebo NaN vyplněním jedinou hodnotou bajtu.

Pole významového binárního celého čísla

Tento formát používá binární význam od 0 do 10 16  - 1 = 9 999 999 999 999 999  = 2386F26FC0FFFF 16  = 1000 1110000110 1111001001 1011111100 0000111111 1111111111 2 .

Kódování, kompletně uložené na 64 bitech, může představovat binární  významy až 10 × 2 50  - 1 = 11 258 999 068 426 239 = 27FFFFFFFFFFFFFF 16 , ale hodnoty větší než 10 16  - 1 jsou nezákonné (a standard vyžaduje implementaci k léčbě jako 0, pokud se vyskytnou na vstupu).

Jak je popsáno výše, kódování se liší v závislosti na tom, zda nejvýznamnější 4 bity významnosti jsou v rozsahu 0 až 7 (0000 2 až 0111 2 ) nebo vyšší (1000 2 nebo 1001 2 ).

Pokud jsou 2 bity za bitem znaménka „00“, „01“ nebo „10“, pak pole exponentu sestává z 10 bitů následujících za bitem znaménka a významem je zbývajících 53 bitů s implicitní úvodní nulou bit:

s 00eeeeeeee   (0)ttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt
s 01eeeeeeee   (0)ttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt
s 10eeeeeeee   (0)ttt tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt

To zahrnuje podnormální čísla, kde je první významná číslice 0.

Pokud jsou 2 bity po bitu znaménka „11“, je 10bitové pole exponentu posunuto o 2 bity doprava (za bity znaménka a bity „11“ poté) a reprezentovaný význam je ve zbývajících 51 bitů. V tomto případě existuje implicitní (tj. Ne uložená) úvodní 3bitová sekvence „100“ pro většinu bitů skutečného významu (ve zbývajících nižších bitech ttt ... ttt významu nejsou všechny možné hodnoty použitý).

s 1100eeeeeeee (100)t tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt
s 1101eeeeeeee (100)t tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt
s 1110eeeeeeee (100)t tttttttttt tttttttttt tttttttttt tttttttttt tttttttttt

2bitová sekvence „11“ za znaménkovým bitem naznačuje, že v implicitním znaku je implicitní 3bitová předpona „100“. Porovnejte s implicitní 1bitovou předponou „1“ na významu normálních hodnot pro binární formáty. 2bitové sekvence „00“, „01“ nebo „10“ po bitu znaménka jsou součástí pole exponentu.

Hlavními bitů mantisy pole se nebude kódovat nejvýznamnější desítkovou číslici; jsou prostě součástí většího čistého binárního čísla. Například význam 8 000 000 000 000 000 je kódován jako binární 0111 0001101011 1111010100 1001100011 0100000000 0000000000 2 , s předními 4 bity kódujícími 7; první význam, který vyžaduje 54. bit, je 2 53  = 9 007 199 254 740 992 . Nejvyšší platná významná hodnota je 9 999 999 999 999 999, jejíž binární kódování je (100) 0 1110000110 1111001001 1011111100 0000111111 1111111111 2 2 (přičemž 3 nejvýznamnější bity (100) nejsou uloženy, ale implicitně, jak je uvedeno výše; a další bit je vždy nula) v platném kódování).

Ve výše uvedených případech je představovaná hodnota

(−1) znaménko  × 10 exponent − 398  × mantinel

Pokud jsou čtyři bity po bitu znaménka „1111“, pak je hodnota nekonečno nebo NaN, jak je popsáno výše:

s 11110 xx...x    ±infinity
s 11111 0x...x    a quiet NaN
s 11111 1x...x    a signalling NaN

Hustě zabalené desítkové významné pole

V této verzi je význam je uložen jako řada desetinných míst. Počáteční číslice je mezi 0 a 9 (3 nebo 4 binární bity) a zbytek mantinky používá hustě zabalené dekadické kódování (DPD).

Počáteční 2 bity exponenta a úvodní číslice (3 nebo 4 bity) znaménka jsou kombinovány do pěti bitů, které následují po znaménkovém bitu.

Po těchto osmi bitech následuje pole pokračování exponentu, které poskytuje méně významné bity exponenta.

Posledních 50 bitů představuje významné pole pokračování, skládající se z pěti 10bitových deklinací . Každá deklinace kóduje tři desetinná místa pomocí kódování DPD.

Pokud jsou první dva bity po bitu znaménka „00“, „01“ nebo „10“, jsou to úvodní bity exponenta a tři bity „TTT“ po něm jsou interpretovány jako úvodní desetinná číslice ( 0 až 7):

s 00 TTT (00)eeeeeeee (0TTT)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt]
s 01 TTT (01)eeeeeeee (0TTT)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt]
s 10 TTT (10)eeeeeeee (0TTT)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt]

Pokud jsou první dva bity po bitu znaménka „11“, pak druhé 2 bity jsou úvodní bity exponenta a další bit „T“ má předponu implicitních bitů „100“, aby vytvořil počáteční desetinnou číslici ( 8 nebo 9):

s 1100 T (00)eeeeeeee (100T)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt]
s 1101 T (01)eeeeeeee (100T)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt]
s 1110 T (10)eeeeeeee (100T)[tttttttttt][tttttttttt][tttttttttt][tttttttttt][tttttttttt]

Zbývající dvě kombinace (11 110 a 11 111) 5bitového pole po bitu znaménka se používají k reprezentaci ± nekonečna, respektive NaN.

Překódování DPD / 3BCD pro deklety je uvedeno v následující tabulce. b9 ... b0 jsou bity DPD a d2 ... d0 jsou tři číslice BCD.

Hustě zabalená pravidla pro desítkové kódování
Hodnota kódovaná DPD Desetinná čísla
Kódový prostor (1024 států) b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 d2 d1 d0 Zakódované hodnoty Popis Výskyty (1 000 států)
50,0% (512 států) A b C d E F 0 G h i 0 abc 0 def 0 ghi (0–7) (0–7) (0–7) Tři malé číslice 51,2% (512 států)
37,5% (384 států) A b C d E F 1 0 0 i 0 abc 0 def 100 i (0–7) (0–7) (8–9) Dvě malé číslice,
jedna velká
38,4% (384 států)
A b C G h F 1 0 1 i 0 abc 100 f 0 ghi (0–7) (8–9) (0–7)
G h C d E F 1 1 0 i 100 c 0 def 0 ghi (8–9) (0–7) (0–7)
9,375% (96 států) G h C 0 0 F 1 1 1 i 100 c 100 f 0 ghi (8–9) (8–9) (0–7) Jedna malá číslice,
dvě velká
9,6% (96 států)
d E C 0 1 F 1 1 1 i 100 c 0 def 100 i (8–9) (0–7) (8–9)
A b C 1 0 F 1 1 1 i 0 abc 100 f 100 i (0–7) (8–9) (8–9)
3,125% (32 států, 8 použitých) X X C 1 1 F 1 1 1 i 100 c 100 f 100 i (8–9) (8–9) (8–9) Tři velké číslice, bity b9 a b8 , to je jedno 0,8% (8 států)

8 desetinných hodnot, jejichž číslice jsou všechny 8s nebo 9s, má každá čtyři kódování. Bity označené x v tabulce výše jsou při vstupu ignorovány , ale ve vypočítaných výsledcích budou vždy 0. (Nestandardní kódování 8 × 3 = 24 vyplňuje mezeru mezi 10 3  = 1 000 a 2 10  = 1024.)

Ve výše uvedených případech, se skutečným významem jako dekódovanou posloupností desetinných míst, je představovaná hodnota

Viz také

Reference