|
Serwis Edukacyjny Nauczycieli I-LO w Tarnowie
Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2026 mgr Jerzy Wałaszek
|
Istnieje wiele przykładów urządzeń, w których zastosowanie czystego kodu dwójkowego jest nieekonomiczne z uwagi na ciągłą konieczność przeliczania liczb pomiędzy systemami dziesiętnym i dwójkowym. Są to różnego rodzaju liczniki, kasy sklepowe, kalkulatory, wagi itp. Dla nich opracowano specjalny kod zwany systemem dziesiętnym kodowanym dwójkowo - BCD (ang. Binary Coded Decimal).
| Kody cyfr dziesiętnych w systemie BCD |
|
|---|---|
| cyfra | kod BCD |
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
Idea kodu jest bardzo prosta - dwójkowo zapisujemy nie wartość liczby lecz jej cyfry dziesiętne. Każda cyfra dziesiętna może być przedstawiona w postaci wartości w naturalnym kodzie binarnym. Do tego celu potrzebne są 4 bity. Kody poszczególnych cyfr przedstawiliśmy w tabelce obok.
Aby odczytać wartość liczby BCD wystarczy podzielić jej kod na grupy 4 bitowe. Każdą grupę zamieniamy zgodnie z tabelką na cyfrę dziesiętną i otrzymujemy zapis liczby w systemie dziesiętnym:
Przykład:
W odwrotną stronę jest również prosto - każdą cyfrę dziesiętną zastępujemy 4 bitami z tabelki i otrzymujemy kod BCD:
Jeśli bity liczby BCD zostaną przekonwertowane na system szesnastkowy, to otrzymane cyfry szesnastkowe odpowiadają dokładnie cyfrom dziesiętnym wartości liczby BCD. Z tej własności często korzystają programiści zapisując kod BCD właśnie w systemie szesnastkowym.
Kod BCD nie jest kodem efektywnym, ponieważ nie wykorzystuje wszystkich możliwych kombinacji bitów w słówkach kodowych - sprawdź to w tabelce. Wynika z tego oczywisty wniosek, iż niektóre słowa kodowe nie są dozwolone, gdyż nie reprezentują cyfr dziesiętnych:
Przykład:
8 bitowa liczba BCD zawiera dwie cyfry dziesiętne, zatem może przyjąć wartości z zakresu od 00 do 99, co daje 100 słów kodowych. Tymczasem 8 bitów można ze sobą połączyć na 256 (28) sposobów. Zatem 156 słów kodowych nie będzie wykorzystanych przez kod BCD - to więcej niż połowa? A jak sprawa ta przedstawia się dla 16 bitów, 24 bitów i 32 bitów?
Cóż, czasami za wygodę w jednej dziedzinie, musimy coś poświęcić w innej dziedzinie. Ostatecznie nadmiarowe słówka kodowe można wykorzystać do kontroli poprawności kodu BCD - jeśli otrzymamy zabronioną kombinację bitów, to od razu wiemy, że coś poszło źle.
Podchodząc do zagadnienia w sposób formalny, możemy wyprowadzić wzór, który na podstawie stanu bitów liczby BCD pozwoli nam obliczyć jej wartość dziesiętną. W tym celu rozważmy wagi pozycji 12-bitowej liczby BCD:
| Cyfra dziesiętna | d2 | d1 | d0 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Waga pozycji |
800 10223 |
400 10222 |
200 10221 |
100 10220 |
80 10123 |
40 10122 |
20 10121 |
10 10120 |
8 10023 |
4 10022 |
2 10021 |
1 10020 |
| Cyfra dwójkowa | b11 | b10 | b9 | b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
Waga i-tej pozycji w kodzie BCD ma wartość 10[i/4] · 2i mod 4. Wobec tego wzór na wartość n-bitowej liczby BCD jest następujący:
Wzór do najprostszych nie należy i osobiście wątpię, czy ktokolwiek chciałby go używać. Szybciej znajdziemy wartość liczby grupując bity i zamieniając je na cyfry dziesiętne.
Najmniejszą wartość liczba BCD osiągnie dla wszystkich bitów równych 0. Czyli:
W celu wyznaczenia górnej granicy obliczamy liczbę d pełnych cyfr dziesiętnych zakodowanych w czwórkach bitów liczby BCD. Liczbę tę znajdziemy jako część całkowitą z dzielenia n przez 4:
Każda pozycja dziesiętna może przyjąć maksymalnie wartość 9. I tak:
Widzimy, że górny kres jest równy:
Może się okazać, iż liczba BCD zawiera więcej bitów niż wielokrotność 4. W takim przypadku najstarsze bity (których może być 0,1,2 lub 3) tworzą maksymalnie cyfrę o wartości:
Po zsumowaniu otrzymujemy ostatecznie:
Zapameiętaj:Zakres n-bitowych liczb w kodzie BCD wynosi Z(BCD)= 0 ... 10[n : 4] · 2n mod 4- 1 |
Przykład:
Obliczyć zakres 10-bitowych liczb zapisanych w kodzie BCD.
Ponieważ liczby w kodzie BCD nie są naturalnymi liczbami dwójkowymi, zatem nie można nad nimi wykonywać normalnych działań arytmetycznych. Sprawdźmy:
Po wykonaniu standardowej operacji nad liczbami w kodzie BCD należy sprawdzić i w razie potrzeby skorygować wynik. Dla dodawania i odejmowania korekcja będzie potrzebna wtedy, gdy dana grupa bitów reprezentujących cyfrę dziesiętną ma wartość większą od 9 (binarnie 1001). W takiej sytuacji do grupy tej należy dodać (dla odejmowania odjąć) wartość binarną 0110 (dziesiętnie 6). Sprawdźmy ponownie (kolorem czerwonym zaznaczyliśmy korekcję wyniku):
Korekcja musi również wystąpić, gdy w trakcie dodawania wystąpiło przeniesienie (przy odejmowaniu pożyczka) do sąsiedniej grupy bitów. Np:
Zapamiętaj:W systemie BCD korekcja przy dodawaniu polega na dodaniu (lub odjęciu przy odejmowaniu) do grupy bitów reprezentujących cyfrę dziesiętną liczby 0110 (6). Korekcję wykonujemy, gdy po operacji arytmetycznej:
|
Zaproponuj system zapisu liczb BCD ze znakiem. Określ reguły arytmetyki takich liczb.
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.