Binární celé číslo v desítkové soustavě - Binary integer decimal

Standard IEEE 754-2008 zahrnuje formáty desítkových čísel s plovoucí desetinnou čárkou, ve kterých lze význam a exponent (a užitečné zatížení NaN ) kódovat dvěma způsoby, označované jako binární kódování a dekadické kódování .

Oba formáty rozdělují číslo na znakový bit s , exponent q (mezi q min a q max ) a p -digitální význam c (mezi 0 a 10 p −1). Zakódovaná hodnota je (−1) s × 10 q × c . V obou formátech je rozsah možných hodnot identický, ale liší se v tom, jak je reprezentován význam c . V dekadickém kódování je kódován jako řada p desítkových číslic (pomocí hustě zabaleného desetinného (DPD) kódování). Díky tomu je převod do desítkové formy efektivní, ale ke zpracování vyžaduje specializovanou desítkovou ALU . V kódování binárních celých desetinných čísel ( BID ) je kódováno jako binární číslo.

Formát

S využitím skutečnosti, že 2 10 = 1024 je jen o málo více než 10 3 = 1000, lze 3 n -číselná desetinná čísla efektivně sbalit do 10 n binárních bitů. Formáty IEEE však mají významy 3 n +1 číslice, což by obecně vyžadovalo 10 n +4 binární bity k reprezentaci.

To by nebylo efektivní, protože je potřeba pouze 10 ze 16 možných hodnot dalších 4 bitů. Efektivnější kódování lze navrhnout pomocí skutečnosti, že rozsah exponentu je ve formátu 3 × 2 k , takže exponent nikdy nezačíná 11. Použití kódování Decimal32 (s významem 3*2+1 desetinná místa) jako příklad ( eznamená exponent, mpro mantisu, tj. Význam):

  • Pokud význam začíná na 0mmm, vynecháním úvodního 0 bitu se význam vejde do 23 bitů:
s 00eeeeee   (0)mmm mmmmmmmmmm mmmmmmmmmm
s 01eeeeee   (0)mmm mmmmmmmmmm mmmmmmmmmm
s 10eeeeee   (0)mmm mmmmmmmmmm mmmmmmmmmm
  • Pokud Mindind začíná na 100m, vynecháním úvodních 100 bitů se Mindind vejde do 21 bitů. Exponent je posunut o 2 bity a 11bitový pár ukazuje, že se používá tento formulář:
s 1100eeeeee (100)m mmmmmmmmmm mmmmmmmmmm
s 1101eeeeee (100)m mmmmmmmmmm mmmmmmmmmm
s 1110eeeeee (100)m mmmmmmmmmm mmmmmmmmmm
  • Nekonečno, tichý NaN a signalizační NaN používají kódování začínající na s 1111:
s 11110 xxxxxxxxxxxxxxxxxxxxxxxxxx
s 111110 xxxxxxxxxxxxxxxxxxxxxxxxx
s 111111 xxxxxxxxxxxxxxxxxxxxxxxxx

Bity uvedené v závorkách jsou implicitní : nejsou zahrnuty v 32 bitech kódování Decimal32, ale jsou implikovány dvěma bity za znaménkovým bitem.

Kódování Decimal64 a Decimal128 mají větší pole exponentu a významu, ale fungují podobným způsobem.

Pro kódování Decimal128 je 113 bitů významnosti ve skutečnosti dostačujících ke kódování 34 desetinných číslic a druhý tvar není ve skutečnosti nikdy vyžadován.

Kohorta

Desetinné číslo s plovoucí desetinnou čárkou lze kódovat několika způsoby, různé způsoby představují různé přesnosti, například 100,0 je kódováno jako 1000 × 10 −1 , zatímco 100,00 je kódováno jako 10 000 × 10 −2 . Sada možných kódování stejné číselné hodnoty se ve standardu nazývá kohorta . Je -li výsledek výpočtu nepřesný, je zachováno největší množství významných dat výběrem člena kohorty s největším celým číslem, které lze uložit do významu spolu s požadovaným exponentem.

Rozsah

Navrhovaná norma IEEE 754r omezuje rozsah čísel na význam ve tvaru 10 n −1, kde n je počet celých desetinných číslic, které lze uložit do dostupných bitů, aby bylo zaokrouhlení desetinných čísel provedeno správně.

32 bitů 64 bitů 128 bitů
Úložné bity 32 64 128
Trailing Významné bity 20 50 110
Významné bity 23/24 53/54 113
Významné číslice 7 16 34
Kombinované bity 11 13 17
Exponentní bity 8 10 14
Zaujatost 101 398 6176
Standardní emax 96 384 6144
Standardní emin -95 −383 -6143

Výkon

Binární kódování je ze své podstaty méně účinné pro převody do nebo z dat kódovaných desítkově, jako jsou řetězce ( ASCII , Unicode atd.) A BCD . Binární kódování je proto nejlepší zvolit pouze tehdy, jsou -li data spíše binární než desítková. IBM zveřejnila některá neověřená data o výkonu.

Viz také

Reference

Další čtení