Kod BCD

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
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).

BCD (ang. Binary-Coded Decimal), czyli system dziesiętny zakodowany dwójkowo) – 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. nibble). 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 układów z 16 możliwych).

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; 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 (ang. packed BCD).

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

Warianty kodu[edytuj | edytuj kod]

Z zależności od zastosowania, poszczególne cyfry mogą być kodowane w inny niż dwójkowo sposób, stąd też 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

Zobacz też[edytuj | edytuj kod]