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
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