background image

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)

background image

Naturalny Kod Binarny (NKB)

Zakres liczb przedstawianych w naturalnym kodzie binarnym 
za pomoc

ą

n bitów wynosi: 

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

background image

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

background image

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

background image

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)

background image

Naturalny kod BCD (8421)

7249

(10)

= 0111  0010  0100  1001

(BCD)

1000 0110 0111 0010 0101

(BCD)

= 86725

(10)

background image

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)

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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 

background image

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

background image

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

background image

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

background image

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)

background image

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)

background image

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)

background image

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)

background image

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)

background image

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)

background image

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)

background image

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

ą

Ŝ

ne 

wersje, 

zale

Ŝ

nie  od  przyj

ę

tych  wag 

(np. 01236, 74210) 

Jest  kodem  nadmiarowym, 
detekcyjnym 

Stosowany 

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

background image

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

ę

Ŝ

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

background image

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

background image

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)

background image

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)