Kod BCD (ang. binary-coded decimal, czyli zapis dziesiętny kodowany dwójkowo[1] lub kod dwójkowo-dziesiętny[2]) – sposób zapisu liczby polegający na zakodowaniu kolejnych cyfr dziesiętnych tej liczby w systemie dwójkowym, przy użyciu tylko czterech młodszych bitów (zob. półbajt)[2]. Stosowany jest on głównie w elektronice i informatyce. Taki zapis pozwala na łatwą konwersję liczby do i z systemu dziesiętnego, jednak jego niedogodnością jest istniejąca nadmiarowość (wykorzystuje tylko 10 czterobitowych kombinacji z 16 możliwych).

Dwa zegary pokazujące ten sam czas, po prawej wskazanie w BCD8421, na nim od lewej: godziny (dziesiątki i jedności), minuty (d. i j.) i sekundy (d. i j.); dziesiątki godzin kodowane są tylko dwoma najmłodszymi bitami (wskazanie nigdy nie jest większe od 2), a minut i sekund – trzema najmłodszymi (wskazanie nigdy nie jest większe od 5).

Kod BCD jest obecnie stosowany głównie w urządzeniach elektronicznych z wyświetlaczem cyfrowym (np. w kalkulatorach, miernikach cyfrowych) i w zastosowaniach finansowych informatyki (ujednoznacznia zapis części ułamkowych kwot i ułatwia dziesiętne zaokrąglanie).

We współczesnych komputerach używane są dwa sposoby zapisu liczb w kodzie BCD na ośmiobitowych bajtach (zob. oktet):

  1. użycie tylko czterech najmłodszych bitów do zapisu pojedynczej cyfry[1]; 4 starsze są wtedy ustawiane na jakąś konkretną wartość (np. 1111 jak w EBCDIC, 0011 jak w ASCII, czy 0000),
  2. zapis dwóch cyfr w każdym bajcie (bardziej znacząca w starszym półbajcie, a mniej znacząca w młodszym); jest to tak zwane spakowane BCD[1] (ang. packed BCD).

Wiele mikroprocesorów (w tym wszystkie wywodzące się od Intel 8080[3]) posiada rozkazy i tak zwane flagi umożliwiające dodawanie i odejmowanie liczb BCD w wersji spakowanej[2].

Warianty kodu

edytuj

Z zależności od zastosowania, poszczególne cyfry mogą być kodowane w inny niż dwójkowo sposób, stąd rozróżnia się wiele wariantów BCD (dla uściślenia wersja podstawowa zwana jest też BCD 8421 lub NBCD):

  |       BCD    Excess-3   BCD      BCD    IBM 1401
  | Wagi: 8421              2421    84-2-1    8421
-------------------------------------------------
0 |       0000     0011     0000     0000     1010
1 |       0001     0100     0001     0111     0001
2 |       0010     0101     0010     0110     0010
3 |       0011     0110     0011     0101     0011
4 |       0100     0111     0100     0100     0100
5 |       0101     1000     1011     1011     0101
6 |       0110     1001     1100     1010     0110
7 |       0111     1010     1101     1001     0111
8 |       1000     1011     1110     1000     1000
9 |       1001     1100     1111     1111     1001

Przykładowo, liczba 127 w podstawowym wariancie BCD wygląda następująco:

0001 0010 0111

Przypisy

edytuj
  1. a b c Syck 1994 ↓, s. 116.
  2. a b c Markowski, Rydzewski i Kruszyński 1989 ↓, s. 30.
  3. Syck 1994 ↓, s. 116-117.

Bibliografia

edytuj