I. Podstawowe pozycyjne systemu liczbowego.
a) Dziesiętny system liczbowy DEC
- każdą liczbie w tym systemie zapisuje się przy pomocy dziesięciu cyfr,
- Podstawa systemu dziesiętnego (DEC) p=10,
- W zależności od pozycji w liczbie dana cyfra może mieć różną wagę w=pi w=10i
10 cyfr (0,1,2,3,4,5,6,7,8,9)
273,49DEC = 2*102+7*101+3*100+4*10-1+9*10-2
b) Szesnastkowy system liczbowy (Heksadecymalny) HEX
- każdą liczbie w tym systemie zapisuje się przy pomocy szesnastu cyfr,
- Podstawa systemu szesnastkowego (HEX) p=16,
- W zależności od pozycji w liczbie dana cyfra może mieć różną wagę w=pi w=16i
16 cyfr (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)
123HEX=3*160+2*161+1*162=291DEC
c) Ósemkowy system liczbowy OCT
- każdą liczbie w tym systemie zapisuje się przy pomocy ośmiu cyfr,
- Podstawa systemu ósemkowego (OCT) p=8,
- W zależności od pozycji w liczbie dana cyfra może mieć różną wagę w=pi w=8i
8 cyfr (0,1,2,3,4,5,6,7)
123OCT=3*80+2*81+1*82=83DEC
d) Dwójkowy system liczbowy (Binarny) BIN
- każdą liczbie w tym systemie zapisuje się przy pomocy dwóch cyfr,
- Podstawa systemu binarnego (BIN) p=2,
- W zależności od pozycji w liczbie dana cyfra może mieć różną wagę w=pi w=2i
2 cyfry (0,1)
1011BIN=1*20+1*21+0*22+1*23=11DEC
Tabela zawierająca skonwertowane wartości liczb DEC z zakresu od 0 do 15:
II. Konwersja
a) BIN->DEC, OCT->DEC, HEX->DEC
Konwersja ta polega na mnożeniu cyfr z ich wagami i następnym zsumowaniu otrzymanych wyników.Wagę obliczamy ze wzoru W = pi
- wag,
- podstawa,
- pozycja cyfry (zaczynając numeracje od zera)
Przykład konwersji BIN->DEC, OCT->DEC, HEX->DEC:
b) DEC->BIN, DEC->OCT, DEC->HEX
Aby dokonać konwersji liczby z systemu dziesiętnego na dowolnie inny system należy podzielić liczbę dziesiętną przez podstawę systemu na jaki konwertujemy. Po operacji dzielenia otrzymamy wynik wraz z resztą dzielenia. Wynik dzielenia jest używany do kolejnego dzielenia przez podstawę natomiast reszta z dzielenia tworzy wynik konwersji, operacje dzielenia powtarza się do momentu aż wynik będzie równy 0.
Przykład konwersji DEC->BIN, DEC->OCT, DEC->HEX:
c) BIN->HEX, BIN->OCT
W przypadku konwersji BIN->HEX bity liczby BIN grupujemy w pół bajty (kęsy) poczynając od LSB. Każdy pół bajt zapisujemy osobno jako cyfrę HEX. W przypadku konwersji BIN->OCT postępujemy podobnie z tym że używamy trzech bitów.
d) HEX->BIN, OCT->BIN
W przypadku konwersji HEX->BIN każda cyfrę liczby HEX zapisujemy w postaci czterobitowej. Jeśli konwertujemy OCT->BIN kolejne cyfry zapisujemy w postaci trzy bitowej.
Przykład konwersji HEX->BIN, OCT->BIN:
III. Podstawowe kody
a) Kod dwójkowo-dziesiętny BCD
W Kodzie BCD każdą cyfrę liczby dziesiętnej zapisuje się w postaci dwójkowej czterobitowej oddzielnie. Kod ten używany jest w przypadkach gdy zachodzi potrzeba posługiwania się cyframi dziesiętnymi np. w celu wyświetlenia liczby DEC na wyświetlaczu.
Przykład zapisu w kodzie BCD:
b) Kod znak – moduł Z-M
Najstarszy bit jest znakiem liczby pozostałe bity decydują o wartości liczby.
Przykład zapisu w kodzie znak – moduł:
c) Kod uzupełnienie do dwóch U-2
Aby zamienić dodatnią liczbę dziesiętna na U-2 kodujemy ją tak samo jak w kodzie Z-M np. +3DEC to 0011U-2, natomiast jeśli liczba jest ujemna postępujemy według następującego algorytmu:
- wartość bezwzględną liczby zapisujemy przy pomocy tylu bitów iloma dysponujemy (Krok 1),
- negujemy wszystkie bity otrzymanej liczby (Krok 2),
- do otrzymanej liczby dodajemy jeden (Krok 3).
d) Kod 1zN
Aby zamienić liczbę DEC na kod 1zN należy przypisać wartość jeden bitowi, który jest wskazywany przez wartość liczby DEC.
Przykładowe konwersje w przypadku kodu 1z10:
e) Pozostałe kody
Kod Graya dwie sąsiednie liczby kodowe różnią się jedynie na jednej pozycji. Kod wykorzystuje się w celu uniknięcia błędów podczas odczytu danych z poruszającego się nośnika,
- Kod 2z5 jest wykorzystywany przede wszystkim do transmisji danych (pozwala na detekcje błędu który może powstać na skutek zakłóceń),
- Kod Hamminga pozwala na detekcje błędu powstałego podczas transmisji danych i jego usunięcie.
- Kod Johnsona jest to odmiana kodu BCD łatwo ją dekodować,
- Kod Aikena jest odmiana kodu BCD wykorzystuje się go przy operacjach matematycznych.
Teksty źródłowe:
- Andrzej Rydzewski: Mikrokontrolery jednoukładowe rodziny MCS-51. Warszawa, Wydawnictwo Naukowo-Techniczne 1999.
- Wojciech Głocki: Układy cyfrowe.Warszawa,Wydawnictowo Szkolne i Pedagogiczne 1998.