Formát s desetinnou čárkou s desetinnou čárkou - Decimal32 floating-point format
Plovoucí bod formáty |
---|
IEEE 754 |
|
jiný |
v výpočetní, desítkové32 je desetinná plovoucí desetinná čárka formát číslování počítačů který zabírá 4 bajty (32 bitů) v paměti počítače. Je určen pro aplikace, kde je nutné přesně emulovat desetinná zaokrouhlování, jako jsou finanční a daňové výpočty. Jako binární16 formátu, je určen k ukládání paměti.
Decimal32 podporuje 7 desetinná místa z významně a exponent rozsah -95 až +96, tj. ±0.000000×10 −95 do ±9.999999×10 96. (Ekvivalentně, ±0000001×10 −101 na ±9999999×10 90.) Protože význam není normalizován (neexistuje implicitní úvodní „1“), většina hodnot s méně než 7 významné číslice mít více možných zobrazení; 1 × 102=0.1 × 103=0.01 × 104Nula má 192 možných zobrazení (384, když obě podepsané nuly jsou zahrnuty).
Plovoucí desetinná čárka Decimal32 je relativně nový formát desetinné plovoucí desetinné čárky, formálně zavedený v Verze 2008[1] z IEEE 754 stejně jako s ISO / IEC / IEEE 60559: 2011.[2]
Reprezentace desetinných hodnot 32
Podepsat | Kombinace | Exponent pokračování | Součinitel pokračování |
---|---|---|---|
1 bit | 5 bitů | 6 bitů | 20 bitů |
s | mmmmm | xxxxxx | cccccccccccccccccccc |
IEEE 754 umožňuje dvě alternativní metody reprezentace hodnot decimal32. Norma neurčuje, jak označit, která reprezentace se používá, například v situaci, kdy jsou hodnoty decimal32 komunikovány mezi systémy.
V jedné metodě reprezentace, založené na binární celé číslo desítkově (BID), význam je reprezentován jako binárně kódované kladné celé číslo.
Druhá alternativní metoda reprezentace je založena nahustě zabalené desetinné místo (DPD) pro většinu významného (kromě nejvýznamnější číslice).
Obě alternativy poskytují přesně stejný rozsah reprezentovatelných čísel: 7 číslic znaménka a 3 × 26=192 možné hodnoty exponentů.
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 zvané kombinační pole. Zbývající kombinace kódují nekonečna a NaNs.
Kombinované pole | MSB z | Kód Hodnota | Popis | ||||||
---|---|---|---|---|---|---|---|---|---|
m4 | m3 | m2 | m1 | m0 | Exp. | Významné | |||
0 | 0 | A | b | C | 00 | 0abc | (0–7) | Číslice až 7 | |
0 | 1 | A | b | C | 01 | 0abc | |||
1 | 0 | A | b | C | 10 | 0abc | |||
1 | 1 | 0 | 0 | C | 00 | 100C | (8–9) | Číslice větší než 7 | |
1 | 1 | 0 | 1 | C | 01 | 100C | |||
1 | 1 | 1 | 0 | C | 10 | 100C | |||
1 | 1 | 1 | 1 | 0 | ± nekonečno | ||||
1 | 1 | 1 | 1 | 1 | NaN |
Znakový bit NaN je ignorován. První bit zbývajícího exponenta určuje, zda je NaN tichý nebo signalizuje.
Binární celočíselné významné pole
Tento formát používá binární význam od 0 do 107 − 1 = 9999999 = 98967F16 = 1001100010010110011111112. Kódování může představovat binární významy až 10 × 220 − 1 = 10485759 = 9FFFFF16 = 1001111111111111111111112, ale hodnoty větší než 107 - 1 jsou nezákonné (a standard vyžaduje implementace, aby se s nimi zacházelo jako s 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ýznamu jsou v rozsahu 0 až 7 (00002 až 01112) nebo vyšší (10002 nebo 10012).
Pokud jsou 2 bity za bitem znaménka „00“, „01“ nebo „10“, pak pole exponentu sestává z 8 bitů následujících za bitem znaménka a signifikantní je zbývajících 23 bitů s implicitním úvodním 0 bitem :
s 00eeeeee (0) ttt tttttttttt tttttttttts 01eeeeee (0) ttt tttttttttt tttttttttts 10eeeeee (0) ttt tttttttttt tttttttttt
To zahrnuje podnormální čísla kde přední významná číslice je 0.
Pokud jsou 2 bity po bitu znaménka „11“, je 8bitové pole exponentu posunuto o 2 bity doprava (po bitu znaménka a bitu „11“ dále) a reprezentovaný význam je ve zbývajících 21 bitů. V tomto případě existuje implicitní (tj. Ne uložená) úvodní 3bitová sekvence „100“ ve skutečném významu.
s 1100eeeeee (100) t tttttttttt tttttttttts 1101eeeeee (100) t tttttttttt tttttttttts 1110eeeeee (100) t tttttttttt tttttttttt
2bitová sekvence „11“ po bitu znaménka označuje, že existuje implicitní „100“ 3bitová předpona k významnému. Porovnejte s implicitní 1 na významu normálních hodnot pro binární formáty. Bity „00“, „01“ nebo „10“ jsou součástí pole exponentu.
Přední bity pole významů ano ne zakódovat nejvýznamnější desetinnou číslici; jsou prostě součástí většího čistého binárního čísla. Například význam 8000000 je kódován jako binární 011110100001001000000000, s předními 4 bity kódujícími 7; první význam, který vyžaduje 24. bit, je 223 = 8388608
Ve výše uvedených případech je představovaná hodnota
- (−1)podepsat × 10exponent − 101 × význam
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 ± nekonečno 11111 0x ... x tichý NaNs 11111 1x ... x a signalizační NaN
Hustě zabalené desítkové významné pole
V této verzi je význam je uložen jako řada desetinných míst. Úvodní číslice je mezi 0 a 9 (3 nebo 4 binární bity) a zbytek mantinky používá znak hustě zabalené desetinné místo (DPD) kódování.
Počáteční 2 bity exponenta a úvodní číslice (3 nebo 4 bity) mantinelu jsou kombinovány do pěti bitů, které následují po znaménkovém bitu.
Těchto šest bitů poté tvoří pole pokračování exponentu, které poskytuje méně významné bity exponenta.
Posledních 20 bitů představuje významné pole pokračování, skládající se ze dvou 10bitových poklesky.[3] Každá deklinace kóduje tři desetinná místa[3] pomocí kódování DPD.
Pokud jsou první dva bity po bitu znaménka „00“, „01“ nebo „10“, jedná se o úvodní bity exponenta a tři bity po něm jsou interpretovány jako úvodní desetinná číslice (0 až 7 ):
s 00 TTT (00) eeeeee (0TTT) [tttttttttt] [tttttttttt] s 01 TTT (01) eeeeee (0TTT) [tttttttttt] [tttttttttt] s 10 TTT (10) eeeeee (0TTT) [tttttttttt] [tttttttt]
Pokud jsou první dva bity po bitu znaménka „11“, pak druhé dva bity jsou úvodní bity exponenta a poslední bit má předponu „100“, aby vytvořil počáteční desetinnou číslici (8 nebo 9):
s 1100 T (00) eeeeee (100T) [tttttttttt] [tttttttttt] s 1101 T (01) eeeeee (100T) [tttttttttt] [tttttttttt] s 1110 T (10) eeeeee (100T) [tttttttttt] [tttttttttt]
Zbývající dvě kombinace (11110 a 11111) 5bitového pole slouží k reprezentaci ± nekonečna, respektive NaNs.
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 BCD číslice.
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 | 0abc | 0def | 0ghi | (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 | 0abc | 0def | 100i | (0–7) (0–7) (8–9) | Dvě malé číslice, jeden velký | 38,4% (384 států) | |
A | b | C | G | h | F | 1 | 0 | 1 | i | 0abc | 100F | 0ghi | (0–7) (8–9) (0–7) | ||||
G | h | C | d | E | F | 1 | 1 | 0 | i | 100C | 0def | 0ghi | (8–9) (0–7) (0–7) | ||||
9,375% (96 států) | G | h | C | 0 | 0 | F | 1 | 1 | 1 | i | 100C | 100F | 0ghi | (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 | 100C | 0def | 100i | (8–9) (0–7) (8–9) | ||||
A | b | C | 1 | 0 | F | 1 | 1 | 1 | i | 0abc | 100F | 100i | (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 | 100C | 100F | 100i | (8–9) (8–9) (8–9) | Tři velké číslice, bity b9 a b8 jsou je mi to jedno | 0,8% (8 států) |
8 desetinných hodnot, jejichž číslice jsou všechny 8 s nebo 9 s, má každé čtyři kódování. Bity označené x v tabulce výše jsou ignorováno na vstupu, ale ve vypočítaných výsledcích bude vždy 0. (Nestandardní kódování 8 × 3 = 24 vyplňuje mezeru mezi 103 = 1000 a 210 = 1024.)
Ve výše uvedených případech s skutečný význam jako dekódovaná posloupnost desetinných číslic je představovaná hodnota
Viz také
- ISO / IEC 10967 „Jazykově nezávislá aritmetika
- Primitivní datový typ
Reference
- ^ IEEE Computer Society (2008-08-29). Standard IEEE pro plovoucí desetinnou čárkou aritmetiku. IEEE. doi:10.1109 / IEEESTD.2008.4610935. ISBN 978-0-7381-5753-5. IEEE Std 754-2008. Citováno 2016-02-08.
- ^ „ISO / IEC / IEEE 60559: 2011“. 2011. Citováno 2016-02-08. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ A b Muller, Jean-Michel; Brisebarre, Nicolas; de Dinechin, Florent; Jeannerod, Claude-Pierre; Lefèvre, Vincent; Melquiond, Guillaume; Revol, Nathalie; Stehlé, Damien; Torres, Serge (2010). Příručka aritmetiky s plovoucí desetinnou čárkou (1. vyd.). Birkhäuser. doi:10.1007/978-0-8176-4705-6. ISBN 978-0-8176-4704-9. LCCN 2009939668.
- ^ Cowlishaw, Michael Frederic (2007-02-13) [2000-10-03]. "Shrnutí hustě zabaleného desetinného kódování". IBM. Archivováno od původního dne 2015-09-24. Citováno 2016-02-07.