Binárně kódované desetinné místo - Binary-coded decimal

v výpočetní a elektronický systémy, binárně kódované desetinné místo (BCD) je třída binární kódování desetinný čísla, kde každý číslice je reprezentován pevným počtem bity, obvykle čtyři nebo osm. Někdy se pro a podepsat nebo jiné indikace (např. chyba nebo přetečení).
v byte -oriented systems (tj. většina moderních počítačů), termín rozbaleno BCD[1] obvykle znamená plný bajt pro každou číslici (často včetně znaménka), zatímco zabaleno BCD typicky kóduje dvě číslice v jednom bajtu tím, že využívá skutečnosti, že k reprezentaci rozsahu 0 až 9 stačí čtyři bity. Přesné 4bitové kódování se však může z technických důvodů lišit (např. Přebytek-3 ).
Deset států představujících číslici BCD se někdy nazývá tetrady[2][3] (pro okusovat obvykle potřebné k jejich držení je také známé jako tetrade), zatímco nepoužívané, je mi to jedno -státy jsou pojmenovány pseudotetrad (e) s ,[4][5][6][7][8] pseudo desetinná místa[3] nebo pseudo-desetinná čísla.[9][10][poznámka 1]
Hlavní ctnost BCD ve srovnání s binární poziční systémy, je jeho přesnější reprezentace a zaokrouhlování desetinných množství, stejně jako jeho snadný převod na konvenční reprezentace čitelné člověkem. Jeho hlavní nevýhody spočívají v mírném zvýšení složitosti obvodů potřebných k implementaci základní aritmetiky a také o něco méně hustého úložiště.
BCD byl používán v mnoha brzy desítkové počítače a je implementován v instrukční sadě strojů, jako je IBM System / 360 série a její potomci, Digital Equipment Corporation je VAX, Burroughs B1700 a Motorola 68000 - procesory řady. BCD per se není tak široce používán jako v minulosti a již není implementován v instrukčních sadách novějších počítačů (např. PAŽE ); x86 nepodporuje jeho pokyny BCD v dlouhý režim víc. Nicméně, desítkové pevný bod a plovoucí bod formáty jsou stále důležité a nadále se používají ve finančních, komerčních a průmyslových počítačích, kde je jemná konverze a zlomek chyby zaokrouhlování které jsou inherentní binárním reprezentacím s plovoucí desetinnou čárkou, nelze tolerovat.[11]
Pozadí
BCD využívá skutečnosti, že kteroukoli desetinnou číslici lze reprezentovat čtyřbitovým vzorem. Nejviditelnější způsob kódování číslic je Přírodní BCD (NBCD), kde každá desetinná číslice je reprezentována její odpovídající čtyřbitovou binární hodnotou, jak je znázorněno v následující tabulce. Toto se také nazývá kódování „8421“.
Desetinná číslice | BCD | |||
---|---|---|---|---|
8 | 4 | 2 | 1 | |
0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 |
2 | 0 | 0 | 1 | 0 |
3 | 0 | 0 | 1 | 1 |
4 | 0 | 1 | 0 | 0 |
5 | 0 | 1 | 0 | 1 |
6 | 0 | 1 | 1 | 0 |
7 | 0 | 1 | 1 | 1 |
8 | 1 | 0 | 0 | 0 |
9 | 1 | 0 | 0 | 1 |
Toto schéma lze také označit jako Jednoduché binárně kódované desetinné místo (SBCD) nebo BCD 8421a je nejběžnějším kódováním.[12] Mezi další patří takzvané kódování „4221“ a „7421“ - pojmenované po vážení použitém pro bity - a „Přebytek-3 ".[13] Například číslice BCD 6, 0110'b
v 8421 notaci, je 1100'b
v 4221 (jsou možná dvě kódování), 0110'b
v 7421, zatímco v Excess-3 je 1001'b
().
Bit | Hmotnost | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Komentář |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4 | 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | Binární |
3 | 4 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | |
2 | 2 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | |
1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | |
název | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Desetinný | |
8 4 2 1 (XS-0) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | [14][15][16][17][pozn. 2] | |
7 4 2 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [18][19][20] | |||||||
Aiken (2 4 2 1) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [14][15][16][17][pozn. 3] | |||||||
Přebytek-3 (XS-3) | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | [14][15][16][17][pozn. 2] | |
Přebytek-6 (XS-6) | -6 | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [18][pozn. 2] | |
Jump-at-2 (2 4 2 1) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [16][17] | |||||||
Jump-at-8 (2 4 2 1) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [21][22][16][17][pozn. 4] | |||||||
4 2 2 1 (I) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [16][17] | |||||||
4 2 2 1 (II) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [21][22] | |||||||
5 4 2 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [18][14][16][17] | |||||||
5 2 2 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [14][16][17] | |||||||
5 1 2 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [19] | |||||||
5 3 1 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [16][17] | |||||||
Bílá (5 2 1 1) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [23][18][14][16][17] | |||||||
5 2 1 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [24] | |||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |||
Magnetická páska | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | [15] | |||||||
Pavel | 1 | 3 | 2 | 6 | 7 | 5 | 4 | 0 | 8 | 9 | [25] | |||||||
Šedá | 0 | 1 | 3 | 2 | 6 | 7 | 5 | 4 | 15 | 14 | 12 | 13 | 8 | 9 | 11 | 10 | [26][14][15][16][17][pozn. 2] | |
Glixon | 0 | 1 | 3 | 2 | 6 | 7 | 5 | 4 | 9 | 8 | [27][14][15][16][17] | |||||||
4 3 1 1 | 0 | 1 | 2 | 3 | 5 | 4 | 6 | 7 | 8 | 9 | [19] | |||||||
LARC | 0 | 1 | 2 | 4 | 3 | 5 | 6 | 7 | 9 | 8 | [28] | |||||||
Klar | 0 | 1 | 2 | 4 | 3 | 9 | 8 | 7 | 5 | 6 | [2][3] | |||||||
Petherick (RAE) | 1 | 3 | 2 | 0 | 4 | 8 | 6 | 7 | 9 | 5 | [29][30][pozn. 5] | |||||||
O'Brien I. (Watty) | 0 | 1 | 3 | 2 | 4 | 9 | 8 | 6 | 7 | 5 | [31][14][16][17][pozn. 6] | |||||||
Tompkins I. | 0 | 1 | 3 | 2 | 4 | 9 | 8 | 7 | 5 | 6 | [32][14][16][17] | |||||||
Lippel | 0 | 1 | 2 | 3 | 4 | 9 | 8 | 7 | 6 | 5 | [33][34][14] | |||||||
O'Brien II | 0 | 2 | 1 | 4 | 3 | 9 | 7 | 8 | 5 | 6 | [31][14][16][17] | |||||||
Tompkins II | 0 | 1 | 4 | 3 | 2 | 7 | 9 | 8 | 5 | 6 | [32][14][16][17] | |||||||
Přebytek-3 šedá | -3 | -2 | 0 | -1 | 4 | 3 | 1 | 2 | 12 | 11 | 9 | 10 | 5 | 6 | 8 | 7 | [16][17][20][pozn. 7][pozn. 2] | |
6 3 −2 −1 (I) | 3 | 2 | 1 | 0 | 5 | 4 | 8 | 9 | 7 | 6 | [28][35] | |||||||
6 3 −2 −1 (II) | 0 | 3 | 2 | 1 | 6 | 5 | 4 | 9 | 8 | 7 | [28][35] | |||||||
8 4 −2 −1 | 0 | 4 | 3 | 2 | 1 | 8 | 7 | 6 | 5 | 9 | [28] | |||||||
Lucal | 0 | 15 | 14 | 1 | 12 | 3 | 2 | 13 | 8 | 7 | 6 | 9 | 4 | 11 | 10 | 5 | [36] | |
Kautz I. | 0 | 2 | 5 | 1 | 3 | 7 | 9 | 8 | 6 | 4 | [18] | |||||||
Kautz II | 9 | 4 | 1 | 3 | 2 | 8 | 6 | 7 | 0 | 5 | [18][14] | |||||||
Susskind I. | 0 | 1 | 4 | 3 | 2 | 9 | 8 | 5 | 6 | 7 | [34] | |||||||
Susskind II | 0 | 1 | 9 | 8 | 4 | 3 | 2 | 5 | 6 | 7 | [34] | |||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Následující tabulka představuje desetinný číslice od 0 do 9 v různých kódovacích systémech BCD. V záhlaví „8 4 2 1"označuje váhu každého bitu. V pátém sloupci (" BCD 8 4 −2 −1 "), dvě váhy jsou záporné. Jsou také zobrazeny kódy znaků ASCII a EBCDIC pro číslice, které jsou příklady pásmového BCD.
Číslice | BCD 8 4 2 1 | Stibitz kód nebo Přebytek-3 | Aikenův kód nebo BCD 2 4 2 1 | BCD 8 4 −2 −1 | IBM 702, IBM 705, IBM 7080, IBM 1401 8 4 2 1 | ASCII 0000 8421 | EBCDIC 0000 8421 |
---|---|---|---|---|---|---|---|
0 | 0000 | 0011 | 0000 | 0000 | 1010 | 0011 0000 | 1111 0000 |
1 | 0001 | 0100 | 0001 | 0111 | 0001 | 0011 0001 | 1111 0001 |
2 | 0010 | 0101 | 0010 | 0110 | 0010 | 0011 0010 | 1111 0010 |
3 | 0011 | 0110 | 0011 | 0101 | 0011 | 0011 0011 | 1111 0011 |
4 | 0100 | 0111 | 0100 | 0100 | 0100 | 0011 0100 | 1111 0100 |
5 | 0101 | 1000 | 1011 | 1011 | 0101 | 0011 0101 | 1111 0101 |
6 | 0110 | 1001 | 1100 | 1010 | 0110 | 0011 0110 | 1111 0110 |
7 | 0111 | 1010 | 1101 | 1001 | 0111 | 0011 0111 | 1111 0111 |
8 | 1000 | 1011 | 1110 | 1000 | 1000 | 0011 1000 | 1111 1000 |
9 | 1001 | 1100 | 1111 | 1111 | 1001 | 0011 1001 | 1111 1001 |
Protože většina počítačů pracuje s daty v 8bitovém formátu bajtů, je možné použít jednu z následujících metod k zakódování čísla BCD:
- Rozbaleno: Každá desetinná číslice je zakódována do jednoho bajtu, přičemž čtyři bity představují číslo a zbývající bity nemají žádný význam.
- Zabaleno: Dvě desetinná místa jsou zakódována do jednoho bajtu, přičemž jedna číslice je nejméně významná okusovat (bity 0 až 3 ) a další číslice v nejvýznamnějším okusování (bity 4 až 7).[pozn. 8]
Jako příklad lze uvést kódování desetinného čísla 91 použití rozbaleného BCD vede k následujícímu binárnímu vzoru dvou bytů:
Desetinné: 9 1 Binární: 0000 1001 0000 0001
V zabaleném BCD by se stejné číslo vešlo do jednoho bajtu:
Desetinné: 9 1 Binární: 1001 0001
Numerický rozsah pro jeden rozbalený BCD bajt je tedy nula až devět včetně, zatímco rozsah pro jeden zabalený BCD bajt je nula až devadesát devět včetně.
K reprezentaci čísel větších než je rozsah jednoho bajtu lze použít libovolný počet souvislých bajtů. Například k reprezentaci desetinného čísla 12345 v zabaleném BCD, pomocí big-endian formát, program by kódoval takto:
Desetinné: 0 1 2 3 4 5 Binární: 0000 0001 0010 0011 0100 0101
Zde byl nejvýznamnější nibble nejvýznamnějšího bajtu zakódován jako nula, takže číslo je uloženo jako 012345 (ale formátovací rutiny mohou nahradit nebo odebrat úvodní nuly). Zabalený BCD je při využití úložiště efektivnější než rozbalený BCD; kódování stejného čísla (s úvodní nulou) v rozbaleném formátu by spotřebovalo dvojnásobek úložiště.
Řazení a maskování operace se používají k zabalení nebo vybalení zabalené číslice BCD. jiný bitové operace se používají k převodu číslice na její ekvivalentní bitový vzor nebo k obrácení procesu.
Zabalený BCD
v zabalený BCD (nebo jednoduše zabaleno desítkově[37]), každý ze dvou křupky každého bajtu představují desetinnou číslici.[pozn. 8] Zabalený BCD se používá přinejmenším od šedesátých let a od té doby je implementován do veškerého sálového hardwaru IBM. Většina implementací je velký endian, tj. s významnější číslicí v horní polovině každého bajtu a s bajtem nejvíce vlevo (umístěným na nejnižší adrese paměti) obsahujícím nejvýznamnější číslice zabalené desítkové hodnoty. Spodní nibble bajtu nejvíce vpravo se obvykle používá jako znak znaménka, ačkoli některým nepodepsaným reprezentacím chybí znak znaménka. Například 4bajtová hodnota se skládá z 8 nibbles, přičemž horní 7 nibbles ukládá číslice 7místné desítkové hodnoty a nejnižší nibble označuje znaménko desítkové celočíselné hodnoty.
Standardní hodnoty znaménka jsou 1100 (hex C) pro pozitivní (+) a 1101 (D) pro negativní (-). Tato konvence pochází z pole zóny pro EBCDIC znaky a podepsané předražení zastoupení. Další povolené znaky jsou 1010 (A) a 1110 (E) pro pozitivní a 1011 (B) pro negativní. Procesory IBM System / 360 budou používat znaky 1010 (A) a 1011 (B), pokud je bit A nastaven v PSW, pro standard ASCII-8, který nikdy neprošel. Většina implementací také poskytuje nepodepsané hodnoty BCD se znaménkem nibble 1111 (F).[38][39][40] ILE RPG používá 1111 (F) pro pozitivní a 1101 (D) pro negativní.[41] Ty se shodují se zónou EBCDIC pro číslice bez přelomení znaménka. V zabaleném BCD je číslo 127 reprezentováno 0001 0010 0111 1100 (127C) a −127 je reprezentováno 0001 0010 0111 1101 (127D). Systémy Burroughs používaly pro zápor 1101 (D) a jakákoli jiná hodnota se považuje za kladnou hodnotu znaménka (procesory normalizují kladné znaménko na 1100 (C)).
Podepsat Číslice | BCD 8 4 2 1 | Podepsat | Poznámky |
---|---|---|---|
A | 1 0 1 0 | + | |
B | 1 0 1 1 | − | |
C | 1 1 0 0 | + | Upřednostňováno |
D | 1 1 0 1 | − | Upřednostňováno |
E | 1 1 1 0 | + | |
F | 1 1 1 1 | + | Nepodepsaný |
Bez ohledu na to, kolik bajtů široký a slovo je, vždy existuje sudý počet křupek, protože každý bajt má dva z nich. Proto slovo n bajtů může obsahovat až (2n) −1 desetinná místa, což je vždy lichý počet číslic. Desetinné číslo s d číslice vyžaduje 1/2(d+1) bajtů úložného prostoru.
Například 4bajtové (32bitové) slovo může obsahovat sedm desetinných míst plus znaménko a může představovat hodnoty v rozmezí ± 9 999 999. Číslo −1 234 567 má tedy 7 číslic a je zakódováno jako:
0001 0010 0011 0100 0101 0110 0111 11011 2 3 4 5 6 7 −
Stejně jako řetězce znaků je první bajt zabaleného desetinného místa - ten s nejvýznamnějšími dvěma číslicemi - obvykle uložen na nejnižší adrese v paměti, nezávisle na endianismus stroje.
Naproti tomu 4 bajtový binární soubor doplněk dvou celé číslo může představovat hodnoty od −2 147 483 648 do + 2 147 483 647.
Zatímco zabalený BCD nevyužívá úložiště optimálně (využívá přibližně o 20% více paměti než binární notace pro uložení stejných čísel), převod na ASCII, EBCDIC nebo různá kódování Unicode je stále triviální, protože nejsou vyžadovány žádné aritmetické operace. Zvláštní požadavky na úložiště jsou obvykle kompenzovány potřebou přesnosti a kompatibility s kalkulačkou nebo ručním výpočtem, který poskytuje desetinná aritmetika s pevnou desetinnou čárkou. Hustší balení BCD existují, které se vyhnou penalizaci úložiště a také pro běžné převody nepotřebují žádné aritmetické operace.
Zabalený BCD je podporován v COBOL programovací jazyk jako datový typ „COMPUTATIONAL-3“ (rozšíření IBM přijaté mnoha dalšími prodejci kompilátorů) nebo „PACKED-DECIMAL“ (součást standardu COBOL z roku 1985). Je podporován v PL / I. jako „PEVNÉ DESETINNICE“. Kromě systému IBM System / 360 a pozdějších sálových počítačů je v nativní instrukční sadě originálu implementován zabalený BCD VAX procesory z Digital Equipment Corporation a některé modely Řada SDS Sigma mainframes a je to nativní formát pro Burroughs Corporation Řada sálových počítačů Medium Systems (pocházející z padesátých let Řada Electrodata 200 ).
Doplněk deseti reprezentace záporných čísel nabízejí alternativní přístup ke kódování znaménka zabalených (a dalších) čísel BCD. V tomto případě mají kladná čísla vždy nejvýznamnější číslici mezi 0 a 4 (včetně), zatímco záporná čísla jsou reprezentována doplňkem 10 příslušného kladného čísla. Výsledkem je, že tento systém umožňuje, aby se 32bitová zabalená čísla BCD pohybovala v rozmezí od -50 000 000 do + 49 999 999 a −1 je reprezentována jako 99999 999. (Stejně jako u binárních čísel s dvojitým doplňkem není rozsah symetrický kolem nuly.)
Pevná desetinná čárka
Pevný bod desetinná čísla jsou podporována některými programovacími jazyky (například COBOL, PL / I a Ada ). Tyto jazyky umožňují programátorovi určit implicitní desetinnou čárku před jednou z číslic. Například zabalená desetinná hodnota kódovaná bajty 12 34 56 7C představuje hodnotu s pevnou desetinnou čárkou +1 234 567, když je implicitní desetinná čárka umístěna mezi 4. a 5. číslicí:
12 34 56 7C12 34.56 7+
Desetinná čárka není ve skutečnosti uložena v paměti, protože zabalený formát úložiště BCD to neumožňuje. Jeho umístění kompilátor jednoduše zná a vygenerovaný kód funguje odpovídajícím způsobem pro různé aritmetické operace.
Vyšší hustota kódování
Pokud desetinná číslice vyžaduje čtyři bity, pak tři desetinná místa vyžadují 12 bitů. Nicméně od 210 (1024) je větší než 103 (1 000), pokud jsou společně zakódována tři desetinná místa, je potřeba pouze 10 bitů. Dvě takové kódování jsou Chen – Ho kódování a hustě zabalené desetinné místo (DPD). Ten má tu výhodu, že podmnožiny kódování kódují dvě číslice v optimálních sedmi bitech a jednu číslici ve čtyřech bitech, jako v běžném BCD.
Desetinné pásmo
Například některé implementace IBM sálové systémy, podpora pásmový desítkový číselné reprezentace. Každá desetinná číslice je uložena v jednom bajtu, přičemž spodní čtyři bity kódují číslici ve formě BCD. Horní čtyři bity, nazývané „zónové“ bity, jsou obvykle nastaveny na pevnou hodnotu, takže bajt obsahuje hodnotu znaku odpovídající číslici. Systémy EBCDIC používají hodnotu zóny 1111 (hex F); toto dává bajty v rozsahu F0 až F9 (hex), což jsou kódy EBCDIC pro znaky „0“ až „9“. Podobně systémy ASCII používají hodnotu zóny 0011 (hex 3), což dává kódy znaků 30 až 39 (hex).
U podepsaných zónovaných desetinných hodnot obsahuje nibble zóny nejvíce vpravo (nejméně významná) znaménkovou číslici, což je stejná sada hodnot, která se používá pro podepsaná zabalená desetinná čísla (viz výše). Tudíž zónová desetinná hodnota zakódovaná jako hex bajty F1 F2 D3 představuje podepsanou desetinnou hodnotu −123:
F1 F2 D31 2 −3
EBCDIC zónová desetinná převodní tabulka
BCD digit | Hexadecimální | Znak EBCDIC | ||||||
---|---|---|---|---|---|---|---|---|
0+ | C0 | A0 | E0 | F0 | { (*) | (*) | 0 | |
1+ | C1 | A1 | E1 | F1 | A | ~ (*) | 1 | |
2+ | C2 | A2 | E2 | F2 | B | s | S | 2 |
3+ | C3 | A3 | E3 | F3 | C | t | T | 3 |
4+ | C4 | A4 | E4 | F4 | D | u | U | 4 |
5+ | C5 | A5 | E5 | F5 | E | proti | PROTI | 5 |
6+ | C6 | A6 | E6 | F6 | F | w | Ž | 6 |
7+ | C7 | A7 | E7 | F7 | G | X | X | 7 |
8+ | C8 | A8 | E8 | F8 | H | y | Y | 8 |
9+ | C9 | A9 | E9 | F9 | Já | z | Z | 9 |
0− | D0 | B0 | } (*) | ^ (*) | ||||
1− | D1 | B1 | J | |||||
2− | D2 | B2 | K. | |||||
3− | D3 | B3 | L | |||||
4− | D4 | B4 | M | |||||
5− | D5 | B5 | N | |||||
6− | D6 | B6 | Ó | |||||
7− | D7 | B7 | P | |||||
8− | D8 | B8 | Q | |||||
9− | D9 | B9 | R |
(*) Poznámka: Tyto znaky se liší v závislosti na místním znaku kódová stránka nastavení.
Desetinná oblast s pevnou zónou
Některé jazyky (například COBOL a PL / I) přímo podporují desetinné hodnoty se zónami s pevnou desetinnou čárkou a přiřazují implicitní desetinnou čárku na nějakém místě mezi desetinnými číslicemi čísla. Například, vzhledem k šestibajtové podepsané pásmové desítkové hodnotě s implicitní desetinnou čárkou vpravo od čtvrté číslice, hex bajty F1 F2 F7 F9 F5 C0 představují hodnotu +1,279,50:
F1 F2 F7 F9 F5 C01 2 7 9. 5 +0
BCD v počítačích
IBM
IBM tyto výrazy použila Binárně kódovaný desetinný směnný kód (BCDIC, někdy jen BCD), pro 6-bit alfanumerické kódy, které představovaly čísla, velká písmena a speciální znaky. Nějaká variace BCDIC alphamerics se používá ve většině časných počítačů IBM, včetně IBM 1620 (představen v roce 1959), Řada IBM 1400 aDesetinná architektura členové Řada IBM 700/7000.
Řada IBM 1400 jsou znakově adresovatelné stroje, přičemž každé umístění je označeno šesti bity B, A, 8, 4, 2 a 1, plus zvláštní bit kontroly parity (C) a bit slovní značky (M). Pro kódování číslic 1 přes 9, B a A jsou nula a číselná hodnota představovaná standardním 4bitovým BCD v bitech 8 přes 1. U většiny ostatních bitů znaků B a A jsou odvozeny jednoduše z "12", "11" a "0" "zónových razníků" v děrný štítek znakový kód a bity 8 přes 1 z 1 přes 9 údery. „12zónový“ úder nastavil obojí B a A, sada „11 zón“ Ba sada „zóna 0“ (úder 0 kombinovaný s ostatními) A. Tedy dopis A, který je (12,1) ve formátu děrného štítku je zakódován (B, A, 1). Symbol měny $, (11,8,3) v děrované kartě, bylo zakódováno v paměti jako (B, 8,2,1). To umožňuje obvodům převádět mezi formátem děrných štítků a formátem interní paměti, což je velmi jednoduché, pouze s několika speciálními případy. Jedním důležitým zvláštním případem je číslice 0, představovaný osamělým 0 úder do karty a (8,2) v základní paměti.[42]
Paměť IBM 1620 je organizována do 6bitových adresovatelných číslic, obvyklých 8, 4, 2, 1 Plus F, který se používá jako příznakový bit a C, zvláštní bit kontroly parity. BCD alphamerics jsou kódovány pomocí dvojic číslic, přičemž „zóna“ v sudé číslici a „číslice“ v liché adresované číslici, přičemž „zóna“ souvisí s 12, 11, a 0 „zónové razníky“ jako u série 1400. Hardware pro převod vstupu / výstupu převedený mezi interními dvojicemi číslic a externími standardními 6bitovými kódy BCD.
V desítkové architektuře IBM 7070, IBM 7072, a IBM 7074 alphamerics jsou kódovány pomocí dvojic číslic (pomocí kód dva z pěti v číslicích, ne BCD) 10místného slova s „zónou“ na levé číslici a „číslicí“ na pravé číslici. Hardware pro převod vstupu / výstupu převedený mezi interními dvojicemi číslic a externími standardními 6bitovými kódy BCD.
Se zavedením Systém / 360, IBM rozšířila 6bitový BCD alphamerics na 8bitový EBCDIC, což umožňuje přidání mnohem více znaků (např. malých písmen). Balený BCD s proměnnou délkou číselný implementován je také datový typ poskytující strojové instrukce, které provádějí aritmetiku přímo na zabalených desetinných datech.
Na IBM 1130 a 1800, zabalený BCD je softwarově podporován balíkem Commercial Subroutine Package společnosti IBM.
Dnes jsou data BCD stále hojně využívána v procesorech a databázích IBM, jako např IBM DB2, sálové počítače a Napájení6. V těchto produktech je BCD obvykle pásmový BCD (jako v EBCDIC nebo ASCII), zabalený BCD (dvě desetinná místa na bajt) nebo „čisté“ kódování BCD (jedna desetinná číslice uložená jako BCD v dolních čtyřech bitech každého bajtu) . To vše se používá v hardwarových registrech a procesorových jednotkách a v softwaru. Chcete-li převést zabalená desetinná místa v odběrech tabulky EBCDIC na čitelná čísla, můžete použít masku OUTREC FIELDS nástroje JCL DFSORT.[43]
Ostatní počítače
Řada Digital Equipment Corporation VAX-11 zahrnuje instrukce které mohou provádět aritmetiku přímo na zabalených datech BCD a převádět mezi zabalenými daty BCD a jinými celočíselnými reprezentacemi.[40] Zabalený formát BCD VAX je kompatibilní s formátem na IBM System / 360 a pozdějších kompatibilních procesorech IBM. Implementace MicroVAX a novější VAX upustily tuto schopnost od CPU, ale zachovaly si kompatibilitu kódu s dřívějšími stroji implementací chybějících pokynů v softwarové knihovně dodané s operačním systémem. To je vyvoláno automaticky prostřednictvím zpracování výjimek když narazí na zaniklé pokyny, aby programy, které je používají, mohly být prováděny bez úprav na novějších počítačích.
The Intel x86 architektura podporuje a jedinečný 18místný (desetibajtový) formát BCD které lze načíst do a uložit z registrů s plovoucí desetinnou čárkou, odkud lze provádět výpočty.[44]
The Řada Motorola 68000 měl pokyny BCD.[45]
V novějších počítačích jsou tyto funkce téměř vždy implementovány spíše v softwaru než v instrukční sadě CPU, ale numerická data BCD jsou stále extrémně běžná v komerčních a finančních aplikacích. Existují triky pro implementaci zabalených operací BCD a zónovaných dekadických operací sčítání nebo odčítání pomocí krátkých, ale těžko pochopitelných posloupností slovně paralelních logických a binárních aritmetických operací.[46] Například následující kód (napsaný v C ) počítá nepodepsaný 8místný zabalený doplněk BCD pomocí 32bitových binárních operací:
uint32_t BCDadd(uint32_t A, uint32_t b){ uint32_t t1, t2; // nepodepsané 32bitové mezilehlé hodnoty t1 = A + 0x06666666; t2 = t1 ^ b; // součet bez šíření přenosu t1 = t1 + b; // předběžný součet t2 = t1 ^ t2; // všechny binární přenosové bity t2 = ~t2 & 0x11111110; // jen BCD přenáší bity t2 = (t2 >> 2) | (t2 >> 3); // oprava vrátit se t1 - t2; // opravený součet BCD}
BCD v elektronice
![]() | Tato část má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto otázkách na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
BCD je velmi časté v elektronických systémech, kde se má zobrazovat číselná hodnota, zejména v systémech sestávajících pouze z digitální logiky a neobsahujících mikroprocesor. Použitím BCD lze značně zjednodušit manipulaci s numerickými daty pro zobrazení tím, že se s každou číslicí zachází jako se samostatným samostatným podokruhem. To mnohem více odpovídá fyzické realitě zobrazovacího hardwaru - návrhář by se mohl rozhodnout použít řadu samostatných identických sedmisegmentové displeje například vybudovat měřicí obvod. Pokud by byla číselná veličina uložena a manipulováno jako čistě binární, vyžadovalo by propojení s takovým displejem složité obvody. Proto v případech, kdy jsou výpočty relativně jednoduché, může práce s BCD vést k celkově jednoduššímu systému, než je převod do a z binárního formátu. Většina kapesních kalkulaček provádí všechny výpočty v BCD.
Stejný argument platí, když hardware tohoto typu používá zabudovaný mikrokontrolér nebo jiný malý procesor. Reprezentace čísel interně ve formátu BCD často vede k menšímu kódu, protože převod z nebo na binární reprezentaci může být u takto omezených procesorů drahý. U těchto aplikací mají některé malé procesory vyhrazené aritmetické režimy, které pomáhají při psaní rutin, které manipulují s veličinami BCD.[47][48]
Provoz s BCD
Přidání
Je možné hrát přidání nejprve přidáním v binárním formátu a následným převedením na BCD. Převod jednoduchého součtu dvou číslic lze provést přidáním 6 (tj. 16 - 10), když má pětibitový výsledek přidání dvojice číslic hodnotu větší než 9. Důvod pro přidání 6 je, že existují 16 možných 4bitových hodnot BCD (od 24 = 16), ale platných je pouze 10 hodnot (0000 až 1001). Například:
1001 + 1000 = 10001 9 + 8 = 17
10001 je binární, nikoli desítkové vyjádření požadovaného výsledku, ale nejvýznamnější 1 („carry“) se nevejde do 4bitového binárního čísla. V BCD jako v desítkové soustavě nemůže existovat hodnota větší než 9 (1001) na číslici. Chcete-li to opravit, přidá se k součtu 6 (0110) a potom se s výsledkem zachází jako se dvěma křupky:
10001 + 0110 = 00010111 => 0001 0111 17 + 6 = 23 1 7
Dva nibble výsledku, 0001 a 0111, odpovídají číslicím „1“ a „7“. Výsledkem je „17“ v BCD, což je správný výsledek.
Tuto techniku lze rozšířit na přidávání více číslic přidáním ve skupinách zprava doleva, šířením druhé číslice jako nosiče, vždy porovnáním 5bitového výsledku každého součtu dvojic číslic na 9. Některé CPU poskytují vlajka napůl nést k usnadnění aritmetických úprav BCD po binárních operacích sčítání a odčítání.
Odčítání
Odečítání se provádí přidáním doplňku desítky z subhend do minuend. K reprezentaci znaménka čísla v BCD se číslo 0000 používá k reprezentaci a kladné číslo a 1001 se používá k označení a záporné číslo. Zbývajících 14 kombinací jsou neplatná znaménka. Pro ilustraci odečtení podepsaného BCD zvažte následující problém: 357 - 432.
V podepsaném BCD je 357 0000 0011 0101 0111. Doplněk desítky 432 lze získat převzetím doplněk devítky 432, a poté přidáte jednu. Takže 999 - 432 = 567 a 567 + 1 = 568. Předcházejícím 568 v BCD kódem záporného znaménka lze reprezentovat číslo −432. Takže -432 v podepsaném BCD je 1001 0101 0110 1000.
Nyní, když jsou obě čísla zastoupena v podepsaném BCD, lze je sečíst:
0000 0011 0101 0111 0 3 5 7+ 1001 0101 0110 1000 9 5 6 8= 1001 1000 1011 1111 9 8 11 15
Protože BCD je forma desítkového vyjádření, několik výše uvedených číslic je neplatných. V případě, že existuje neplatný záznam (libovolná číslice BCD větší než 1001), přidá se 6, aby se vygeneroval přenosový bit a způsobil, že se součet stane platným záznamem. Přidání 6 k neplatným položkám má tedy za následek následující:
1001 1000 1011 1111 9 8 11 15+ 0000 0000 0110 0110 0 0 6 6= 1001 1001 0010 0101 9 9 2 5
Výsledek odečtení je tedy 1001 1001 0010 0101 (−925). Pro potvrzení výsledku si všimněte, že první číslice je 9, což znamená záporné. To se zdá být správné, protože 357 - 432 by mělo vést k zápornému číslu. Zbývající nibble jsou BCD, takže 1001 0010 0101 je 925. Doplněk desítky 925 je 1000 - 925 = 75, takže vypočítaná odpověď je −75.
Pokud je přidáván jiný počet křupek (například 1053 - 2), musí být číslo s menším počtem číslic nejprve předponováno nulami, než se vezme doplněk nebo odčítání desítky. Takže s 1053 - 2 by 2 muselo být nejprve představováno jako 0002 v BCD a musel by být vypočítán doplněk desítky 0002.
Srovnání s čistým binárním
Výhody
- Mnoho neintegrálních hodnot, například desetinné číslo 0.2, má v binárním vyjádření nekonečné místo a hodnotu (.001100110011 ...), ale má konečné místo a hodnotu v binárně kódovaném desítkovém čísle (0,0010). V důsledku toho se systém založený na binárně kódovaných desítkových vyjádřeních desetinných zlomků vyhne chybám představujícím a vypočítávajícím takové hodnoty. To je užitečné při finančních výpočtech.
- Škálování o síle 10 je jednoduché.
- Zaokrouhlování na hranici desítkové číslice je jednodušší. Sčítání a odčítání v desítkové soustavě nevyžaduje zaokrouhlování.
- Zarovnání dvou desetinných čísel (například 1,3 + 27,08) je jednoduchý, přesný posun.
- Převod do znakové formy nebo k zobrazení (např. Do textového formátu, jako je XML, nebo řídit signály pro a sedmisegmentový displej ) je jednoduché mapování na jednotlivé číslice a lze ho provádět lineárně (Ó (n)) čas. Konverze z čistého binární zahrnuje relativně složitou logiku, která zahrnuje číslice, a pro velká čísla není znám žádný algoritmus převodu lineárního času (viz Binární číselný systém § Převod do az jiných číselných systémů ).
Nevýhody
- Některé operace je složitější implementovat. Přidávače vyžadují zvláštní logiku, která způsobí, že se zabalí a vygenerují přenos dříve. O 15 až 20 procent více obvodů je zapotřebí pro přidání BCD ve srovnání s čistým binárním.[Citace je zapotřebí ] Násobení vyžaduje použití algoritmů, které jsou o něco složitější než shift-mask-add (a binární násobení, vyžadující binární směny a sčítání nebo ekvivalent, číslici nebo skupinu číslic).
- Standardní BCD vyžaduje čtyři bity na číslici, zhruba o 20 procent více prostoru než binární kódování (poměr 4 bitů k protokolu210 bitů je 1,204). Když je zabalen tak, že jsou tři číslice zakódovány v deseti bitech, režie úložiště je výrazně snížena, na úkor kódování, které je nezarovnané s 8bitovými hranicemi bajtů běžnými na existujícím hardwaru, což má za následek pomalejší implementace v těchto systémech.
- Praktické existující implementace BCD jsou obvykle pomalejší než operace na binárních reprezentacích, zejména na vestavěných systémech, kvůli omezené podpoře procesoru pro nativní operace BCD.[49]
Reprezentační variace
Existují různé implementace BCD, které používají jiné reprezentace čísel. Programovatelné kalkulačky vyrobeno Texas Instruments, Hewlett Packard a další obvykle zaměstnávají a plovoucí bod Formát BCD, obvykle se dvěma nebo třemi číslicemi pro (desítkové) exponenty. Extra bity znakové číslice lze použít k označení zvláštních číselných hodnot, jako je například nekonečno, podtečení /přetékat, a chyba (blikající displej).
Podepsané variace
Podepsané desetinné hodnoty mohou být reprezentovány několika způsoby. Například programovací jazyk COBOL podporuje celkem pět desetinných formátů se zónami, z nichž každý kóduje číselné znaménko jiným způsobem:
Typ | Popis | Příklad |
---|---|---|
Nepodepsaný | Žádné známky okusovat | F1 F2 F3 |
Podepsané koncové (kanonický formát) | Podepsat okusování v posledním (nejméně významném) bajtu | F1 F2 C3 |
Podepsané vedení (overpunch) | Podepsat okusování v prvním (nejvýznamnějším) bajtu | C1 F2 F3 |
Podepsané koncové oddělené | Samostatný znakový znakový bajt ('+' nebo '−' ) následující po bajtech číslic | F1 F2 F3 2B |
Podepsané vedoucí samostatně | Samostatný znakový znakový bajt ('+' nebo '−' ) před číslicovými bajty | 2B F1 F2 F3 |
Telefonní binární kódování v desítkové soustavě (TBCD)
3GPP rozvinutý TBCD,[50] expanze na BCD, kde se zbývající (nepoužité) bitové kombinace používají k přidání konkrétních telefonie postavy,[51][52] s číslicemi podobnými číslům nalezeným v telefonní klávesnice originální design.
Desetinný Číslice | TBCD 8 4 2 1 |
---|---|
* | 1 0 1 0 |
# | 1 0 1 1 |
A | 1 1 0 0 |
b | 1 1 0 1 |
C | 1 1 1 0 |
Používá se jako výplň, když existuje lichý počet číslic | 1 1 1 1 |
Uvedený dokument 3GPP definuje TBCD-STRING se zaměněnými křupkami v každém bajtu. Bity, oktety a číslice indexované od 1, bity zprava, číslice a oktety zleva.
bity 8765 oktetu n kódovací číslice 2n
bity 4321 oktetu n kódovací číslice 2 (n – 1) + 1
Význam číslo 1234
, stal by se 21 43
v TBCD.
Alternativní kódování
Pokud jsou chyby v reprezentaci a výpočtu důležitější než rychlost převodu na az displeje, lze použít zmenšenou binární reprezentaci, která ukládá desítkové číslo jako binárně kódované celé číslo a binárně kódovaný podepsaný desetinný exponent. Například 0,2 může být reprezentováno jako 2×10−1.
Tato reprezentace umožňuje rychlé násobení a dělení, ale může vyžadovat posunutí o sílu 10 během sčítání a odčítání, aby se zarovnala desetinná místa. Je vhodný pro aplikace s pevným počtem desetinných míst, které poté tuto úpravu nevyžadují - zejména finanční aplikace, kde obvykle stačí 2 nebo 4 číslice za desetinnou čárkou. Ve skutečnosti je to téměř forma aritmetika pevného bodu od pozice bod radixu je implicitní.
The Hertz a Chen – Ho kódování poskytují booleovské transformace pro převod skupin tří číslic kódovaných BCD na az 10bitových hodnot[poznámka 1] které lze efektivně kódovat v hardwaru pouze se zpožděním brány 2 nebo 3. Hustě zabalené desetinné místo (DPD) je podobné schéma[poznámka 1] který se používá pro většinu z významně, s výjimkou úvodní číslice, pro jedno ze dvou alternativních desetinných kódování specifikovaných v IEEE 754-2008 standard s plovoucí desetinnou čárkou.
aplikace
The BIOS v mnoha osobní počítače ukládá datum a čas do BCD, protože MC6818 hodinový čip v reálném čase použitý v originálu IBM PC AT základní deska poskytla čas zakódovaný v BCD. Tento formulář lze snadno převést do ASCII pro zobrazení.[53][54]
The 8bitová rodina Atari počítačů používaných BCD k implementaci algoritmů s plovoucí desetinnou čárkou. The MOS 6502 procesor má režim BCD, který ovlivňuje pokyny pro sčítání a odčítání. The Pořadatel Psion 1 Software dodaný výrobcem ručního počítače také zcela využil BCD k implementaci plovoucí desetinné čárky; pozdější modely Psion používaly výhradně binární.
Rané modely PlayStation 3 uložit datum a čas do BCD. To vedlo k celosvětovému výpadku konzoly 1. března 2010. Poslední dvě číslice roku uložené jako BCD byly nesprávně interpretovány jako 16 způsobující chybu v datu jednotky, čímž je většina funkcí nefunkční. Toto bylo označováno jako Rok 2010 Problém.
Právní historie
V případě z roku 1972 Gottschalk v. Benson, americký nejvyšší soud zrušil rozhodnutí nižšího soudu, které umožnilo patent na převod čísel kódovaných BCD na binární v počítači. Jednalo se o mezní úsudek, který určoval patentovatelnost softwaru a algoritmů.
Viz také
- Bi-quinary kódované desetinné místo
- Binárně kódované ternární (BCT)
- Binární celé číslo v desítkové soustavě (NABÍDKA)
- Chen – Ho kódování
- Desetinný počítač
- Hustě zabalené desetinné místo (DPD)
- Double fušovat, algoritmus pro převod binárních čísel na BCD
- Problém roku 2000
Poznámky
- ^ A b C Ve standardní 4bitové reprezentaci je 16 stavů (čtyři bity pro každou číslici) s 10 tetrady a 6 pseudotetrády, zatímco v hustěji naskládaných schématech, jako je Hertz, Chen – Ho nebo DPD kódování je méně - např. pouze 24 nevyužité státy ve 1024 státech (10 bitů pro tři číslice).
- ^ A b C d E Stavy kódu (zobrazené černě) mimo desítkové rozmezí 0–9 označují další stavy varianty kódu, která není BCD. Ve zde diskutované variantě kódu BCD jsou to pseudotetrady.
- ^ The Aikenův kód je jeden z několika 2 4 2 1 kódů. Je také známý jako 2 * 4 2 1 kód.
- ^ Kód Jump-at-8 je také známý jako nesymetrický kód 2 4 2 1.
- ^ The Petherickův kód je také známý jako Royal Aircraft Establishment (RAE) kód.
- ^ The O'Brienův kód typu I je také známý jako Watty kód nebo Watty odráží desetinný kód (WRD).
- ^ The Šedý kód přebytek-3 je také známý jako Šedá –Stibitz kód.
- ^ A b Podobným způsobem bylo několik znaků zabaleno do stroje slova na minipočítače viz IBM SQUOZE a DEC RADIX 50.
Reference
- ^ Intel. „příručka architektury ia32“ (PDF). Intel. Citováno 2015-07-01.
- ^ A b Klar, Rainer (01.02.1970). „1.5.3 Konvertierung binär verschlüsselter Dezimalzahlen“ [1.5.3 Konverze binárně kódovaných desetinných čísel]. Digitale Rechenautomaten - Eine Einführung [Digitální počítače - úvod]. Sammlung Göschen (v němčině). 1241 / 1241a (1. vyd.). Berlín, Německo: Walter de Gruyter & Co. / G. J. Göschen'sche Verlagsbuchhandlung . 17, 21. ISBN 3-11-083160-0. . Archiv-Nr. 7990709. Archivováno od původního dne 2020-04-18. Citováno 2020-04-13. (205 stran) (Pozn. Dotisk prvního vydání z roku 2019 je k dispozici na adrese ISBN 3-11002793-3, 978-3-11002793-8. Přepracovaný a rozšířený 4. vydání existuje také.)
- ^ A b C Klar, Rainer (1989) [01.01.1988]. „1.4 Kódy: Binär verschlüsselte Dezimalzahlen“ [1.4 Kódy: Binárně kódovaná desetinná čísla]. Digitale Rechenautomaten - Eine Einführung in die Struktur von Computerhardware [Digitální počítače - Úvod do struktury počítačového hardwaru]. Sammlung Göschen (v němčině). 2050 (4. přepracované vydání). Berlín, Německo: Walter de Gruyter & Co. s. 25, 28, 38–39. ISBN 3-11011700-2. p. 25:
[…] Die nicht erlaubten 0/1-Muster nennt man auch Pseudodezimalen. […]
(320 stránek) - ^ Schneider, Hans-Jochen (1986). Lexikon der Informatik und Datenverarbeitung (v němčině) (2 ed.). R. Oldenbourg Verlag München Wien. ISBN 3-486-22662-2.
- ^ Tafel, Hans Jörg (1971). Einführung in die digitale Datenverarbeitung [Úvod do digitálního zpracování informací] (v němčině). Mnichov: Carl Hanser Verlag. ISBN 3-446-10569-7.
- ^ Steinbuch, Karl W.; Weber, Wolfgang; Heinemann, Traute, eds. (1974) [1967]. Taschenbuch der Informatik - Band II - Struktur und Programmierung von EDV-Systemen. Taschenbuch der Nachrichtenverarbeitung (v němčině). 2 (3. vyd.). Berlín, Německo: Springer-Verlag. ISBN 3-540-06241-6. LCCN 73-80607.
- ^ Tietze, Ulrich; Schenk, Christoph (06.12.2012). Pokročilé elektronické obvody. Springer Science & Business Media. ISBN 978-3642812415. 9783642812415. Citováno 2015-08-05.
- ^ Kowalski, Emil (8. 3. 2013) [1970]. Jaderná elektronika. Springer-Verlag. doi:10.1007/978-3-642-87663-9. ISBN 978-3642876639. 9783642876639, 978-3-642-87664-6. Citováno 2015-08-05.
- ^ Ferretti, Vittorio (2013-03-13). Wörterbuch der Elektronik, Datentechnik und Telekommunikation / Dictionary of Electronics, Computing and Telecommunications: Teil 1: Deutsch-Englisch / Part 1: German-English. 1 (2. vyd.). Springer-Verlag. ISBN 978-3642980886. 9783642980886. Citováno 2015-08-05.
- ^ Speiser, Ambrosius Paul (1965) [1961]. Digitale Rechenanlagen - Grundlagen / Schaltungstechnik / Arbeitsweise / Betriebssicherheit [Digitální počítače - základy / obvody / provoz / spolehlivost] (v němčině) (2 ed.). ETH Curych, Curych, Švýcarsko: Springer-Verlag / IBM. p. 209. LCCN 65-14624. 0978.
- ^ Cowlishaw, Mike F. (2015) [1981, 2008]. „General Decimal Arithmetic“. Citováno 2016-01-02.
- ^ Evans, David Silvester (březen 1961). „Kapitola čtvrtá: Pomocné zařízení: Relé pro výstupní řízení a kontrolu parity pro digitizéry“. Digitální data: jejich odvození a redukce pro analýzu a řízení procesů (1. vyd.). Londýn, Velká Británie: Hilger & Watts Ltd. / Vydavatelé mezi vědami. str. 46–64 [56–57]. Citováno 2020-05-24. (8 + 82 stránek) (Pozn. 4bitové 8421 BCD kód s extra paritní bit aplikováno jako nejméně významný bit dosáhnout zvláštní parita výsledného 5bitového kódu je také známý jako Ferrantiho kód.)
- ^ Lala, Parag K. (2007). Principy moderního digitálního designu. John Wiley & Sons. str. 20–25. ISBN 978-0-470-07296-7.
- ^ A b C d E F G h i j k l m n Berger, Erich R. (1962). „1.3.3. Die Codierung von Zahlen“. Napsáno v Karlsruhe v Německu. v Steinbuch, Karl W. (vyd.). Taschenbuch der Nachrichtenverarbeitung (v němčině) (1. vyd.). Berlín / Göttingen / New York: Springer-Verlag OHG. str. 68–75. LCCN 62-14511. (Pozn. Zobrazený Kautzův kód (II ), který obsahuje všech osm dostupných binárních stavů s lichým počtem 1 s, je mírnou úpravou původní Kautz kód (Já ), obsahující všech osm stavů se sudým počtem 1 s, takže inverze nejvýznamnějších bitů vytvoří a Doplněk 9s.)
- ^ A b C d E F Kämmerer, Wilhelm (Květen 1969). Napsáno v Jeně v Německu. Frühauf, Hans; Kämmerer, Wilhelm; Schröder, Kurz; Winkler, Helmut (eds.). Digitale Automaten - Theorie, Struktur, Technik, Programmieren. Elektronisches Rechnen und Regeln (v němčině). 5 (1. vyd.). Berlín, Německo: Akademie-Verlag GmbH. p. 161. Licence č. 202-100 / 416/69. Objednávka číslo. 4666 ES 20 K 3. (Pozn. Existuje také druhé vydání z roku 1973.)
- ^ A b C d E F G h i j k l m n Ó p q Dokter, Folkert; Steinhauer, Jürgen (18.06.1973). Digitální elektronika. Philips Technical Library (PTL) / Macmillan Education (Reprint of 1st English ed.). Eindhoven, Netherlands: The Macmillan Press Ltd. / N. V. Philips' Gloeilampenfabrieken. doi:10.1007/978-1-349-01417-0. ISBN 978-1-349-01419-4. SBN 333-13360-9. Citováno 2020-05-11. (270 pages) (NB. This is based on a translation of volume I of the two-volume German edition.)
- ^ A b C d E F G h i j k l m n Ó p q Dokter, Folkert; Steinhauer, Jürgen (1975) [1969]. Digitale Elektronik in der Meßtechnik und Datenverarbeitung: Theoretische Grundlagen und Schaltungstechnik. Philips Fachbücher (in German). Já (improved and extended 5th ed.). Hamburg, Germany: Deutsche Philips GmbH. p. 50. ISBN 3-87145-272-6. (xii+327+3 pages) (NB. The German edition of volume I was published in 1969, 1971, two editions in 1972, and 1975. Volume II was published in 1970, 1972, 1973, and 1975.)
- ^ A b C d E F Kautz, William H. (June 1954). "IV. Examples A. Binary Codes for Decimals, n = 4". Optimized Data Encoding for Digital Computers. Convention Record of the I.R.E., 1954 National Convention, Part 4 - Electronic Computers and Information Theory. Session 19: Information Theory III - Speed and Computation. Stanford Research Institute, Stanford, California, USA: HNĚV. pp. 47–57 [49, 51–52, 57]. Archivováno from the original on 2020-07-03. Citováno 2020-07-03. p. 52:
[…] The last column [of Table II], labeled "Best," gives the maximum fraction possible with any code—namely 0.60—half again better than any conventional code. This extremal is reached with the ten [heavily-marked vertices of the graph of Obr for n = 4, or, in fact, with any set of ten code combinations which include all eight with an even (or all eight with an odd) number of "1's." The second and third rows of Table II list the average and peak decimal change per undetected single binary error, and have been derived using the equations of Sec. II for Δ1 and δ1. The confusion index for decimals using the criterion of "decimal change," is taken to be cij = |i − j| i,j = 0, 1, … 9. Again, the "Best" arrangement possible (the same for average and peak), one of which is shown in Fig. 4, is substantially better than the conventional codes. […] Fig. 4 Minimum-confusion code for decimals. […] δ1=2 Δ1=15 […]
[1][2][3][4][5][6][7][8][9][10][11] (11 pages) (NB. Besides the combinatorial set of 4-bit BCD "minimum-confusion codes for decimals", of which the author illustrates only one explicitly (here reproduced as code I ) in form of a 4-bit graph, the author also shows a 16-state 4-bit "binary code for analog data" in form of a code table, which, however, is not discussed here. The code II shown here is a modification of code I discussed by Berger.) - ^ A b C Chinal, Jean P. (January 1973). "3.3. Unit Distance Codes". Written at Paris, France. Design Methods for Digital Systems. Translated by Preston, Alan; Summer, Arthur (1st English ed.). Berlín, Německo: Akademie-Verlag / Springer-Verlag. p. 46. doi:10.1007/978-3-642-86187-1_3. ISBN 978-0-387-05871-9. License No. 202-100/542/73. Order No. 7617470(6047) ES 19 B 1 / 20 K 3. Citováno 2020-06-21. (xviii+506 pages) (NB. The French 1967 original book was named "Techniques Booléennes et Calculateurs Arithmétiques", published by Éditions Dunod .)
- ^ A b Military Handbook: Encoders - Shaft Angle To Digital (PDF). Ministerstvo obrany Spojených států. 1991-09-30. MIL-HDBK-231A. Archivováno (PDF) from the original on 2020-07-25. Citováno 2020-07-25. (NB. Supersedes MIL-HDBK-231(AS) (1970-07-01).)
- ^ A b Stopper, Herbert (March 1960). Written at Litzelstetten, Germany. Runge, Wilhelm Tolmé (vyd.). "Ermittlung des Codes und der logischen Schaltung einer Zähldekade". Telefunken-Zeitung (TZ) - Technisch-Wissenschaftliche Mitteilungen der Telefunken GMBH (v němčině). Berlín, Německo: Telefunken. 33 (127): 13–19. (7 pages)
- ^ A b Borucki, Lorenz; Dittmann, Joachim (1971) [July 1970, 1966, Autumn 1965]. "2.3 Gebräuchliche Codes in der digitalen Meßtechnik". Written at Krefeld / Karlsruhe, Germany. Digitale Meßtechnik: Eine Einführung (in German) (2 ed.). Berlin / Heidelberg, Germany: Springer-Verlag. pp. 10–23 [12–14]. doi:10.1007/978-3-642-80560-8. ISBN 3-540-05058-2. LCCN 75-131547. ISBN 978-3-642-80561-5. (viii+252 pages) 1st edition
- ^ White, Garland S. (October 1953). "Coded Decimal Number Systems for Digital Computers". Sborník Ústavu radiových inženýrů. Institute of Radio Engineers (IRE). 41 (10): 1450–1452. doi:10.1109/JRPROC.1953.274330. eISSN 2162-6634. ISSN 0096-8390. S2CID 51674710. (3 pages)
- ^ "Different Types of Binary Codes". Electronic Hub. 2019-05-01 [2015-01-28]. Section 2.4 5211 Code. Archivováno from the original on 2017-11-14. Citováno 2020-08-04.
- ^ Paul, Matthias R. (1995-08-10) [1994]. "Unterbrechungsfreier Schleifencode" [Continuous loop code]. 1.02 (in German). Citováno 2008-02-11. (NB. The author called this code Schleifencode (English: "loop code"). It differs from Gray BCD code only in the encoding of state 0 to make it a cyclic unit-distance code for full-circle rotatory applications. Avoiding the all-zero code pattern allows for loop self-testing and to use the data lines for uninterrupted power distribution.)
- ^ Gray, Frank (1953-03-17) [1947-11-13]. Pulse Code Communication (PDF). New York, USA: Bell Telephone Laboratories, Incorporated. U.S. Patent 2,632,058 . Serial No. 785697. Archivováno (PDF) from the original on 2020-08-05. Citováno 2020-08-05. (13 pages)
- ^ Glixon, Harry Robert (March 1957). "Can You Take Advantage of the Cyclic Binary-Decimal Code?". Control Engineering (CtE). Technical Publishing Company. 4 (3): 87–91. ISSN 0010-8049. (5 pages)
- ^ A b C d Savard, John J. G. (2018) [2006]. "Decimal Representations". quadibloc. Archivováno from the original on 2018-07-16. Citováno 2018-07-16.
- ^ Petherick, Edward John (October 1953). A Cyclic Progressive Binary-coded-decimal System of Representing Numbers (Technical Note MS15). Farnborough, UK: Royal Aircraft Establishment (RAE). (4 pages) (NB. Sometimes referred to as A Cyclic-Coded Binary-Coded-Decimal System of Representing Numbers.)
- ^ Petherick, Edward John; Hopkins, A. J. (1958). Some Recently Developed Digital Devices for Encoding the Rotations of Shafts (Technical Note MS21). Farnborough, UK: Royal Aircraft Establishment (RAE).
- ^ A b O'Brien, Joseph A. (May 1956) [1955-11-15, 1955-06-23]. "Cyclic Decimal Codes for Analogue to Digital Converters". Transactions of the American Institute of Electrical Engineers, Part I: Communication and Electronics. Bell Telephone Laboratories, Whippany, New Jersey, USA. 75 (2): 120–122. doi:10.1109/TCE.1956.6372498. ISSN 0097-2452. S2CID 51657314. Paper 56-21. Citováno 2020-05-18. (3 pages) (NB. This paper was prepared for presentation at the AIEE Winter General Meeting, New York, USA, 1956-01-30 to 1956-02-03.)
- ^ A b Tompkins, Howard E. (September 1956) [1956-07-16]. "Unit-Distance Binary-Decimal Codes for Two-Track Commutation". Transakce IRE na elektronických počítačích. Correspondence. Moore School of Electrical Engineering, University of Pennsylvania, Philadelphia, Pennsylvania, USA. EC-5 (3): 139. doi:10.1109/TEC.1956.5219934. ISSN 0367-9950. Citováno 2020-05-18. (1 page)
- ^ Lippel, Bernhard (December 1955). "A Decimal Code for Analog-to-Digital Conversion". Transakce IRE na elektronických počítačích. EC-4 (4): 158–159. doi:10.1109/TEC.1955.5219487. ISSN 0367-9950. (2 pages)
- ^ A b C Susskind, Alfred Kriss; Ward, John Erwin (1958-03-28) [1957, 1956]. "III.F. Unit-Distance Codes / VI.E.2. Reflected Binary Codes". Written at Cambridge, Massachusetts, USA. In Susskind, Alfred Kriss (ed.). Notes on Analog-Digital Conversion Techniques. Technology Books in Science and Engineering. 1 (3. vyd.). New York, USA: Technology Press of the Massachusetts Institute of Technology / John Wiley & Sons, Inc. / Chapman & Hall, Ltd. pp. 3-7–3-8 [3-7], 3-10–3-16 [3-13–3-16], 6-65–6-60 [6-60]. (x+416+2 pages) (NB. The contents of the book was originally prepared by staff members of the Servomechanisms Laboraratory, Department of Electrical Engineering, MIT, for Special Summer Programs held in 1956 and 1957. The code Susskind actually presented in his work as "reading-type code" is shown as code type II here, whereas the type I code is a minor derivation with the two most significant bit columns swapped to better illustrate symmetries.)
- ^ A b Yuen, Chun-Kwong (December 1977). "A New Representation for Decimal Numbers". Transakce IEEE na počítačích. C-26 (12): 1286–1288. doi:10.1109/TC.1977.1674792. S2CID 40879271. Archivováno from the original on 2020-08-08. Citováno 2020-08-08.
- ^ Lucal, Harold M. (December 1959). "Arithmetic Operations for Digital Computers Using a Modified Reflected Binary". Transakce IRE na elektronických počítačích. EC-8 (4): 449–458. doi:10.1109/TEC.1959.5222057. ISSN 0367-9950. S2CID 206673385. (10 pages)
- ^ Dewar, Robert Berriedale Keith; Smosna, Matthew (1990). Microprocessors - A Programmer's View (1. vyd.). Courant Institute, Newyorská univerzita, New York, USA: McGraw-Hill Publishing Company. p. 14. ISBN 0-07-016638-2. LCCN 89-77320. (xviii+462 pages)
- ^ "Chapter 8: Decimal Instructions". IBM System/370 Principles of Operation. IBM. March 1980.
- ^ "Chapter 3: Data Representation". PDP-11 Architecture Handbook. Digital Equipment Corporation. 1983.
- ^ A b VAX-11 Architecture Handbook. Digital Equipment Corporation. 1985.
- ^ "ILE RPG Reference".
- ^ IBM BM 1401/1440/1460/1410/7010 Character Code Chart in BCD Order[trvalý mrtvý odkaz ]
- ^ http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.iceg200%2Fenf.htm[trvalý mrtvý odkaz ]
- ^ "4.7 BCD and packed BCD integers". Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 1: Basic Architecture (PDF). Version 072. 1. Intel Corporation. 2020-05-27 [1997]. pp. 3–2, 4-9–4-11 [4-10]. 253665-072US. Archivováno (PDF) from the original on 2020-08-06. Citováno 2020-08-06. p. 4-10:
[…] When operating on BCD integers in general-purpose registers, the BCD values can be unpacked (one BCD digit per byte) or packed (two BCD digits per byte). The value of an unpacked BCD integer is the binary value of the low halfbyte (bits 0 through 3). The high half-byte (bits 4 through 7) can be any value during addition and subtraction, but must be zero during multiplication and division. Packed BCD integers allow two BCD digits to be contained in one byte. Here, the digit in the high half-byte is more significant than the digit in the low half-byte. […] When operating on BCD integers in x87 FPU data registers, BCD values are packed in an 80-bit format and referred to as decimal integers. In this format, the first 9 bytes hold 18 BCD digits, 2 digits per byte. The least-significant digit is contained in the lower half-byte of byte 0 and the most-significant digit is contained in the upper half-byte of byte 9. The most significant bit of byte 10 contains the sign bit (0 = positive and 1 = negative; bits 0 through 6 of byte 10 are don't care bits). Negative decimal integers are not stored in doplněk dvou formulář; they are distinguished from positive decimal integers only by the sign bit. The range of decimal integers that can be encoded in this format is −1018 + 1 to 1018 − 1. The decimal integer format exists in memory only. When a decimal integer is loaded in an x87 FPU data register, it is automatically converted to the double-extended-precision floating-point format. All decimal integers are exactly representable in double extended-precision format. […]
[12] - ^ url =http://www.tigernt.com/onlineDoc/68000.pdf
- ^ Jones, Douglas W. (2015-11-25) [1999]. "BCD Arithmetic, a tutorial". Arithmetic Tutorials. Iowa City, Iowa, USA: The University of Iowa, Department of Computer Science. Citováno 2016-01-03.
- ^ University of Alicante. "A Cordic-based Architecture for High Performance Decimal Calculations" (PDF). IEEE. Citováno 2015-08-15.
- ^ "Decimal CORDIC Rotation based on Selection by Rounding: Algorithm and Architecture" (PDF). Britská počítačová společnost. Citováno 2015-08-14.
- ^ Mathur, Aditya P. (1989). Introduction to Microprocessors (3. vyd.). Tata McGraw-Hill Publishing Company Limited. ISBN 978-0-07-460222-5.
- ^ 3GPP TS 29.002: Mobile Application Part (MAP) specification (Technická zpráva). 2013. sec. 17.7.8 Common data types.
- ^ "Signalling Protocols and Switching (SPS) Guidelines for using Abstract Syntax Notation One (ASN.1) in telecommunication application protocols" (PDF). p. 15.
- ^ "XOM Mobile Application Part (XMAP) Specification" (PDF). p. 93. Archived from originál (PDF) on 2015-02-21. Citováno 2013-06-27.
- ^ http://www.se.ecu.edu.au/units/ens1242/lectures/ens_Notes_08.pdf[trvalý mrtvý odkaz ]
- ^ MC6818 datasheet
Další čtení
- Mackenzie, Charles E. (1980). Kódované znakové sady, historie a vývoj. Řada programovacích systémů (1. vyd.). Addison-Wesley Publishing Company, Inc. p. xii. ISBN 0-201-14460-3. LCCN 77-90165. Citováno 2016-05-22. [13]
- Richards, Richard Kohler (1955). Arithmetic Operations in Digital Computers. New York, USA: van Nostrand. pp. 397–.
- Schmid, Hermann (1974). Decimal Computation (1. vyd.). Binghamton, New York, USA: John Wiley & Sons. ISBN 0-471-76180-X. a Schmid, Hermann (1983) [1974]. Decimal Computation (1 (reprint) ed.). Malabar, Florida, USA: Robert E. Krieger Publishing Company. ISBN 0-89874-318-4. (NB. At least some batches of the Krieger reprint edition were misprints with defective pages 115–146.)
- Massalin, Henry (October 1987). Katz, Randy (vyd.). "Superoptimizer: A Look at the Smallest Program" (PDF). Proceedings of the Second International Conference on Architectural Support for Programming Languages and Operating Systems ACM SIGOPS Operating Systems Review. 21 (4): 122–126. doi:10.1145/36204.36194. ISBN 0-8186-0805-6. Archivováno (PDF) from the original on 2017-07-04. Citováno 2012-04-25. Shrnutí ležel (1995-06-14). (Also: ACM SIGPLAN Notices, Vol. 22 #10, IEEE Computer Society Press #87CH2440-6, October 1987)
- Shirazi, Behrooz; Yun, David Y. Y.; Zhang, Chang N. (March 1988). VLSI designs for redundant binary-coded decimal addition. IEEE Seventh Annual International Phoenix Conference on Computers and Communications, 1988. IEEE. pp. 52–56.
- Hnědý; Vranesic (2003). Fundamentals of Digital Logic.
- Thapliyal, Himanshu; Arabnia, Hamid R. (November 2006). Modified Carry Look Ahead BCD Adder With CMOS and Reversible Logic Implementation. Proceedings of the 2006 International Conference on Computer Design (CDES'06). CSREA Press. pp. 64–69. ISBN 1-60132-009-4.
- Kaivani, A.; Alhosseini, A. Zaker; Gorgin, S.; Fazlali, M. (December 2006). Reversible Implementation of Densely-Packed-Decimal Converter to and from Binary-Coded-Decimal Format Using in IEEE-754R. 9th International Conference on Information Technology (ICIT'06). IEEE. pp. 273–276.
- Cowlishaw, Mike F. (2009) [2002, 2008]. "Bibliography of material on Decimal Arithmetic – by category". General Decimal Arithmetic. IBM. Citováno 2016-01-02.
externí odkazy
- Cowlishaw, Mike F. (2014) [2000]. "A Summary of Chen-Ho Decimal Data encoding". General Decimal Arithmetic. IBM. Citováno 2016-01-02.
- Cowlishaw, Mike F. (2007) [2000]. "A Summary of Densely Packed Decimal encoding". General Decimal Arithmetic. IBM. Citováno 2016-01-02.
- Convert BCD to decimal, binary and hexadecimal and vice versa
- BCD for Java