Kody liczbowe
Naturalny Kod Binarny (NKB)
Naturalny kod binarny (NKB) otrzymamy, je
ś
li
zapiszemy liczb
ę
w dwójkowym pozycyjnym systemie
liczbowym
1111
15
0111
7
1110
14
0110
6
1101
13
0101
5
1100
12
0100
4
1011
11
0011
3
1010
10
0010
2
1001
9
0001
1
1000
8
0000
0
NKB
L
(10)
NKB
L
(10)
Naturalny Kod Binarny (NKB)
Zakres liczb przedstawianych w naturalnym kodzie binarnym
za pomoc
ą
n bitów wynosi: 0
≤
L
≤
2
n
-1
0 ÷ 4 294 967 295
4 294 967 296
32
0 ÷ 65 535
65 536
16
0 ÷ 1 023
1 024
10
0 ÷ 255
256
8
0 ÷ 31
32
5
0 ÷ 15
16
4
0 ÷ 7
8
3
0 ÷ 3
4
2
0 ÷ 1
2
1
Zakres liczb
2
n
Liczba bitów n
Kody BCD
Binary Coded Decimal
Cyfry dziesi
ę
tne s
ą
kodowane czterobitowym kodem
binarnym
Łatwa konwersja liczb do i z systemu dziesi
ę
tnego
Jest kodem nadmiarowym (wykorzystuje tylko 10
czterobitowych układów z 16 mo
ż
liwych )
Zastosowanie
urz
ą
dzenia elektroniczne z wy
ś
wietlaczem cyfrowym (np.
kalkulatory, mierniki cyfrowe)
zastosowania finansowe informatyki (ujednoznacznia zapis
cz
ęś
ci ułamkowych kwot i ułatwia dziesi
ę
tne zaokr
ą
glanie)
Wiele procesorów posiada rozkazy umo
ż
liwiaj
ą
ce
wykonanie operacji arytmetycznych w kodzie BCD
Kody BCD
Zalety:
prostsza konwersja do postaci dogodnej do wy
ś
wietlenia
niektóre warto
ś
ci niecałkowite (np. 0,2) maj
ą
w kodzie BCD,
w przeciwie
ń
stwie do NKB, sko
ń
czon
ą
reprezentacj
ę
, dzi
ę
ki
temu system BCD wprowadza mniejsze bł
ę
dy oblicze
ń
mniejsze bł
ę
dy zaokr
ą
glenia liczb w systemie o podstawie
dziesi
ęć
Wady:
operacje arytmetyczne w kodzie BCD s
ą
bardziej
skomplikowane i wolniejsze ni
ż
w NKB, wymagaj
ą
korekcji
dziesi
ę
tnej
Naturalny kod BCD (8421)
Cyfry dziesi
ę
tne s
ą
kodowane w NKB
Nazwa BCD 8421 pochodzi od pierwszych czterech
wag w systemie dwójkowym naturalnym
1000
8
1001
9
0111
7
0110
6
0101
5
0100
4
0011
3
0010
2
0001
1
0000
0
BCD 8421
Cyfra (10)
Naturalny kod BCD (8421)
7249
(10)
= 0111 0010 0100 1001
(BCD)
1000 0110 0111 0010 0101
(BCD)
= 86725
(10)
Formaty BCD
Format upakowany
–
2 cyfry dziesi
ę
tne w
jednym bajcie
Format nieupakowany
–
jedna cyfra
dziesi
ę
tna w bajcie
1
0
0
0
0
1
0
1
0
0
0
1
0
1
0
1
1
0
0
0
0
0
0
1
8
5
1
5
8
1
185
(10)
Dodawanie liczb BCD
Dodawanie liczb BCD polega na wykonaniu
zwykłego binarnego dodawania, po którym
wykonuje si
ę
korekcja dziesi
ę
tna
otrzymanego wyniku
Korekcja dziesi
ę
tna przy dodawaniu polega
na dodaniu liczby 6
(10)
(
0110
(2)
) do tych cyfr
dziesi
ę
tnych wyniku
których warto
ść
okazała si
ę
wi
ę
ksza od 9
(nieprawidłowa warto
ść
cyfry dziesi
ę
tnej)
lub
podczas dodawania powstało przeniesienie ze
starszego bitu tetrady
Rejestr znaczników procesora
CF – Carry Flag
–
przeniesienie
AF – Auxiliary Carry Flag
–
przeniesienie
pomocnicze
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
NT
OF DF IF TF S F ZF
AF
PF
CF
IOPL
FLAGS
0
1
2
3
4
5
6
7
AF=1
CF=1
Dodawanie upakowanych liczb BCD
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
1
+
0
0
0
0
0
0
1
1
0
1
0
1
1
0
0
1
0
0
0
0
1
1
1
0
0
1
0
0
1
8
7
+
3
5
9
5
4
6
0
0
0
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
0
0
0
1
0
1
0
0
0
0
?
+
5
4
6
Dodawanie upakowanych liczb BCD
DAA
–
instrukcja korekcji dziesi
ę
tnej po dodawaniu
upakowanych liczb BCD
mov
al, 12h
; AL
12
(BCD)
add
al, 39h
; AL
12+39
(BCD)
daa
; korekcja wyniku
je
ś
li (AF=1) lub (3..0 > 9)
AL+6
oraz
je
ś
li (CF=1) lub (7..4 > 9)
AL+60h
0
1
2
3
4
5
6
7
AF=1
CF=1
AL
12h
+ 39h
4Bh
+ 6
51h
Odejmowanie liczb BCD
Odejmowanie liczb BCD polega na
wykonaniu zwykłego binarnego odejmowania,
po którym wykonuje si
ę
korekcja dziesi
ę
tna
otrzymanego wyniku
Korekcja dziesi
ę
tna przy odejmowaniu polega
na odj
ę
ciu liczby 6
(10)
(
0110
(2)
) od tych cyfr
dziesi
ę
tnych wyniku
których warto
ść
okazała si
ę
wi
ę
ksza od 9
(nieprawidłowa warto
ść
cyfry dziesi
ę
tnej)
lub
podczas dodawania powstała po
ż
yczka do
starszego bitu tetrady
Odejmowanie upakowanych liczb BCD
0
0
0
0
0
0
1
1
0
0
0
0
0
1
1
1
-
0
0
0
0
0
0
0
1
0
0
1
0
1
0
0
1
1
1
1
0
1
1
0
1
0
0
1
0
_
3
0
7
1
2
9
1
7
8
0
0
0
0
0
1
1
0
0
1
1
0
1
0
0
0
0
1
1
1
0
0
0
1
0
0
0
0
?
-
1
7
8
Odejmowanie upakowanych liczb BCD
DAS
–
instrukcja korekcji dziesi
ę
tnej po odejmowaniu
upakowanych liczb BCD
mov
al, 35h
; AL
35
(BCD)
sub
al, 27h
; AL
35-27
(BCD)
das
; korekcja wyniku
je
ś
li (AF=1) lub (3..0 > 9)
AL-6
oraz
je
ś
li (CF=1) lub (7..4 > 9)
AL-60h
0
1
2
3
4
5
6
7
AF=1
CF=1
AL
35h
- 27h
0Eh
- 6
08h
Dodawanie nieupakowanych liczb BCD
AAA
–
instrukcja korekcji dziesi
ę
tnej po dodawaniu
nieupakowanych liczb BCD
mov
ax, 9
; AH
0,AL
9
add
al, 8
; AL
11h
aaa
; korekcja wyniku
je
ś
li (AF=1) lub (3..0 > 9)
AL (3..0)+6, AL (7..4)
0
AH=AH+1
AF=1
AL
AH
AX
1 0 0 1
0 0 0 1 0 0 0 1
0 0 0 1
0 1 1 1
Odejmowanie nieupakowanych liczb BCD
AAS
–
instrukcja korekcji dziesi
ę
tnej po odejmowaniu
nieupakowanych liczb BCD
mov
ax, 8
; AH
0,AL
8
sub
al, 9
; AL
8-9
aas
; korekcja wyniku
je
ś
li (AF=1) lub (3..0 > 9)
AL (3..0)-6, AL (7..4)
0
AH=AH-1
AF=1
AL
AH
1 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 1 0 1 1
-1
Mno
ż
enie nieupakowanych liczb BCD
AAM
–
instrukcja korekcji dziesi
ę
tnej po mno
ż
eniu
nieupakowanych liczb BCD
mov
bl,6
; BL
6
mov
al, 4
; AL
4
mul
bl
; AX
AL*BL=24
aam
; korekcja wyniku
AH
AL/10, AL
AL mod 10
0
1
0
0
AL
0
0
1
0
AH
AX
0
0
0
1
1
0
0
0
Dzielenie nieupakowanych liczb BCD
AAD
–
instrukcja korekcji dziesi
ę
tnej przed dzieleniem
nieupakowanych liczb BCD
mov
ax,0204h
; AX
24
(BCD)
mov
bl, 4
; BL
4
aad
; korekcja operandów
div
bl
; AX/BL
AL
AH*10+AL, AH
0
0
1
0
0
AL
0
0
1
0
AH
AX
0
0
0
1
1
0
0
0
Kody BCD
1111
1000
1001
1010
1011
0100
0101
0110
0111
0000
84-2-1
1111
1110
1101
1100
1011
0100
0011
0010
0001
0000
2421
1100
1011
1010
1001
1000
0111
0110
0101
0100
0011
Excess-3
1000
8
1001
9
0111
7
0110
6
0101
5
0100
4
0011
3
0010
2
0001
1
0000
0
8421
Cyfra (10)
Kod Excess-3 (XS3)
Powstaje poprzez dodanie warto
ś
ci 3 do cyfry dziesi
ę
tnej i
zapisanie jej w kodzie BCD
Cyfry 5-9 s
ą
lustrzanym odbiciem cyfr 0-4 z zanegowanymi
bitami
Jest kodem samouzupełniaj
ą
cym –negacja liczb dwójkowych w
tych kodach daje uzupełnienie do 9 odpowiednich liczb
dziesi
ę
tnych
1011
8
1100
9
1010
7
1001
6
1000
5
0111
4
0110
3
0101
2
0100
1
0011
0
Excess-3
Cyfra (10)
Kod BCD 2421 (Aikena)
Jest kodem wagowym o wagach 2, 4, 2, 1
Waga nie jest prost
ą
funkcj
ą
pozycji, nie jest to kod pozycyjny
Cyfry 5-9 s
ą
lustrzanym odbiciem cyfr 0-4 z zanegowanymi
bitami
Jest kodem samouzupełniaj
ą
cym
1110
8
1111
9
1101
7
1100
6
1011
5
0100
4
0011
3
0010
2
0001
1
0000
0
BCD 2421
Cyfra (10)
Kod BCD 84-2-1
Jest kodem wagowym o wagach 8, 4, -2, -1
Cyfry 5-9 s
ą
lustrzanym odbiciem cyfr 0-4 z zanegowanymi
bitami
Jest kodem samouzupełniaj
ą
cym
1000
8
1111
9
1001
7
1010
6
1011
5
0100
4
0101
3
0110
2
0111
1
0000
0
BCD 84-2-1
Cyfra (10)
Kod Johnsona
Kod kołowy stosowany do kodowania cyfr
dziesi
ę
tnych
Wymaga
pi
ę
ciu bitów
do zakodowania ka
ż
dej cyfry
dziesi
ę
tnej
Charakteryzuje si
ę
specyficznym rozkładem zer i
jedynek
11
000
8
1
0000
9
111
00
7
1111
0
6
11111
5
0
1111
4
00
111
3
000
11
2
0000
1
1
00000
0
Kod Johnsona
Cyfra (10)
Kod Johnsona
Liczba jedynek zwi
ę
ksza si
ę
(pocz
ą
wszy od najmniej
znacz
ą
cego bitu) a
ż
do wszystkich bitów równych 1
Nast
ę
pnie jedynek zaczyna ubywa
ć
(pocz
ą
wszy od
najmniej znacz
ą
cego bitu)
Stosowany jest w elektronice. Łatwe dekodowanie
Jest kodem nadmiarowym
11
000
8
1
0000
9
111
00
7
1111
0
6
11111
5
0
1111
4
00
111
3
000
11
2
0000
1
1
00000
0
Kod Johnsona
Cyfra (10)
Kody 1 z N (pier
ś
cieniowe)
Długo
ść
słowa jest równa N czyli liczbie kodowanych
słów
Najbardziej rozpowszechnionym jest kod 1 z 10
Jest to kod wagowy o wagach 9876543210
Jest kodem nadmiarowym, detekcyjnym
0
1
00000000
8
1
000000000
9
00
1
0000000
7
000
1
000000
6
0000
1
00000
5
00000
1
0000
4
000000
1
000
3
0000000
1
00
2
00000000
1
0
1
000000000
1
0
Kod 1 z 10
Cyfra (10)
Kod 2 z 5
5-bitowy kod
posiada stał
ą
liczb
ę
jedynek w
zapisie (ka
ż
dy 5-bitowy kod
ma 2 jedynki i pozostałe bite
zerowe)
Jest
to
kod
wagowy,
wyst
ę
puj
ą
ró
ż
ne
wersje,
zale
ż
nie od przyj
ę
tych wag
(np. 01236, 74210)
Jest kodem nadmiarowym,
detekcyjnym
Stosowany
w
kodach
kreskowych
00011
00101
01001
10001
00110
01010
10010
10100
11000
01100
Kod 2 z 5
(01236)
10010
8
10100
9
10001
7
01100
6
01010
5
01001
4
00110
3
00101
2
00011
1
11000
0
Kod 2 z 5
(74210)
Cyfra
dziesiętna
Kod Graya
Kod dwójkowy bezwagowy, niepozycyjny
Dwa kolejne s
ł
owa kodowe ró
ż
ni
ą
si
ę
tylko stanem
jednego bitu
Jest kodem cyklicznym - ostatni i pierwszy wyraz
tego kodu spełniaj
ą
zasad
ę
ró
ż
nicy tylko na jednym
bicie
Ma wiele zastosowa
ń
w technice cyfrowej,
automatyce, robotyce
0
0
0
0
0
1
0
1
1
0
1
0
1
1
0
1
1
1
1
0
1
1
0
0
0
1
2
3
4
5
6
7
Konstruowanie kodu Graya
Dopisa
ć
te same słowa kodowe, ale w
odwrotnej kolejno
ś
ci (odbicie lustrzane)
Do pocz
ą
tkowych wyrazów dopisa
ć
bit o
warto
ś
ci zero, natomiast do odbitych
lustrzanie – bit o warto
ś
ci 1
0
1
0
0
0
1
1
1
1
0
0
0
0
0
0
1
0
1
1
0
1
0
1
1
0
1
1
1
1
0
1
1
0
0
0
0
0
0
0
0
0
1
0
0
1
1
0
0
1
0
0
1
1
0
0
1
1
1
0
1
0
1
0
1
0
0
1
1
0
0
1
1
0
1
1
1
1
1
1
1
1
0
1
0
1
0
1
0
1
1
1
0
0
1
1
0
0
0
Konwersja liczb NKB
kod Graya
Liczb
ę
w postaci binarnej przesun
ąć
o jeden bit w
prawo, młodszy bit odrzucamy, na pocz
ą
tku
zapisujemy bit o warto
ś
ci 0
Wykona
ć
operacj
ę
XOR na poszczególnych bitach
liczby binarnej NKB oraz liczby otrzymanej po
przesuni
ę
ciu
20
(10)
= 10100
(NKB)
a
b
0
0
0
1
1
0
1
1
0
XOR
0
1
1
1
0
1
0
0
0
1
0
1
0
1
1
1
1
0
XOR
(GRAY)
(
)
(NKB)
Konwersja kod Graya
NKB
Przepisa
ć
najstarszy bit z kodu
Graya do najstarszego bitu
słowa dwójkowego
Dla obliczenia ka
ż
dej kolejnej
cyfry wykona
ć
operacj
ę
XOR
na odpowiednim bicie kodu
Graya oraz poprzednio
wyznaczonej cyfrze kodu NKB
1011
(GRAY)
= 1101
(NKB)