BCD

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Binary Coded Decimal (zkráceně BCD, dvojkově reprezentované dekadické číslo) je způsob kódování celých čísel s využitím pouze desítkových číslic (0-9), a to už na úrovni čtveřic bitů (nibblů) tím způsobem, že každý nibble odpovídá jedné desítkové číslici.

Hodnoty[editovat | editovat zdroj]

Vzhledem k tomu, že existuje šestnáct různých kombinací čtyř bitů, a desítkových číslic je jen deset, je šest kombinací nevyužito. V porovnání s hexadecimální soustavou, kde je pro každé čtyři bity využíváno všech šestnáct hodnot (1010 až 1510 jako písmena AH až FH), je BCD kód z hlediska využití paměti neúsporný. BCD kód zneefektivňuje využití paměti, realizuje právě opačnou myšlenku než Huffmanovo kódování.

Že je číslo v BCD kódu, je podstatná apriorní informace: Bez její znalosti by se totiž bitový zápis mohl jevit jako obyčejné hexa číslo. To by sice nebyl rozdíl v případě jediného nibblu, ale pro celý byte nebo dokonce pro vícebytové reprezentace hodnot už na znalosti způsobu kódování záleží: Z BCD a hexa vyplývají jiné hodnoty. Například (1001 1001)2 dává hodnotu (99)10 pro BCD kód, ale hodnotu (153)10 pro ryzí hexa (0x99).

Přirozená hodnota BCD kód
bin hexa dekadická dekadická zacyklení přetečení
0000 0 0 0 první hodnota,
umělé zacyklení zpět na 9
-1
umělý převod z vyššího řádu
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
1000 8 8 8
1001 9 9 9 poslední hodnota,
umělé zacyklení dál na 0
+1
umělý přechod na vyšší řád
1010 A 10 neplatná hodnota, nevyužívaná paměť
1011 B 11 neplatná hodnota, nevyužívaná paměť
1100 C 12 neplatná hodnota, nevyužívaná paměť
1101 D 13 neplatná hodnota, nevyužívaná paměť
1110 E 14 neplatná hodnota, nevyužívaná paměť
1111 F 15 neplatná hodnota, nevyužívaná paměť

Čítače[editovat | editovat zdroj]

V praxi se BCD kód používá v úlohách zobrazování hodnot ze strojové paměti do lidsky čitelné podoby, tedy v situacích, kdy se hodnota v paměti mění, jako například v čítačích. Na rozdíl od plného hexa čísla se pro BCD kódování sekvenčním obvodem ještě uměle zavádí nové vazby zacyklení:

a) v rámci zkráceného cyklu jednoho řádu z 9 rovnou na 0 dalšího cyklu, místo aby zafungovala přirozená hexa vazba až z A,
b) a s tím souvisí i umělé zajištění přesunu přírůstku +1, přetečení, z jednoho řádu na vyšší opět už z hodnoty 9.

Navíc tyto vazby musí zafungovat i při odpočtu, tedy při snižování hodnoty v paměti o -1.

Příklad
Číslo 29 se pomocí BCD kóduje jako "0010 1001", každá čtveřice bitů odpovídá jedné decimální číslici: Hexa zápis po BCD zakódování je 29, tedy už lidsky čitelný, ačkoli původní hexa zápis je 0x1D.