BCD

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 

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 hotnotu (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

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 +1př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.