Naturalny kod dwójkowy
kod Gray'a
(wagowy)
(niewagowy)
kod 1 z 10
NKB 8 4 2 1
0
0 0 0 0
0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1
1
0 0 0 1
1 0 0 0 1
1 0 0 0 0 0 0 0 0 1 0
2
0 0 1 0
2 0 0 1 1
2 0 0 0 0 0 0 0 1 0 0
3
0 0 1 1
3 0 0 1 0
3 0 0 0 0 0 0 1 0 0 0
4
0 1 0 0
4 0 1 1 0
4 0 0 0 0 0 1 0 0 0 0
5
0 1 0 1
5 0 1 1 1
5 0 0 0 0 1 0 0 0 0 0
6
0 1 1 0
6 0 1 0 1
6 0 0 0 1 0 0 0 0 0 0
7
0 1 1 1
7 0 1 0 0
7 0 0 1 0 0 0 0 0 0 0
8
1 0 0 0
8 1 1 0 0
8 0 1 0 0 0 0 0 0 0 0
9
1 0 0 1
9 1 1 0 1
9 1 0 0 0 0 0 0 0 0 0
10
1 0 1 0
10 1 1 1 1
11
1 0 1 1
11 1 1 1 0
12
1 1 0 0
12 1 0 1 0
13
1 1 0 1
13 1 0 1 1
14
1 1 1 0
14 1 0 0 1
15
1 1 1 1
15 1 0 0 0
kod 2 z 5
kod 2 z 7
0 0 0 0 1 1
0 0 1 0 0 0 0 1
1 0 0 1 0 1
1 0 1 0 0 0 1 0
2 0 1 0 0 1
2 0 1 0 0 1 0 0
3 1 0 0 0 1
3 0 1 0 1 0 0 0
4 0 0 1 1 0
4 0 1 1 0 0 0 0
5 0 1 0 1 0
5 1 0 0 0 0 0 1
6 1 0 0 1 0
6 1 0 0 0 0 1 0
7 0 1 1 0 0
7 1 0 0 0 1 0 0
8 1 0 1 0 0
8 1 0 0 1 0 0 0
9 1 1 0 0 0
9 1 0 1 0 0 0 0
Kody dwójkowo-dziesiętne
NKB
Aikena
Johnsona
+3 (z nadmiarem3)
8 4 2 1
2 4 2 1
pseudopierścieniowy
0 0 0 0 0
0 0 0 0
0 0 1 0
0 0 0 0 0
1 0 0 0 1
0 0 0 1
0 0 1 1
0 0 0 0 1
2 0 0 1 0
0 0 1 0
0 1 0 0
0 0 0 1 1
3 0 0 1 1
0 0 1 1
0 1 0 1
0 0 1 1 1
4 0 1 0 0
0 1 0 0
0 1 1 0
0 1 1 1 1
5 0 1 0 1
0 1 0 1
0 1 1 1
1 1 1 1 1
6 0 1 1 0
0 1 1 0
1 0 0 0
1 1 1 1 0
7 0 1 1 1
0 1 1 1
1 0 0 1
1 1 1 0 0
8 1 0 0 0
1 1 1 0
1 0 1 0
1 1 0 0 0
9 1 0 0 1
1 1 1 1
1 0 1 1
1 0 0 0 0
kody wagowe
kody niewagowe
1
kody detekcyjne
kod z kontrolą parzystości
0
0 0 0 0 0
1
1 0 0 0 1
2
1 0 0 1 0
3
0 0 0 1 1
4
1 0 1 0 0
5
0 0 1 0 1
6
0 0 1 1 0
7
1 0 1 1 1
8
1 1 0 0 0
9
0 1 0 0 1
10
0 1 0 1 0
11
1 1 0 1 1
12
0 1 1 0 0
13
1 1 1 0 1
14
1 1 1 1 0
15
0 1 1 1 1
bit parzystości
Konwertowanie liczb
Konwersja BIN na DEC
2048 1024 512 256 128 64 32 16 8 4 2 1
1
0
1 1 0 1 1 1 0
0
0
0
256
0
64 32 0 8 4 2 0
101101110B = 366D
Konwersja BIN na HEX
2048 1024 512 256 128 64 32 16 8 4 2 1
1
0
1 1 0 1 1 1 0
1
6
14
1
6
E
101101110B = 16EH
konwersja DEC na BIN
liczby mniejsze niż 4096
923
461
1
461
230
1
923D =
1110011011B
230
115
0
115
57
1
57
28
1
28
14
0
14
7
0
7
3
1
3
1
1
1
0
1
0
0
2
konwersja DEC na HEX
liczby mniejsze niż 1 000 000 000
923
57
B
57
3
9
923D = 39BH
3
0
3
0
0
Dodawanie 2 liczb w kodzie BCD
Aby wykonać dodawanie 2 liczb w kodzie BCD należy wykonać następujące czynności: 1. zamienić każdą z liczb dziesiętnych na kod BCD (oddzielnie każdą cyfrę) 2. dodać tetradami otrzymane liczby
3. sprawdzić czy otrzymany wynik w dane tetradzie nie jest większy od 1001
a. jeżeli nie – to do otrzymanego wyniku dodajemy 0
b. jeżeli tak – to do otrzymanego wyniku dodajemy 0110 (korekta dziesiętna) 4. jeżeli w wyniku zsumowania korekty dziesiętnej otrzymamy przeniesienie to dodajemy je do następnej tetrady.
5. jeżeli w wyniku zsumowania w którejkolwiek tetradzie otrzymamy wynik większy od 1001 to wykonujemy punkt 3
6. otrzymany wynik zamieniamy na cyfry w systemie dziesiętnym Przykłady:
1.
427 + 281
2.
348 + 179
3.
664 + 337
4.
295 + 189
5.
378 + 249
6.
791 + 124
7.
593 + 79
8.
189 + 295
9.
241 + 457
10.
328 + 277
11.
194 + 637
12.
728 + 96
Odejmowanie 2 liczb w kodzie BCD (wynik dodatni)
Aby wykonać odejmowanie 2 liczb w kodzie BCD z wynikiem dodatnim należy wykonać następujące czynności: 1. Zamienić każdą z liczb dziesiętnych na kod BCD (oddzielnie każdą cyfrę) 2. Przekonwertować odjemnik na Uzupełnienie do jedynki (U-1) 3. Dodać tetradami otrzymane liczby
4. Otrzymane przeniesienia dodać do starszych tetrad. Przeniesienie w najwyższej tetradzie to oznacza, że: a. wynik działania będzie dodatni
b. przeniesienie to należy dodać do najmłodszej tetrady 5. Do wszystkich tetrad, w których nie nastąpiło przeniesienie dodać korektę dziesiętną 1010 a do pozostałych dodać 0000
6. W otrzymanym wyniku pominąć uzyskane przeniesienia 7. Przekonwertować otrzymany wynik na liczbę dziesiętną Przykłady:
1. 546 – 251
2. 378 – 221
3. 698 – 475
4. 541 – 427
5. 328 – 277
6. 674 – 328
7. 448 – 297
8. 2435 - 1076
3
Odejmowanie 2 liczb w kodzie BCD (wynik ujemny) Aby wykonać odejmowanie 2 liczb w kodzie BCD z wynikiem ujemnym należy wykonać następujące czynności: 1. Zamienić każdą z liczb dziesiętnych na kod BCD (oddzielnie każdą cyfrę) 2. Przekonwertować odjemnik na Uzupełnienie do jedynki (U-1) 3. Dodać tetradami otrzymane liczby
4. Otrzymane przeniesienia dodać do starszych tetrad. W najstarszej tetradzie przeniesienie nie wystąpiło (wynik będzie ujemny).
5. Ponieważ wynik jest ujemny więc to co otrzymaliśmy jest zapisane w systemie Uzupełnienie do 1 i należy dokonać konwersji otrzymanej liczby do postaci normalnej
6. Do wszystkich tetrad, w których wystąpiło przeniesienie należy dodać korektę dziesiętną 1010 a do pozostałych tetrad dodać 0000
7. W otrzymanym wyniku pominąć uzyskane przeniesienia 8. Przekonwertować otrzymany wynik na liczbę dziesiętną Przykłady:
1. 571 – 634
2. 247 – 492
3. 210 – 394
4. 428 – 707
5. 1076 – 2435
6. 457 – 241
7. 295 – 189
8. 194 – 637
Odejmowanie 2 liczb w kodzie BCD (ogólnie)
Aby wykonać odejmowanie 2 liczb w kodzie BCD należy wykonać następujące czynności: 1. zamienić każdą z liczb dziesiętnych na kod BCD (oddzielnie każdą cyfrę) 2. przekonwertować odjemnik na Uzupełnienie do jedynki (U-1) 3. dodać tetradami otrzymane liczby
4. otrzymane przeniesienia dodać do starszych tetrad.
Jeżeli wystąpi przeniesienie w najwyższej tetradzie to oznacza, że: c. wynik działania będzie dodatni
d. przeniesienie to należy dodać do najmłodszej tetrady W zależności od wystąpienia przeniesienia na najwyższej tetradzie kolejne czynności będą różne.
I.
gdy przeniesienie występuje (wynik dodatni)
5. do wszystkich tetrad, w których nie nastąpiło przeniesienie dodać korektę dziesiętną 1010 a do pozostałych dodać 0000
6. w otrzymanym wyniku pominąć uzyskane przeniesienia 7. przekonwertować otrzymany wynik na liczbę dziesiętną II.
gdy przeniesienia nie ma (wynik ujemny)
5. ponieważ wynik jest ujemny więc to co otrzymaliśmy jest zapisane w systemie uzupełnienie do 1 i należy dokonać konwersji otrzymanej liczby do postaci normalnej 6. do wszystkich tetrad, w których wystąpiło przeniesienie należy dodać korektę dziesiętną 1010 a do pozostałych tetrad dodać 0000
7. w otrzymanym wyniku pominąć uzyskane przeniesienia 8. przekonwertować otrzymany wynik na liczbę dziesiętną Mnożenie liczb w systemie dwójkowym
Aby pomnożyć dwie liczby dwójkowe należy wykonać następujące czynności: 1. Zamienić liczby na system dwójkowy
2. Określić ile maksymalnie cyfr będzie w otrzymanym wyniku. Jest to suma cyfr obu mnożonych liczb.
3. Wyzerować rejestr wyniku.
4. Określić, którą liczbę analizujemy (liczba 1), a którą dodajemy (liczba 2) do rejestru wyniku.
5. Rozpocząć analizę liczby 1 od najstarszego bitu (z lewej strony).
6. Wykonać przesunięcie całego rejestru wynikowego cyklicznie w lewą stronę (wszystkie bity przesunąć o jeden w lewo a najstarszy przenieść na koniec rejestru).
7. Do rejestru wyniku dodajemy liczbę 2 pomnożoną przez analizowany bit liczby 1 – dodajemy liczbę 2 lub 0 (zero).
8. Przesuwamy się w analizowanej liczbie o jeden bit w prawo i wykonujemy ponownie punkty od p. 6
9. Cykl przeniesienia i dodawania wykonujemy tyle razy ile jest bitów w analizowanej liczbie.
W celu przyspieszenia operacji mnożenia liczb analizować należy liczbę posiadającą mniej bitów. Wtedy wykonujemy mniej cykli
„przenieś-dodaj”.
4
liczba 1 = (101)B
liczba 2 = (1011)B
Rejestr wyniku = 0000000 (7 bitów)
0000000
101
0000000
1 bit liczby 1 = 1
I cykl
+ 1011
0001011
0010110
2 bit liczby 1 = 0
II cykl
+ 0000
0010110
0101100
3 bit liczby 1 = 1
III cykl
+ 1011
0110111
szukany wynik
Do zrobienia:
1. 23*29
2. 21*30
3. 27*39
Odejmowanie BCD z wykorzystaniem kody Z Nadmiarem 3 (+3) – wynik dodatni 1. Przetworzyć wszystkie liczby na kod z nadmiarem 3
2. Odjemnik za mienić na uzupełnienie do 1 i odejmowanie zamienić dodawaniem 3. dodać liczby
4. Ewentualne przeniesienia dodać do starszych tetrad a przeniesienie występujące w najstarszej tetradzie dodać do tetrady najmłodszej.
5. Do otrzymanego wyniku dodać korekty:
a. gdy przeniesie nie wystąpiło dodać 1101 do danej tetrady b. gdy przeniesienie wystąpiło dodać 0011 do danej tetrady 6. Ewentualne przeniesienia, które wystąpiły przy dodawaniu korekt należy pominąć i resztę przetworzyć na cyfry dziesiętne wyniku
Przykłady:
1. 831 – 374
2. 475 – 292
3. 342 – 197
5