01.12.2014 Views

Binarno kodirani dekadni brojevi - Ncd.matf.bg.ac.rs

Binarno kodirani dekadni brojevi - Ncd.matf.bg.ac.rs

Binarno kodirani dekadni brojevi - Ncd.matf.bg.ac.rs

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Uvod u organiz<strong>ac</strong>iju računara<br />

vežbe, školska 2010/11<br />

Biljana Stojanović<br />

Matematički fakultet, Univerzitet u Beogradu


<strong>Binarno</strong> <strong>kodirani</strong> <strong>dekadni</strong> <strong>brojevi</strong><br />

(BCD)<br />

čas 06


Binarni kodovi <strong>dekadni</strong>h cifara<br />

Zbog problema sa preciznim predstavljanjem <strong>dekadni</strong>h<br />

razlomljenih brojeva u binarnom sistemu pojavila se ideja<br />

o kodiranju pojedinačnih <strong>dekadni</strong>h cifara binarnim<br />

<strong>brojevi</strong>ma.<br />

3<br />

Uvod u organiz<strong>ac</strong>iju računara


Binarni kodovi <strong>dekadni</strong>h cifara<br />

Za kodiranje <strong>dekadni</strong>h cifara binarnim <strong>brojevi</strong>ma potrebne<br />

su bar četiri binarne cifre.<br />

Postoji više načina da se jednoj dekadnoj cifri dodeli<br />

binarni kod.<br />

4<br />

Uvod u organiz<strong>ac</strong>iju računara


Binarni kodovi <strong>dekadni</strong>h cifara<br />

Najvažniji zahtevi koje kodovi treba da zadovolje su:<br />

Jednoznačnost<br />

Najvećoj dekadnoj cifri odgovara kod koji ima najveću<br />

vrednost.<br />

Očuvanje parnosti<br />

Komplementarnost – kodovi cifara a i b za koje važi a+b=9<br />

su komplementarni<br />

Kod je težinski ako se vrednost dekadne cifre u tom kodu<br />

dobija kao zbir proizvoda vrednosti binarnih cifara i<br />

vrednosti pozicija na kojima se one nalaze.<br />

5<br />

Uvod u organiz<strong>ac</strong>iju računara


Neki binarni kodovi <strong>dekadni</strong>h cifara<br />

Dekadna<br />

cifra<br />

Binarni kod<br />

8421 2421 5421 753-6 84-2-1 Višak 3 Ciklični<br />

0 0000 0000 0000 0000 0000 0011 0001<br />

1 0001 0001 0001 1001 0111 0100 0101<br />

2 0010 0010 0010 0111 0110 0101 0111<br />

3 0011 0011 0011 0010 0101 0110 1111<br />

4 0100 0100 0100 1011 0100 0111 1110<br />

5 0101 1011 1000 0100 1011 1000 1100<br />

6 0110 1100 1001 1101 1010 1001 1000<br />

7 0111 1101 1010 1000 1001 1010 1001<br />

8 1000 1110 1011 0110 1000 1011 1011<br />

9 1001 1111 1100 1111 1111 1100 0011<br />

6<br />

Uvod u organiz<strong>ac</strong>iju računara


Neoznačeni binarno <strong>kodirani</strong> <strong>dekadni</strong><br />

<strong>brojevi</strong><br />

<strong>Binarno</strong> <strong>kodirani</strong> zapis neoznačenog dekadnog broja u<br />

nekom kodu se dobija tako što se binarno kodira u<br />

odgovarajućem kodu svaka od njegovih cifara.<br />

7<br />

Uvod u organiz<strong>ac</strong>iju računara


Primeri<br />

Broj 5384 možemo zapisati u različitim kodovima na<br />

sledeći način:<br />

0101 0011 1000 0100 (8421)<br />

1000 0110 1011 0111 (Višak 3)<br />

1011 0101 1000 0100 (84-2-1)<br />

8<br />

Uvod u organiz<strong>ac</strong>iju računara


Označeni binarno <strong>kodirani</strong> <strong>dekadni</strong><br />

<strong>brojevi</strong><br />

Označeni binarno <strong>kodirani</strong> <strong>dekadni</strong> <strong>brojevi</strong> se zapisuju na<br />

dva načina:<br />

Znak i apsolutna vrednost (vrednosti cifre za znak broja mogu<br />

biti proizvoljne i zavise od konkretne implement<strong>ac</strong>ije na<br />

računaru)<br />

U potpunom komplementu pri čemu se prvo nađe potpuni<br />

komplement broja u sistemu sa osnovom 10, pa se zatim izvrši<br />

kodiranje (kod najmanje cifre (0) označava pozitivne brojeve, a<br />

kod najveće cifre (9) označava negativne brojeve)<br />

9<br />

Uvod u organiz<strong>ac</strong>iju računara


Zapisi brojeva<br />

Savremeni računari koji omogućuju rad sa BCD <strong>brojevi</strong>ma<br />

koriste zapis <strong>dekadni</strong>h brojeva u pakovanom ili nepakovanom<br />

obliku, pri čemu se koristi kod 8421. Kod višak 3 se ređe<br />

koristi, najčešće kod kalkulatora; ostali kodovi se danas<br />

praktično ne koriste.<br />

<strong>Binarno</strong> <strong>kodirani</strong> <strong>dekadni</strong> <strong>brojevi</strong> se mogu koristiti kako za<br />

zapis brojeva, tako i za zapis znakova. Iz tog zahteva proističu<br />

neke specifičnosti zapisa brojeva.<br />

10<br />

Uvod u organiz<strong>ac</strong>iju računara


Nepakovani zapis<br />

BCD <strong>brojevi</strong> se u računaru obično zapisuju u obliku znak i<br />

apsolutna vrednost.<br />

Kod računara koji koriste ASCII kod u nepakovanom<br />

zapisu svaka dekadna cifra se zapisuje u jednom bajtu, pri<br />

čemu se u polubajt veće težine upisuje cifra 5 koja<br />

označava da je u bajtu zapisana cifra, (“zonsko” ubušenje),<br />

a u polubajtu manje težine se zapisuje BCD zapis cifre u<br />

odgovarajućem kodu (“cifa<strong>rs</strong>ko” ubušenje).<br />

Znak se zapisuje u polubajtu veće težine (umesto cifre 5)<br />

poslednjeg bajta i to kao binarno zapisana heksadekadna<br />

cifra A za pozitivne brojeve, a B za negativne.<br />

11<br />

Uvod u organiz<strong>ac</strong>iju računara


Primer<br />

+896312 58 59 56 53 51 A2<br />

-896312 58 59 56 53 51 B2<br />

12<br />

Uvod u organiz<strong>ac</strong>iju računara


Pakovani zapis<br />

Ukoliko se koriste samo brojčani pod<strong>ac</strong>i dolazi do<br />

nepotrebnog trošenja prostora, jer se ponavlja vrednost<br />

5 u svakom polubajtu veće težine, osim kod poslednjeg<br />

bajta.<br />

Zato se uvodi pakovani zapis BCD brojeva.<br />

13<br />

Uvod u organiz<strong>ac</strong>iju računara


Pakovani zapis<br />

Kod pakovanog zapisa se u svakom polubajtu, osim u<br />

poslednjem, čuva neka cifra broja.<br />

U poslednjem polubajtu zapisa, čuva se znak broja<br />

prema prethodnom dogovoru.<br />

Pošto se koristi ceo broj bajtova, u slučaju zapisa<br />

broja sa parnim brojem cifara u vodeći polubajt se<br />

upisuje 0.<br />

14<br />

Uvod u organiz<strong>ac</strong>iju računara


Primeri<br />

+896312 08 96 31 2A<br />

-896312 08 96 31 2B<br />

+56421 56 42 1A<br />

-56421 56 42 1B<br />

15<br />

Uvod u organiz<strong>ac</strong>iju računara


Decimalna aritmetika<br />

Nepakovani zapis brojeva se najčešće koristi pri<br />

ulazno-izlaznim oper<strong>ac</strong>ijama za direktno unošenje<br />

brojeva, dok se u aritmetičkim oper<strong>ac</strong>ijama koristi<br />

pakovani zapis.<br />

Oper<strong>ac</strong>ije sa BCD <strong>brojevi</strong>ma su sporije u odnosu na<br />

oper<strong>ac</strong>ije sa binarnim <strong>brojevi</strong>ma zbog specifičnosti<br />

zapisa.<br />

16<br />

Uvod u organiz<strong>ac</strong>iju računara


Promena znaka<br />

Pošto su BCD <strong>brojevi</strong> u računaru zapisani u obliku znak i<br />

aspolutna vrednost promena znaka je jednostavna. Samo<br />

se menja vrednost poslednjeg polubajta.<br />

08 96 31 2A 08 96 31 2B<br />

17<br />

Uvod u organiz<strong>ac</strong>iju računara


Sabiranje i oduzimanje<br />

Pri sabiranju i oduzimanju važe opšta pravila sabiranja i<br />

oduzimanja celih brojeva u zapisu znak i apsolutna<br />

vrednost. To znači da se oper<strong>ac</strong>ije nad označenim<br />

<strong>brojevi</strong>ma mogu svesti na oper<strong>ac</strong>ije nad neoznačenim<br />

<strong>brojevi</strong>ma.<br />

18<br />

Uvod u organiz<strong>ac</strong>iju računara


Sabiranje i oduzimanje<br />

Sabiranje BCD brojeva se vrši u dve faze.<br />

U prvoj fazi se BCD zapisi cifara sabiraka sabiraju kao<br />

neoznačeni celi četvorocifreni binarni <strong>brojevi</strong>. Ako se<br />

javi prekoračenje, ono se prenosi kao jedinica koja se<br />

dodaje zbiru narednih <strong>dekadni</strong>h cifara. Ovi prenosi se<br />

pamte zbog upotrebe u drugoj fazi.<br />

U drugoj fazi se vrše korekcije koje zavise od koda u<br />

kome smo predstavljali dekadne cifre.<br />

19<br />

Uvod u organiz<strong>ac</strong>iju računara


Sabiranje i oduzimanje<br />

Oduzimanje se može izvršiti na dva načina:<br />

po sličnom principu kao i sabiranje, pri čemu se u obe faze<br />

umesto sabiranja vrši oduzimanje, i<br />

Kao sabiranje u potpunom komplementu umanjenika sa<br />

umanjiocem kome je promenjen znak.<br />

20<br />

Uvod u organiz<strong>ac</strong>iju računara


Sabiranje u kodu 8421<br />

Prva faza je nezavisna od koda u kome su zapisane<br />

dekadne cifre.<br />

Neka je n maksimalan broj cifara sabiraka.<br />

Neka su p’ i prenosi u prvoj fazi sabiranja sa dekadnog<br />

mesta i-1 na mesto i, a p’’ i odgovarajući prenosi u<br />

drugoj fazi. Važi p’ 0 =0 i p’’ 0 =0.<br />

Druga faza se sastoji iz n koraka u kojima se s desna<br />

na levo grupama od po četiri binarne cifre rezultata<br />

prve faze dodaju korekcije i računa prenos za sledeći<br />

korak.<br />

21<br />

Uvod u organiz<strong>ac</strong>iju računara


Sabiranje u kodu 8421<br />

U i-tom koraku radimo:<br />

Neka je c 3 c 2 c 1 c 0 i-ta grupa od četiri binarne cifre gledano s<br />

desna na levo<br />

t i =c 3 c 2 c 1 c 0 + p’’ i<br />

Ako je p’ i+1 = 1 ili t i ≥ (1010) 2 onda ovoj grupi cifara dodajemo<br />

korekciju (0110) 2 i pri tome određujemo prenos p’’ i+1 .<br />

Ako je p’ n =1 ili p’’ n =1 došlo je do prekoračenja.<br />

22<br />

Uvod u organiz<strong>ac</strong>iju računara


Primer<br />

X= -23492 Y=-5189 X+Y=-28681<br />

23 49 2B + 05 18 9B = 28 68 1B<br />

-X 0010 0011 0100 1001 0010<br />

-Y 0000 0101 0001 1000 1001<br />

p’ 0 0 0 1 0 0<br />

S 1 0010 1000 0110 0001 1011<br />

p’’ 0 0 0 0 1 0<br />

k 0000 0000 0000 0110 0110<br />

-S 0010 1000 0110 1000 0001<br />

S = -28681<br />

23<br />

Uvod u organiz<strong>ac</strong>iju računara


Oduzimanje u kodu 8421<br />

U prvoj fazi se BCD zapisi cifara umanjenika i umanjioca<br />

oduzimaju kao neoznačeni celi četvorocifreni binarni <strong>brojevi</strong>.<br />

Ako se javi potreba za pozajmicom, ona se prenosi kao jedinica<br />

koja se oduzima od razlike narednih <strong>dekadni</strong>h cifara. Ove<br />

pozajmice se pamte zbog upotrebe u drugoj fazi i označavaju<br />

se sa p’ i .<br />

U drugoj fazi se s desna na levo posmatraju po četiri binarne<br />

cifre c 3 c 2 c 1 c 0 rezultata prve faze i od njih se oduzima (0110) 2<br />

ako važi p’ i+1 = 1.<br />

24<br />

Uvod u organiz<strong>ac</strong>iju računara


Primer<br />

X=52629 Y=2634 Y-X=-49995<br />

Y – X = -(X-Y)=-(52629 - 2634)<br />

02 63 4A - 52 62 9A = 49 99 5B<br />

X 0101 0010 0110 0010 1001<br />

Y 0000 0010 0110 0011 0100<br />

p’ 1 1 1 0 0<br />

S 1 0100 1111 1111 1111 0101<br />

p” 0000 0110 0110 0110 0000<br />

S 0100 1001 1001 1001 0101<br />

25<br />

Uvod u organiz<strong>ac</strong>iju računara


Sabiranje u kodu višak 3<br />

Neka važe oznake koje smo koristili za kod 8421.<br />

I u kodu višak 3 se druga faza izvodi u n koraka gde se u<br />

svakom koraku s desna na levo dodaju korekcije grupama<br />

od po četiri binarne cifre rezulata prve faze.<br />

26<br />

Uvod u organiz<strong>ac</strong>iju računara


Sabiranje u kodu višak 3<br />

U i-tom koraku radimo:<br />

Neka je c 3 c 2 c 1 c 0 i-ta grupa od četiri binarne cifre gledano s<br />

desna na levo<br />

Ako je p’ i+1 = 1 onda ovoj grupi cifara dodajemo korekciju<br />

(0011) 2<br />

Ako je p’ i+1 = 0 onda se ovoj grupi cifara dodaje korekcija<br />

(1101) 2<br />

Do prekoračenja je došlo ako je p’ n =1.<br />

27<br />

Uvod u organiz<strong>ac</strong>iju računara


Primer<br />

X=28367 Y=2847 X+Y=31214<br />

28 36 7A + 02 84 7A = 31 21 4A<br />

X 0101 1011 0110 1001 1010<br />

Y 0011 0101 1011 0111 1010<br />

p’ 0 1 1 1 1 0<br />

S 1 1001 0001 0010 0001 0100<br />

K 1101 0011 0011 0011 0011<br />

S 0110 0100 0101 0100 0111<br />

28<br />

Uvod u organiz<strong>ac</strong>iju računara


Oduzimanje u kodu višak 3<br />

Pošto je kod višak 3 komplementaran određivanje<br />

potpunog komplementa broja zapisanog u ovom kodu<br />

se jednostavno vrši komplementiranjem datog zapisa.<br />

Zato se oduzimanje najjednostavnije vrši kao<br />

sabiranje u potpunom komplementu umanjenika sa<br />

umanjiocem kome je promenjen znak.<br />

29<br />

Uvod u organiz<strong>ac</strong>iju računara


Primer<br />

<br />

<br />

X=5836 Y=8586 X-Y=-2750<br />

X-Y = -(Y-X)<br />

– (08 58 6A – 05 83 6A) = -02 75 0A = 02 75 0B<br />

P.K. X=05836 Y=08586<br />

-X 94164<br />

-X 1100 0111 0100 1001 0111<br />

Y 0011 1011 1000 1011 1001<br />

-X 1100 0111 0100 1001 0111<br />

p’ 1 1 0 1 1 0<br />

S1 0000 0010 1101 0101 0000<br />

K 0011 0011 1101 0011 0011<br />

S 0011 0101 1010 1000 0011<br />

Y - X = 02750<br />

X - Y = -02750 = 02750B<br />

Iako je p 5 ’=1, na osnovu pravila za sabiranje u potpunom komplementu ne dolazi do<br />

prekoračenja<br />

30<br />

Uvod u organiz<strong>ac</strong>iju računara

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!