decimal64 formátu s plovoucí desetinnou čárkou - decimal64 floating-point format


z Wikipedie, otevřené encyklopedie

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é napodobit desetinného zaokrouhlování přesně, jako jsou finanční a daňové výpočty.

Decimal64 podporuje 16 desítkové číslice na mantisy a exponentu rozmezí -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 x 10 -398^± 9 999 999 999 999 999 × 10 369^ ). Na rozdíl od toho odpovídající binárním formátu, který je nejčastěji používaným typem, má přibližný rozsah ± 0.000 000 000 000 001 x 10 -308^± 1.797 693 134 862 315 × 10 308^ . Vzhledem k tomu, mantisy není normalizován, většina hodnot s méně než 16 významných číslic má více možných reprezentace; 1 x 10 2 = 0,1 x 10 3 = 0,01 x 10 4 , atd. Nulou 768 možných reprezentace (1536, pokud zahrnují jak 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 hodnot decimal64

Podepsat Kombinace exponent pokračování koeficient pokračování
1 bit 5 bitů 8 bitů 50 bitů
s mmmmm xxxxxxxx cccccccccccccccccccccccccccccccccccccccccccccccccc

IEEE 754 umožňuje dva alternativní způsoby reprezentaci hodnoty decimal64. Norma nespecifikuje, jak pro označení, které reprezentace se používá, například v situaci, kdy jsou sdělovány decimal64 hodnoty mezi systémy:

Obě alternativy poskytují přesně stejný rozsah reprezentovatelných čísel: 16 číslic mantisy a 3 x 2 8 = 768 možných hodnot desetinných exponent. (Všechny možné desetinné hodnoty exponent uložitelných v binary64 řadě jsou representable v decimal64 a většina bitů mantisy části binary64 jsou uložena vedení zhruba stejný počet desetinných míst v mantisy.)

V obou případech, nejvýznamnější 4 bitů mantisy (které ve skutečnosti mají jen 10 možných hodnot) jsou kombinovány s nejvýznamnějšími 2 bity exponentem (3 možné hodnoty) k použití 30 z 32 možných hodnot 5-bit pole. Zbývající kombinace zakódování nekonečna a NaN .

Tato tabulka je určena pouze pro hustě desítkové a postrádá srozumitelnost

kombinace pole exponent Msbits significand Msbits jiný
00mmm 00 0xxx -
01mmm 01 0xxx -
10mmm 10 0xxx -
1100 m 00 100x -
1101 m 01 100x -
1110 m 10 100x -
11110 - - ± nekonečno
11111 - - NaN. Podepsat bit ignorovat. První bit exponent pokračování pole určuje, zda NaN je signalizace.

V případech nekonečna a NaN, všechny ostatní bity kódování jsou ignorovány. Tak je možné inicializovat matici nekonečna nebo NaN naplněním jedinou hodnotou bajtu.

Binární celé significand pole

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

Kódování, zcela uložen na 64 bitů, může představovat binární significands až 10 x 2 50 -1 = 11 258 999 068 426 239 = 27FFFFFFFFFFFF 16 , ale hodnoty větší než 10 16 -1 jsou nezákonné (a standardní vyžaduje implementace k léčbě je 0, pokud narazil na vstupu).

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

V případě, že 2 bity po bitu znaménka jsou „00“, „01“, nebo „10“, pak pole exponent se skládá z 10 bitů po bitu znaménka, a mantisy je zbývající 53 bitů, s implicitní úvodní 0 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 subnormální čísla , kde vedoucí significand číslice 0.

V případě, že 2 bity po bitu znaménka jsou „11“, pak je 10-bitové exponent pole je posunuta 2 bity doprava (po obou bit znaménka a „11“ bitů poté), a zastoupený mantisy je ve zbývající 51 bitů. V tomto případě je implicitní (to znamená, že nejsou uloženy) vede 3-bitovou posloupnost „100“ pro většinu bitů pravého mantisy (ve zbývající spodní bitů ttt ttt ... mantisy, ne všechny možné hodnoty jsou 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

2-bitovou posloupnost „11“ po znaménkový bit indikuje, že je implicitní 3-bitový prefix „100“ na mantisy. Porovnávat s implicitní 1-bitový prefix „1“ mantisy normálních hodnot pro binární formáty. Všimněte si také, že 2-bitové posloupnosti „00“, „01“ nebo „10“ po bitu znaménka jsou součástí pole exponent.

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

Ve výše uvedených případech, hodnotu, je

(-1) znaménko x 10 exponentu-398 x mantisy

V případě, že čtyři bity po bitu znaménka jsou „1111“, pak je hodnota nekonečný 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ý desítkové significand pole

V této verzi, significand je uložen jako série desetinných míst. Přední číslice je mezi 0 a 9 (3 nebo 4 binárních bitů), a zbytek mantisy používá hustý desetinné kódování (DPD).

Na rozdíl od binární číslo significand verze, kde exponent změnil pozici a přišel před mantisy, toto kódování, spojuje přední 2 bitů exponent a vedoucí číslice (3 nebo 4 bitů) mantisy do pěti bitů, které následují znamení bit.

Tento osm bitů poté, co jsou exponent pokračování pole, které poskytují méně významných bitech exponentem.

V posledních 50 bitů je mantisy pokračování pole, sestávající z pěti 10-bitových declets . Každý declet kóduje tři desetinná místa pomocí kódování DPD.

V případě, že první dva bity po bitu znaménka jsou „00“, „01“ nebo „10“, pak to jsou hlavními bitů exponent, a tři bity „TTT“, po které jsou interpretovány jako vedoucí desetinná místa ( 0-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]

V případě, že první dva bity po bitu znaménka jsou „11“, pak druhý 2 bity jsou hlavní bity exponent a další bit „T“ s předponou implicitní bity „100“ pro vytvoření přední desítkové číslice ( 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), z 5-bitové pole po bitu znaménka jsou používány reprezentovat ± nekonečna a NaN, v tomto pořadí.

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

Hustý desetinná pravidla kódování
DPD zakódovaná hodnota desetinná místa
b9 B8 b7 b6 b5 b4 b3 b2 b1 b0 d2 d1 d0 hodnoty zakódován Popis
A b C d E F 0 G hod 0 abc 0 def 0 GHI (0-7), (0-7), (0-7) Tři malé číslice
A b C d E F 1 0 0 0 abc 0 def 100 i (0-7), (0-7), (8-9) Dvě malé číslice,
jeden velký
A b C G hod F 1 0 1 0 abc 100 f 0 GHI (0-7), (8-9), (0-7)
G hod C d E F 1 1 0 100 c 0 def 0 GHI (8-9), (0-7), (0-7)
G hod C 0 0 F 1 1 1 100 c 100 f 0 GHI (8-9), (8-9), (0-7) Jedna malá číslice,
dvě velké
d E C 0 1 F 1 1 1 100 c 0 def 100 i (8-9), (0-7), (8-9)
A b C 1 0 F 1 1 1 0 abc 100 f 100 i (0-7), (8-9), (8-9)
X X C 1 1 F 1 1 1 100 c 100 f 100 i (8-9), (8-9), (8-9) Tři velké číslice

Mezi 8 desetinné hodnoty, jejichž čísla jsou všechny 8s nebo 9s mají každý čtyři kódování. Bity označené X v tabulce výše jsou ignorovány na vstupu, ale bude vždy 0 v vypočtených výsledků. (8 x 3 = 24 nestandardní kódování vyplnit mezery mezi 10 3 = 1000 a 2 10 = 1024).

Ve výše uvedených případech, u pravého mantisy jako posloupnost desítkových číslic dekódován, hodnotu, je

viz též

Reference