You are on page 1of 32

2 Brojni sistemi, aritmetičke operacije i kodovi

2.1 UVOD

Digitalni sistemi se karakterišu osobinom da su signali obično ograničeni sa dvije moguće vrijednosti koje
su predstavljene korištenjem alfabeta od samo dva karaktera, uobičajeno označena kao 0 i 1. Predstavljanje
u formi binarnih podataka je, prema tome, od fundamentalnog značaja u analizi i projektovanju digitalnih
sistema.
Otpočećemo ovo poglavlje sa razmatranjem predstavljanja numeričkih podataka. Rad sa digitalnim
sistemima obično zahtijeva familijarnost sa više brojnih sistema:

- Decimalni
- Binarni
- Oktalni
- Heksadecimalni
- Binarno-kodirani decimalni (BCD)

Najprirodnije je korištenje binarnog brojnog sistema u digitalnom sistemu. Međutim, pogodnije je


korištenje drugih brojnih sistema, naročito familijariziranog decimalnog brojnog sistema. U ovim
slučajevima, sa brojevima se manipuliše unutar korištenog sistema, ali su oni ipak, unutar digitalnog
sistema, binarno predstavljeni.
U ovom tekstu uvešćemo aritmetičke operacije da bi predstavili osnovu za razumijevanje kako digitalni
sistemi rukuju (to handle) sa brojevima u aritmetičkim sračunavanjima. Razmotrićemo predstave binarnog
broja bez predznaka i sa predznakom, te diskutovati četiri osnovne aritmetičke operacije: sabiranje,
oduzimanje, množenje i dijeljenje.
Binarno kodiranje je drugo značajno pitanje. Brojevi mogu biti predstavljeni u raznovrsnim kodovima od
kojih su neki korisniji od drugih u posebnim situacijama. Ipak, pošto aritmetički (numerički) podaci nisu
jedini tip podataka koji se koristi mi ćemo također diskutirati predstavljanje numeričkih podataka kao što
su slova alfabeta. Na kraju, dati ćemo kratak uvod u osnove zaštite od različitih transmisionih grešaka, gdje
se podaci prenose preko komunikacionih veza, te principe kontrole kodiranih instrukcija u digitalnim
sistemima.

2.2 POZICIONI BROJNI SISTEMI


Pozicioni brojni sistem karakteriše se bazom (base) ili radiksom (radix) r, koji je cijeli broj veći od 1 i
skupom od r digita (digits). Na primjer, ako je r=10, riječ je o decimalnom ili bazi 10, koji se sastoji od
deset digita predstavljenih karakterima 0,1,2,3,4,5,6,7,8,9. Baza binarnog sistema je 2, a sastoji se od dva
digita, 0 i 1. Skraćenica riječi binarni digit se naziva bit. Oktalni (octal) sistem kao bazu ima 8 i ima osam
karaktera predstavljenih sa digitima od 0 do 7.
Heksadecimalni sistem kao bazu ima 16, a sastoji se od 16 karaktera predstavljenih simbolima od 0 do 9, te
A,B,C,D,E i F. U heksadecimalnom sistemu A označava 10, B označava 11, C je 12, D označava 13, E je
jednako 14 i F označava 15. Drugi sistem poznat pod imenom BCD biće razmotren kasnije u ovoj sekciji.
Svaki cijeli broj (N)r može da se predstavi konačnom sekvencom digita (simbola) povezanih u obliku niza
(string) digita (simbola)

(N)r = (br-1, br-2, … b1, b0)r (2.1)

gdje je br cijeli broj takav da je 0 ≤ br ≤ r-1. Ovdje su br digiti cijelog broja N dok se r odnosi na dužinu
niza. Na primjer, niz digita (9A0F)16 predstavlja heksadecimalni broj čija je dužina n=4 i gdje veličina
svakog simbola ne može prevazići r-1=15 ili da bude manja od nule.
Svaki digit u pozicionoj notaciji jednog cijelog broja N ima specijalno značenje koje zavisi od njegovog
položaja. Može se reći da sasvim lijevi digit bn-1 niza (2.1) je najznačajniji digit, dok se sasvim desni digit
naziva najmanje značajan digit. U binarnom sistemu brojeva, ovi digiti se označavaju respektivno, kao
najznačajniji bit (most significant bit, skraćeno msb) i najmanje značajan bit (least significant bit,
skraćeno lsb).
Općenito, niz bitova označava se kao riječ (word), pri čemu neki nizovi bita imaju posebna imena – niz od
četiri bita naziva se nibl (nibble), a niz od osam bitova označava se kao bajt (byte).
Numerička vrijednost cijelog broja predstavljena nizom digita (2.1) data je sa

n −1
Bn-1rn-1 + bn-2rn-2 + … + b1r1 + b0r0 = ∑b r
i =0
i i (2.2)

Jednačina (2.2) je otežana suma (weighted sum). Težine su sukcesivni stepeni od r pri čemu je svaki digit
otežan u saglasnosti sa svojom pozicijom u digitalnom nizu. Najznačajniji digit teži najviše i najmanje
značajni digit teži najmanje. Na primjer baza 6 brojnog sistema sastoji se od šest digita (od 0 do 5) pa je
numerička vrijednost za bazu 6 broja 5032 data sa

(5032)6 = 5 ּ 63 + 0 ּ 62 + 3 ּ 61 + 2 ּ 60

U onom što slijedi razmatraćemo samo cijele brojeve. Ali što je sa razlomljenim (fractions) i miješano
cijelo-razlomljenim brojevima. Da bi napravili razliku između cijelih i razlomljenih, koristićemo
konvenciju o baznoj tački (radix point). Cijeli dio broja lociran je lijevo od bazne tačke, dok se razlomljeni
pojavljuje desno od bazne tačke (ako je broj cijeli onda možemo raspolagati sa baznom tačkom). Kao
primjer, razmotrimo digitalni niz (35.274)10. Bazna decimalna tačka odvaja cijeli dio broja (35) od
razlomljenog dijela (274). Numerička vrijednost broja data je sa

(35.274)10 = 3 ּ 101 + 5 ּ 100 + 2 ּ 10-1 + 7 ּ 10-2 + 4 ּ 10-3 (2.3)

Kako se uočava, digiti na lijevoj strani od bazne tačke predstavljaju koeficijente polinoma sa opadajućim
pozitivnim eksponentom baze (10) u primjeru brojnog sistema; digiti na desnu od bazne tačke su
koeficijenti polinoma sa rastućim negativnim eksponentom baze.
Jednadžba (2.3) može se generalizirati na svaki broj čiji se cijeli dio od digita i čiji se razlomljeni dio sastoji
od digita. Razmotrimo, dakle, broj predstavljen nizom digita

(N)r = (bn-1, bn-2, … b1, b0, b-1, b-2, … b-m)r

Treba uočiti da je bn-1 još uvijek najznačajniji digit, ali, sada je b-m najmanje značajan digit. Numerička
vrijednost broja data je sa

(N)r = bn-1rn-1 + bn-2rn-2 + b1r1 + b0r0 + b-1r-1 + b-2r-2 + … . b-mr-m (2.4)

Pišući jednadžbu (2.4) u kompletnijem obliku imamo

n −1
(N )r = ∑b r
i =− m
i
i
(2.5)

U binarnom sistemu, r=2 dok je bi bilo 0 ili 1 za svako i. Ovo se odnosi na binarne brojeve čija je
vrijednost određena u saglasnosti sa jednadžbom (2.5) ili (2.2), tj. korištenjem sukcesivnih težina koje su
cjelobrojni eksponenti od 2; i koji se označavaju kao pravi (straight) binarni brojevi. Korištenje druge vrste
težina je takođe moguće i biti će uvedeno u sekciji 2.5.

Konverzija između baza

Konverzija baze r u bazu 10


Konverzija svake baze u bazni sistem 10 lako se izvršava korištenjem jednadžbi (2.2) i (2.5). Jednostavno
se sabiru članovi polinoma koji predstavlja r bazni broj da se dobije decimalni ekvivalent.
ƒ Primjer 2.1 Pretvori (110101)2 u decimalni broj

(110101)2 = 1ּ25+1ּ24+0ּ23+1ּ22+0ּ21+1ּ20=(32)10+(16)10+(0)10+(4)10+(0)10+(1)10=(53)10 ▪

ƒ Primjer 2.2 Pretvori (0.1101)2 u decimalni broj

(0.1101)2=1ּ2-1+1ּ2-2+0ּ2-3+1ּ2-4=(0.5)10+(0.25)10+(0)10+(0.0625)10=(0.8125)10 ▪

ƒ Primjer 2.3 Pretvori (73.452)8 u decimalni broj

(73.452)8=7ּ81+3ּ80+4ּ8-1+5ּ8-2+2ּ8-3=
=(56)10+(3)10+(0.5)10+(0.078125)10+(0.0039063)10=(59.5820313)10 ▪

ƒ Primjer 2.4 Pretvori (32AF.C4)16 u decimalni broj

(32AF.C4)16=3ּ163+2ּ162+Aּ161+Fּ160+Cּ16-1+4ּ16-2=
=(12288)10+(512)16+(160)16+(15)10+(0.75)10+(0.015625)10=(12975.766)10 ▪
Treba zapaziti da vrijede jednakosti (A)16=(10)10, (C)16=(12)10 i (F)16=(15)10

Konverzija baze r u bazu t


Postoje različiti načini za konverziju brojeva iz jednog baznog sistema u drugi. Vjerovatno najjedostavniji i
direktni metod je poznat kao ponovljeno dijeljenje za cijele brojeve i ponovljeno množenje za
razlomljene. Kod konverzije miješanog cijelo-razlomljenog broja proces se razbija. Prvo se konvertira
cijeli dio korištenjem ponovljenog dijeljenja, a zatim razlomljeni dio preko ponovljenog množenja.
Uvodeći ovaj metod u aktuelnoj sekciji i za razliku od narednih sekcija diskusija će biti usesređena na
konverziju između brojeva predstavljenih u oktalnom, heksadecimalnom i binarnom sistemu.
Kako će se vidjeti ove partikularne konverzije mogu se provesti bez vršenja ponovljenog dijeljenja i
množenja. Razmotrimo prvo konverziju cijelog broja (N)r baze r u njegov ekvivalent (M)t baze t.
Konverzija se provodi preko ponovljenog dijeljenja sa t. Ostatak poslije svakog koraka je jedan digit
zahtjevane baze t broja, dok se kvocijent ponovo dijeli sa t. Ostatak nakon prvog dijeljenja sa t je najmanje
značajan digit (M)t, dok je posljednji ostatak najznačajniji digit (M)t.
Slijedeći primjer ilustruje ovu proceduru.

ƒ Primjer 2.5 Pretvori (15247)10 u heksadecimalni broj

15247
= 95 ……………ostatak = (15)10 = (F)16
16
952
= 59 ……………..ostatak = (8)10 = (8)16
16
59
=3 …………..ostatak = (11)10 = (B)16
16
3
=0 ……………ostatak = (3)10 = (3)16
16
Dakle (15247)10=(3B8F)16 ▪
ƒ Primjer 2.6 Pretvori (12A7C)16 u oktalni broj
Konverzija se može pojednostaviti ako se prvo nađe decimalni ekvivalent heksadecimalnog broja.
Postupajući ovako imamo (12A7C)16=(76412)16. Sada, pretvarajući decimalni broj u oktalni
imamo

76412
= 9551 ………ostatak = 4
8
9551
= 1193 ………ostatak = 7
8
1193
= 149 ………ostatak = 1
8
149
= 18 ………ostatak = 5
8
18
=2 ………ostatak = 2
8
2
=0 ………ostatak = 2
8

Dakle, (12A7C)16 = (225174)10 ▪


Da bi konvertirali razlomljeno (.F) baze r u njegov ekvivalent (.E) baze t trebamo ponovljeno množiti sa t
(umjesto dijeliti sa t). Cijeli broj nakon svakog koraka je jedan digit zahtjevane baze t razlomka, dok se
preostali razlomak ponovo množi sa t. Cijeli broj koji je rezultat prvog množenja sa t je najznačajniji digit
od (.E)t dok je posljednji cijeli broj najmanje značajan digit od (.E)t. Sljedeći primjer ilustruje ovu
proceduru.

ƒ Primjer 2.7 Pretvori (0.761)10 u binarni broj

0.761ּ2=1.522 cijeli dio = 1


0.522ּ2=1.044 cijeli dio = 1
0.044ּ2=0.088 cijeli dio = 0
0.088ּ2=0.176 cijeli dio = 0
0.176ּ2=0.352 cijeli dio = 0
0.352ּ2=0.704 cijeli dio = 0
0.704ּ2=1.408 cijeli dio = 1
0.408ּ2=0.816 cijeli dio = 0
0.816ּ2=1.632 cijeli dio = 1
0.632ּ2=1.264 cijeli dio = 1
. .
. .
. .

Dakle, (0.761)10=(0.1100001011…)2 ▪
Kako se vidi iz primjera 2.7 proces konverzije razlomka može da se ne završi. Drugim riječima može da
bude nemoguće tačno predstaviti razlomak nove baze sa konačnim brojem digita. Broj zadržanih digita
nakon bazne tačke zavisiće ot tačnosti sa kojom želimo izvršiti konverziju. Ako završimo proces u
primjeru 2.7 nakon prva dva značajna bita razlomka, rezultantni binarni razlomak biti će (0.11)2 koji je
jednak (0.75)10. Ovo predstavlja grešku od oko 1.4% u odnosu na stvarni decimalni razlomak (0.761)10. S
druge strane, ako završimo proces nakon deset bitova, rezultirajući binarni razlomak biti će
(0.1100001011)2 [=(0.7607422)10] i greška će biti oko 0.03% od zahtjevanog (0.761)10
Binarne, oktalne i heksadecimalne konverzije
Pošto su 8(=23) i 16(=24) obadvije jednakih eksponenata od dva, konverzije između binarnih, oktalnih i
heksadecimalnih brojnih sistema su veoma jednostavne. Posebno ove relacije impliciraju da se svaki
oktalni digit može biti binarno kodiran sa tri bita kako je pokazano u Tabeli 2.1, dok se svaki
heksadecimalni digit može binarno kodirati sa četiri digita kako je pokazano u Tabeli 2.2. Kao referenca
ove tabele takođe uključuju ekvivalentne decimalne brojeve.

Za konverziju iz binarnog u oktalni razbijamo binarni broj, počinjući od bazne tačke, u grupe od tri bita
svaka. Oktalni digit koji odgovara svakoj grupi se onda asignira (assigned) korištenjem Tabele 2.1.
Konverzija iz oktalnog u binarni, ovaj proces se reverzira. Svakom oktalnom digitu je asignirana grupa od
tri bita korištenjem Tabele 2.1 i ekvivalentni binarni broj se dobija povezivanjem ovih grupa.

ƒ Primjer 2.8 Pretvori (110111010011)2 u oktalni.


Pošto je dati broj cijeli broj, počećemo od najmanje značajnog bita, razdjeliti broj u grupe od tri bita
svaka, pa onda svakoj grupi asigniramo (pridodjelimo) odgovarajući oktalni digit.

110 111 010 011

6 7 2 3

Prema tome ekvivalentni oktalni broj je (6723)8. ▪


ƒ TABELA 1.1 Binarno kodirani oktalni brojevi

Decimalni Oktalni Binarni


0 0 000
1 1 001
2 2 010
3 3 011
4 4 100
5 5 101
6 6 110
7 7 111

ƒ TABELA 2.2 Binarno kodirani heksadecimalni brojevi

Decimalni Heksadecimalni Binarni


0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111
ƒ Primjer 2.9 Pretvori (1101000101.01011)2 u oktalni.
Polazeći od bazne tačke, razbijmo cijeli i razlomljeni dio i onda koristimo Tabelu 2.1 da pridodjelimo
odgovarajuće oktalne digite.

1 101 000 101 . 010 11

1 5 0 5 2 6

Dakle, ekvivalentni oktalni broj je (1505.20)8.

Treba uočiti u primjeru 2.9 da krajnja lijeva grupa cijelog dijela broja sadrži samo jedan bit, a da krajnja
desna grupa razlomljenog dijela sadrži samo dva bita. Za kvalificiranje oktalne predstave potrebno je,
međutim, da svaka grupa mora sadržavati tri bita. Da bi “ispunili” grupe uvodimo vodeće (leading) nule u
cijeli dio i prateće (trailing) nule u njegov razlomljeni dio. Dodavanje vodećih i pratećih nula ne mijenja
vrijednost originalnog broja i služi samo da olakša konverziju. U primjeru 2.9 uveli smo dvije vodeće nule
u krajnju lijevu grupu da bi dobili (001)2 = (1)8 i jednu prateću nulu u krajnje desnu grupu da bi dobili
(110)2 = (6)8.

ƒ Primjer 2.10 Pretvori (4736)8 u binarni.


Korištenjem Tabele 2.1 imamo

4 7 3 6

100 111 011 110



Lako se može doći do binarne konverzije u heksadecimalnu. Polazeći od bazne tačke, potrebno je binarni
broj razbiti u grupe od po četiri bita (nibbles) svaku. Koristeći Tabelu 2.2 svakom nibblesu je pridodjeljen
(assigned) njegov odgovarajući heksadecimalni digit. Za heksadecimalnu u binarnu konverziju
jednostavno se koristi obrnut proces.

ƒ Primjer 2.11 Pretvori (12A7F)16 u binarni.


Koristeći Tabelu 2.2 imamo

1 2 A 7 F

0001 0010 1010 0111 1111 ▪


ƒ Primjer 2.12 Pretvori (11101110001011001)2 u heksadecimalni.
Grupirajući binarni broj u nibblese i koristeći Tabelu 2.2 dobivamo

1 1101 1100 0101 1001

1 D C 5 O

Pošto krajnja lijeva grupa ne sadrži četiri bita potrebno je uvesti tri nule da bi se olakšala konverzija u
najznačajniji heksadecimalni digit (pogledaj diskusiju nakon primjera 2.9).

ƒ Primjer 2.13 Pretvori binarni broj iz primjera 2.12 u oktalni.

11 101 110 001 011 001

1 5 6 1 3 1 ▪

Predstava binarno kodiranog decimala (BCD)


Binarno kodirani decimal (BDC – Binary Coded Decimal) je predstava koja znači kompromis između
decimalnog i binarnog sistema. U BDC koristimo četverobitni nibbes za predstavljanje svakog decimalnog
digita od 0 do 9. Da bi predstavili decimalni broj preko 9 trebamo dva ili više decimalnih digita, te
korespodentno njegova BCD predstava zahtijeva dva ili više nibblesa. Tabela 2.3 prikazuje te binarne i
BCD ekvivalente decimala od 0 do 15. Treba napomenuti da nibble može aktualno predstavljati 16 brojeva
(decimalni od 0 do 15), dok BCD sistem koristi samo deset od njih.

ƒ TABELA 2.3 Decimalne binarne i BCD relacije

Decimalni Binarni BCD


0 0000 0000
1 0001 0001
2 0010 0010
3 0011 0011
4 0100 0100
5 0101 0101
6 0110 0110
7 0111 0111
8 1000 1000
9 1001 1001
10 1010 0001 0000
11 1011 0001 0001
12 1100 0001 0010
13 1101 0001 0011
14 1110 0001 0100
15 1111 0001 0101

Potrebno je shvatiti da je BCD upravo kod u binarnom, za razliku od direktnog (straight) binarnog broja
koji predstavlja aktualnu vrijednost.

Konverzija decimalnog u BCD

Da bi se našla BCD predstava decimalnog broja, svaki decimalni digit nezavisno se predstavlja svojim
odgovarajućim binarnim nibblesom.

ƒ Primjer 2.14 Pretvori (3729)10 u BCD.


Koristeći Tabelu 2.3 svaki decimalni digit predstavlja se odgovarajućim BCD nibbelom što kao
rezultat daje BCD broj

3 7 2 9

0010 0111 0010 1001

Uočava se da je konverzija mnogo jednostavnija od konverzije (3729)10 u binarni. Da bi pretvorili (3729)10


u binarni potrebno je izvršiti ponovljeno dijeljenje da bi se dobilo 111010010001. Primjer 2.14 takođe
ističe neefikasnost BCD predstave. Binarna predstava broja (3729)10 zahtjeva 12 bita, dok BCD predstava
sadrži 16 bita. Zaista, što je veći decimalni broj BCD predstava postaje nekorisnija. Ipak, pogodnost
korištenja BCD sistema praćena je njenom neefikasnošću.

Konverzija BCD u decimalni


Konverzija BCD broja u njegov decimalni ekvivalent lako se može realizovati. Polazeći od bazne tačke
razbijemo binarni obrazac u grupe po četiri bita svaka. Potom se svaka grupa pretvara u odgovarajući
decimalni broj korištenjem Tabele 2.3.

ƒ Primjer 2.15 Pretvori [1001001101010001]BCD u decimalni.

1001 0011 0101 0001

9 3 5 1 ▪
Dakle, ekvivalentni decimalni broj je (9351)10
Treba uočiti da ako je BCD broj iz primjera 2.15 pogrešno intrepretiran kao binarni broj rezultirajući
decimalni broj je dat sa 37713. Primjer 2.15 ponovo demonstrira neefikasnost koja postoji kada se koristi
BCD sistem. Šesnaestbitni BCD broj može predstavljati do četiri decimalna digita (decimalne brojeve do
9999), dok 16-bitni binarni broj može predstavljati do pet decimalnih digita (decimalni broj do 65535).

ƒ Primjer 2.16 Pretvori [110010011.01101]BCD u decimalni.


Grupisanjem u nibblese imamo

1 1001 0011 . 0110 1

1 9 3 . 6 8 ▪
Ekvivalentni decimalni broj je 193.68. Uočimo da u cilju olakšanja konverzije dodajemo vodeće i prateće
nule na krajnju lijevu i krajnju desnu grupu, respektivno (pogledaj također primjere 2.9 i 2.12).

Konverzija BCD u binarni


Pretvaranje BCD u binarni i obrnuto najlakše je izvesti preko posredne konverzije u decimalni ekvivalent.

ƒ Primjer 2.17 Pretvori 100101000001 u binarni.


Pretvaranjem u decimalni BCD broj postaje (941)10. Koristeći sada ponovljeno dijeljenje dobije se
binarni ekvivalent (1110101101) ▪
ƒ Primjer 2.18 Pretvori [101110101101]2 u BCD.
Pretvoren u decimalni binarni broj postaje (2989)10. Onda koristeći tabelu 2.3 BCD ekvivalent je
(0010 1001 1000 1001). ▪

Konverzija BCD u heksadecimalni


Konverzija BCD u heksadecimalni (kao i u druge baze) i obrnuto najbolje se čini preko konverzije bilo
kojeg u decimalni.

ƒ Primjer 2.19 Pretvori (3F6)12 u BCD.


Pretvaranjem (3F6)16 u decimalni dobivamo (1014)10. Ekvivalentni BCD broj je sada (1000000010100).
Podsjetimo da su izostavljene prve tri vodeće nule iz krajnjeg lijevog nibblesa. ▪
ƒ Primjer 2.20 Pretvori [1110010111010]BCD u heksadecimalni.
Decimalni ekvivalent BCD broja je 3975. Konverzija u heksadecimalni je F87. ▪

2.3 PREDSTAVLJANJE BROJA

Brojevi koji se koriste u naučnim proračunima označeni su znakom (sign), veličinom (magnitude) broja i
položajem bazne tačke. Od položaja bazne tačke se zahtijeva da predstavlja razlomljeni, cijeli ili miješani
cijelo-razlomljeni broj. Postoje dva načina za specificiranje položaja bazne tačke: preko predstave njenog
fiksnog (fixed) položaja ili ploveće tačke (floating point). U onom što slijedi ograničiti ćemo našu
diskusiju na predstavu broja sa fiksnom tačkom. Treba istaći, međutim da se razlika između ove dvije
predstave odnosi na područje brojeva koji trebaju da se prilagode digitalnom sistemu sa datom dužinom
riječi.
Dva najuobičajenija korištena položaja bazne tačke su: (1) bazna tačka krajnje lijevo, što broj čini
razlomljenim, striktno manjim od jedan ili (2) bazna tačka krajnje desno što broj čini cijelim. U bilo kojem
od ova dva slučaja, bazna tačka nije stvarno prisutna u digitalnom sistemu, već je njen položaj nametnut
činjenicom da je broj predefiniran kao cijeli ili razlomljeni. Prema tome, u aritmetici cijelih brojeva,
brojevi su poredani desno kao da postoji bazna tačka krajnje desno. U aritmetici razlomljenih, brojevi su
(bez obzira na njihovu dužinu) poredani na lijevo kao da je bazna tačka na krajnje lijevo.
Zapazimo, međutim, da su ova dva dogovora (convetions) u biti ekvivalentni i da je prilično laka
konverzija između cijelih i razlomljenih brojeva. Proces konverzije se označava kao pomjeranje (shifting).
Pomjeranje radne bazne tačke broja baze r za k mjesta u lijevo je ekvivalentno množenju broja sa r-k ;
pomjeranje bazne tačke za k mjesta u desno ima efekat množenja broja sa rk. Na primjer, razmotrimo
binarni broj 10110.101. Ako pomjerimo baznu tačku tri mjesta u lijevo dobijamo 10.110101 i moramo ga
pomnožiti sa 23 da bi obnovili originalnu vrijednost koja je 10110.101 = 23 (10.110101). Ako pomjerimo
baznu tačku originalnog broja za dva mjesta u desno, dobijamo 1011010.1 i moramo ga pomnožiti sa 2-2 da
obnovimo originalnu vrijednost koja je 10110.101 = 2-2 (1011010.1).
Dakle, bilo koja baza r, cijeli broj od n-digita može se razmatrati kao razlomak pomnožen sa konstantnim
faktorom rn i svaki razlomak m digita baze r može da se razmatra kao cijeli broj pomnožen sa konstantnim
faktorom r-m. Međutim, treba zapaziti da pomjeranje nije ograničeno na konverzije cijeli – razlomljeni. Na
primjer, kada množimo ili dijelimo postoje među koraci koji zahtijevaju pomjeranje brojeva na lijevo ili
desno (vidi sekciju 2.4).

Označavanje znaka
Za vršenje bilo koje aritmetičke operacije moramo specificirati broj bilo kao pozitivan ili negativan. Pošto
digitalni sistem ne može raspoznavati konvencionalne znake (+) i (-), moramo uvesti kod (code) koji
predstavlja znak broja. Dogovor o znaku koji se uobičajeno koristi u digitalnom sistemu je da se položaj
krajnjeg lijevog digita rezervira za digit znaka.
Za pozitivne brojeve fiksne tačke, digit znaka postavljen je na 0 i preostali digiti prikazuju istinsku veličinu
broja.
Neka je (N) broj baze r sa cjelobrojnim dijelom od n digita (uključujući digit znaka) i razlomljeni dio od m
digita. Sada se pozitivni broj (N)r ≥ 0 može se predstaviti nizom digita

(N)r = (0 bn-2…b1b0b-1b-2…b-m)r (2.6)

a njegova veličina jednaka je

n−2

∑b r
i =− m
i i (2.7)

Tri različite notacije uobičajeno se koriste za predstavljanje negativnog broja sa fiksnom tačkom: veličina
znaka (sign magnitude) (r-1)-vi komplement i r-ti komplement.
U cilju njihovog uvođenja neka (N) bude negativna verzija broja (N) definisanog jednačinom (2.6). u bilo
kojoj predstavi vrijednost digita znaka je (r-1). U cilju isticanja činjenica da krajnji lijevi digit predstavlja
znak broja on je napisan zacrnjeno (boldface)

Predstavljanje znaka veličine


Kod predstavljanja veličine znaka (sign-magnitude representation), veličina negativnog broja jednaka je
onoj od pozitivnog broja i razlikuju se samo u digitu znaka.
Dakle,
(N)r = ((r-1)bn-2…b1b0b-1b-2…b-m)r (2.8)

gdje digiti bn-2…b1,b0,b-1,b-2,…b-m predstavljaju istinsku veličinu negativnog broja.

ƒ Primjer 2.21 Predstavljanje znaka veličine (predznaka) od (+687)10 koji je pozitivan broj čija je veličina (687)10 je
4-digitni niz (0687)10. Pošto je (r-1) = 9 predstava znaka veličine (-687)10 je (9687)10. ▪
ƒ Primjer 2.22 Predstava znaka veličine (+1101.011)2 je (01101.011)2 dok je predstava znaka veličine (-1101.011)2
po istom principu (11101.011)2. ▪
Predstavljanje (r-1)-tog komplementa

Definicija (r-1)-tog komplementa od (N) ima oblik

(N)r = rn – r-m – (N) (2.9)

Ako predstavimo (N) sa nizom digita

(N) = [(r-1) bn-2…b1b0b-1b-2…b-m]r (2.10a)

onda je svaki digit dat sa

bi = r-1-bi za svako i (2.10b)

Jednačina (2.10b) nam kaže da je (r-1)-ti komplement dobijen oduzimanjem svakog digita od r-1. Pošto je
r=2 u binarnom sistemu, primjena jednačine (2.10b) za generiranje 1-vog komplementa je sasvim
jednostavna. Datom broju, nule su promjenjene u 1 i 1 su promijenjene u 0 da se dobije 1-ti komplement.

ƒ Primjer 2.23 (a) 9-ti komplement od (08457.43)10 dobije se preko jednačine (2.9) sa n=5 i m=2

(N)r = rn – r-m – (N)r = (105 – 10-2 – 04857.43)10 = 9 9999.99 – 0 4257.43 = 9 5149.56

Čitaoc može lako verifikovati da se isti rezultat može dobiti korištenjem jednačine (2.10b)

(b) 9-ti komplement (0.2371)10 je dobiven preko jednačine (2.9) sa n=1 i m=-4

(N)r = rn – r-m – (N)r = (101 – 10-4 – 0.2371)10 = 9.9999 – 0.2731 = 9.7268

(c) sedmi komplement od (0374)8 dat je sa

( N ) r =rn-r-m-(N)r=(104-1-0374)8=(7777-0374)7403

(d) petnaesti komplement od (04B7)16 dat je sa

( N ) r =rn-r-m-(N)r=(104-100-04B7)16=FFFF-04B7=FB48

(e) Da bi našli prvi komplement od (0 1101.101)2 možemo koristiti jedbnačinu (2.9) sa n=5 i m=3.
U ovom slučaju, međutim, jednostavnije je dobiti prvi komplement korištenjem procedure izvedene
jednačinom (2.10b). Ovdje, ako sve 0 zamjenimo sa 1 i sve 1 sa 0 imamo
(N ) 2 =(10010.010) ▪

Predstavljanje r-tog komplementa


U ovom slučaju r-ti komplement od (N)r definisan je sa

( N ) r =rn-(N)r (2.11)

Iz jednadžbe (2.11) vidljivo je da u cilju nalaženja r-tog komplementa broja, ostavljamo sve najmanje
značajne nule nepromjenjene, oduzimamo prvi nenulti najmanje značajan digit i potom oduzimamo sve
ostale digite od r-1. Pošto je kod binarnog sistema r=2 primjena jednačine (2.11) za generiranje drugog
komplementa može se utvrditi kako slijedi. Polazeći od najmanje značajnog bita u datom broju ostavi sve
0 i prvu 1 nepromjenjenu i onda zamjeni 1 sa 0 i 0 sa 1 u svim preostalim bitovima.
Može se, također, dobiti r-ti komplement iz (r-1) komplementa. Upoređujući jednačinu (2.9) i (2.11)
vidimo da dodavanje r-m na (r-1) komplement rezultira u r-tom komplementu. Naredni primjer ilustrira ove
ideje.
ƒ Primjer 2.24 (a) 10-ti komplement od (04857.43)10 dobijen je u jednadžbi (2.11) sa n=5

( N ) r =rn-(N)r=(105-04857.43)10=100,000-04857.43=95142.57

Isti rezultat također možemo dobiti preko 9-tog komplementa datog broja što je pokazano u primjeru
(2.23a). Pošto je m=2 imamo

95142.57+10-2=95142.57

(b) Na osnovu jednačine (2.11) dobijen je 10-ti komplement (02731)10 sa n=1

( N ) r =rn-(N)r=10-(02731)10=9.7269

Pošto je m=4 ovaj rezultat također se može dobiti sabiranjem 10-4 sa 9-tim komplementom datog broja koji
je već izveden u primjeru (2.23b).

(c) 8-mi komplement broja (0374)8 dobijen je sa

( N ) r =rn-(N)r=(104-0374)8=(10000-0374)8=7404

(d) 16-ti komplement (04B7)16 može se dobiti dodavanjem 160 (pošto je m=0) na 15-ti komplement u
primjeru 2.23d. Dakle,

FB48+1=FB49

(e) Da bi se našao 2-gi komplement od (01101.101)2 možemo koristiti proceduru izvedenu na


osnovu jednadžbe (2.11). Ostavljamo najmanje značajan bit nepromijenjen (zapazimo da ne postoji
najmanje značajna nula i nakon toga sve 0 su zamjenjene sa 1 i sve 1 sa o. Dakle,

(N ) 2 =(10010.011) ▪

ƒ Primjer 2.25 Razmotrimo broj sa fiksnom tačkom sa istinskom veličinom (9)10 = (10 01)2. Želimo predstaviti
njegovu pozitivnu i negativnu verziju u notaciji sa tri znaka korištenjem osam bita.
Binarna predstava u bajtima sa fiksnom tačkom za (± 9)10 prikazana je u Tabeli 2.4

ƒ TABELA 2.4 Predstava (± 9)10 sa fiksnom tačkom

Predstava sa fiksnom tačkom +9 -9


Znak – veličina 00001001 10001001
1-vi komplement 00001001 11110110
2-gi komplement 00001001 11110110

Pošto je r=2 vrijednost bita znaka od (-9)10 u sve tri notacije je r-1=1. Da bi dobili predstavu znaka veličine
od (-9)10 jednostavno stavljamo 1 za bit znaka, a preostale bite ostavljamo nepromjenjene (vidi jednačinu
2.8).
Da bi dobili 1-vi komplement koristimo proceduru datu u jednačini (2.10b). 2-gi komplement dobijen je
korištenjem procedure date nakon jednadzbe (2.11).
Zaključujući ovu sekciju, uočimo da bilo koja notacija znaka koja uzima negativu od negativnog broja
uspostavlja pozitivni broj. Dakle,

[(N) ] =(N)
rr r

(r-1)-vi komplement od [(r-1)-ti komplement od (N)r] = (N)r

r-ti komplement od [r-tog komplementa od (N)r] = (N)r


Binarni brojevi sa znakom (predznakom)

Razmotrimo sekvencu binarnih brojeva od 0000 do 1111, koji odgovaraju decimalnim (dekadnim)
brojevima od 0 do 15. Ove iste binarne vrijednosti mogu se koristiti do predstave dekade brojeva sa
znakom (predznakom) od +7 do –8 kako je pokazano u Tabeli 2.5. Više pitanja slijedi iz predstave binarnih
brojeva sa znakom.

ƒ TABELA 2.5 Predstavljanje četvero-bitnih binarnih brojeva sa znakom

Decimalni
1-ti komplement 2-gi komplement Znak-veličine
(dekadni)
+7 0111 0111 0111
+6 0110 0110 0110
+5 0101 0101 0101
+4 0100 0100 0100
+3 0011 0011 0011
+2 0010 0010 0010
+1 0001 0001 0001
+0 0000 0000 0000
-0 1111 0000 1000
-1 1110 1111 1001
-2 1101 1110 1010
-3 1100 1101 1011
-4 1011 1100 1100
-5 1010 1011 1101
-6 1001 1010 1110
-7 1000 1001 1111
-8 Nemoguće 1000 Nemoguće

Da bi ih ilustrirali koristićemo četvero bitne brojeve prikazane u Tabeli 2.5 iako je generalizacija na bilo
koji bitni broj direktna. Treba naučiti da brojevi sa fiksnom tačkom u Tabeli 2.5 imaju jedinstvenu
predstavu izuzev notacije nula u znaku veličine i 1-og komplementa. Vidimo da pozitvne i negativne nule
imaju predstave u ovim dvjema notacijama dok konvencija o 2-gom komplementu ima jedinstvenu nulu.
Razlog za ovo je vrlo jednostavan. Pozitivnu nula predstavljena je sa 0000 u bilo kojoj od ove tri notacije
(obilježavanja). Podsjetimo da je krajnji lijevi bit predznaka.
Pošto je r=2, predstava predznaka veličine negativne nule je 1000 u saglasnosti sa jednadžbom (2.8). Da bi
dobili predstavu 1-vog komplementa negativne nule, koristimo proceduru predstavljenu nakon jednadžbe
(2.10b) što kao rezultat daje 1111. Predstava 2-gog komplementa negativne nule dobija se procedurom
datom nakon jednadžbe (2.11) što kao rezultat daje 0000.
Najveći pozitivni četvero bitni broj jednak je dekadnom (decimalnom) +7. Ne postoji binarni ekvivalent
dekadnog +8 ako koristimo samo četiri bita za predstavljanje ovog binarnog broja sa predznakom. Zaista
ako koristimo konvencionalnu binarnu notaciju i asigniramo 1000 za predstavu 8, onda u binarnoj notaciji
broja sa predznakom položaj 1-vog bita predznaka ukazuje da se broj treba posmatrati kao negativni.
Najmanji negativni 4-ero bitni broj jednak dekadnom (decimalnom) (-8) u notaciji 2-gog komplementa. Ne
postoji pozitivna replika (countport), pošto obadvije +0 i –0 u 2-gom komplementu imaju istu predstavu
(0000) i zauzimaju jedan od oblika pozitivno bitnog broja, ostavljajući jedan fewer za preostali pozitivni
broj. U notaciji prvog komplementa (-0) zauzima jedan od obrazaca bita pozitivnog broja. Ostavljajući
jedan fewer za preostali pozitivni broj. Dakle, najmanji četvero bitni negativni broj 1-vog komplementa
jednak je dekadnom (decimalnom) (-7). U predstavi sa predznakom veličine, veličina najmanjeg
negativnog broja mora biti jednaka onoj od najvećeg pozitivnog broja. Pošto je (+7) najveći pozitivni broj,
najmanji negativni dekadni broj sa predznakom je (-7).

Područje binarnih brojeva sa predznakom

Prethodna zapažanja mogu se generalizirati da bi uspostavili područje cijelih binarnih brojeva sa


predznakom i fiksnom tačkom. Za n-bitni broj, najveći pozitivni cijeli broj koji se može predstaviti sa n
bita uključujući bit predznaka određuje gornju granicu.
Pošto je najveći pozitivni broj u sve tri predstave dat sa (01…1)2, gornja granica jednaka je (2n-1 – 1)10.
Donja granica određena je najmanjim negativnim brojem. Ovo je (11…1)2 = -(2n-1 – 1)10 za broj sa
predznakom veličine i (100…0)2 = -(2n-1 – 1)10 za broj 1-vog komplementa.
Pošto je nula isključivo predstavljena u 2-gom komplementu donja granica u ovom slučaju je (100…0)2 =
-(2n-1 –1)10.

Primjer 2.26 Koje je područje binarnih brojeva sa predznakom predstavljenog sa bajtom podataka ?
Pošto je n=8, gornja granica je (28 – 1)10 = 127. U notacijama veličine sa predznakom 1-vog
komplementa donja granica je –(27 – 1)10 = -127. U 2-gom komplementu, najmanji negativni broj
koji se može predstaviti je –(27)10 = -128.

Kada god prevaziđemo područje brojeva sa znakom (predznakom) dešava se prevelik protok (overflow).
Kako ćemo vidjeti u sekciji 2.4, preveliki protok znači da je rezultat date aritmetičke operacije pogrešan,
radi toga što smo pokušali da prevaziđemo dopušteno područje binarnih vrijednosti.

Binarno kodirani brojevi sa znakom

Konvencije o bitu znaka (predznaka) je također primjenjiva ako koristimo druge binarno kodirane
predstave. Razmotrimo, na primjer, broj (EC)10 = (11101100)2 . Ako se ovaj broj interpretira kao binarni
broj bez znaka (unsigned) ekvivalentan je sa (236)10.
Interpretiran kao binarni broj sa znakom (signed), binarni obrazac (pattern) predstavlja negativan broj pošto
je bit znaka 1. Dakle, ekvivalentan je sa (-108)10 u predstavi sa znakom veličine, (-19)10 u notaciji 1-vog
komplementa i (-20)10 kao 2-gi komplement.
Međutim, nismo tako sretni kada imamo posla sa BCD brojevima.
Razmotrimo, na primjer, dekadni (decimalni) broj +5. Njegova BCD (kao i binarna predstava) je 0101.
Predstave veličina sa predznakom, 1-vog i 2-gog komplementa ovog broja su respektivno 1101, 1010 i
1011 i nijedna ne vrijedi u BCD kodu. Da bi rukovali (to handle) sa BCD brojevima sa znakom, moramo
koristiti bilo kod 10-tog ili 9-tog komplementa.
Drugim riječima, kod koji generira BCD brojeve sa predznakom mora oduzeti svaki BCD digit od bilo
(10)10 ili (9)10. Da bi predstavili znak, moramo dodati jedan ekstra digit. Kodiranje koje se uobičajeno
koristi za ovaj digit znaka je (0000)2 [=(0)10] za pozitivne brojeve i za nulu, te (1001)2[(9)10] za negativne
brojeve.
Razmotrimo, na primjer, 3-digitne BCD brojeve sa četvero digitnim pridruženjem (apprended) za
indiciranje znaka (predznaka). U notaciji sa znakom veličine (+45)10 je kodirano kao (0045)10 = (0000
0000 0100 0101)BCD dok je (-45)10 kodirano kao (9045)10 = (1001 0000 0100 0101)BCD.
Područje 3-digitalnih brojeva kodiranih kao 2-baytni BCD brojevi sa znakom veličine je od (-999)10 do
(+999)10.
Da bi se našao 10-ti komplement od (-45)10, (45)10 mora da se oduzme od 104 (podsjetimo 2.11 i uzmimo u
obzir da brojevi sa znakom u primjeru imaju 4 digita od kojih je svaki digit znaka). Prema tome, (104 – 45
= 9955)10 tako da je (-45)10 kodirano kao (1001 1001 0101 0101)BCD. Područje brojeva u 10-tom
komplementu, sa dvo baytnom BCD predstavom je od (1001 0000 0000 0000)BCD = -(1000)10 do (0000
1001 1001 1001)BCD = (+999)10.
Da bi se dobio 9-eti komplement, oduzimamo 1 od 10-tog komplementa predstave (vidi jednadžbu 2.9) da
se dobije (9954)10 = (1001 1001 0101 0100)BCD.

2.4 ARITMETIČKE OPERACIJE

Podaci u digitalnim sistemima su binarni brojevi i druge binarno kodirane informacije nad kojima se vrše
operacije u cilju dobivanja rezultata sračunavanja. Aritmetika digitalnih sistema razlikuje se od realne u
fundamentalnom pitanju tačnosti brojeva. Pošto brojevi sa kojima se manipuliše u digitalnim sistemima
imaju konačnu dužinu, može se izvršiti samo računanje konačne tačnosti. Kao kontrast, realna aritmetika
može proizvesti arbitrarnu tačnost bez ograničenja na dužinu. Prema tome, digitalna aritmetika može da se
razmatra kao aproksimacija realne aritmetike.
Cilj ove sekcije je da predstavi bazične aspekte digitalne aritmetike. Naša diskusija je ograničena na
aritmetiku sa fiksnom tačkom i razmatramo četiri osnovne operacije sabiranja, oduzimanja, množenja i
dijeljenja. Logička kola koja implementiraju neke od ovih operacija uvedena su u Poglavlju 5.
Sabiranje

Sabiranje je binarna operacija na parovima digita prvog (augend) i drugog (addend) sabirka, pri čemu su
njihove položajne vrijednosti kolone dovedene u liniju.
Počinjemo sa sabiranjem dva digita najmanjeg značaja. Ako suma kolone prevazilazi najveću vrijednost
simbola (brojnog sistema koji se koristi) prenosimo vrijednost jednog bayta u slijedeću kolonu i
reduciramo postojeću sumu kolone za vrijednost jednog bayta, da dobijemo partikularni digit sume.
Ova procedura primjenjuje se na sistemu bilo koje baze kako to ilustruju naredni primjeri. U ovim
primjerima predpostavljamo da su brojevi bez znaka (predznaka). Kasnije ćemo vidjeti kako se postupa sa
brojevima sa znakom (predznakom).

ƒ Primjer 2.27 Saberi (347)10 i (679)10


Stavljajući u liniju kolone imamo

1 (1) (1)
3 4 7 prvi sabirak (augend)
+ 6 7 9 drugi sabirak (addent)
10 12 16
(-10) (-10) (-10)
1 0 2 6
1 0 2 6

Suma najmanje značajnog para digita 7+9=16 prevazilazi najveću vrijednost simbola (9). Mi unosimo
jednu vrijednost baze, 10, na slijedeću kolonu i reduciramo (smanjujemo) postojeću sumu kolone za jednu
vrijednost baze (16-10=6) da dobijemo najmanje značajni digit sume 6. U drugoj koloni sada imamo
4+7+preneseni digit 1=12.
Ponovo, 10, je preneseno u slijedeću kolonu, dok je suma postojeće kolone smanjena za baznu vrijednost
12-10=2. U trećoj koloni imamo sličnu situaciju 3+6+preneseni digit 1=10.
Ponovo, 10, je preneseno u slijedeću kolonu, dok su i prvi i drugi digit sabiraka 0, pa je suma kolone
reducirana za jednu bazu 10-10=0.
Dakle, suma je (1026)10. ▪
ƒ Primjer 2.28 Saberi (1011)2 i (1101)2
Stavljajući kolone u liniju imamo

(1) (1) (1) (1)


1 0 1 1 prvi sabirak (augend)
+ 1 1 0 1 drugi sabirak (addent)
3 2 2 2
(-2) (-2) (-2) (-2)
1 1 0 0 0 ▪

ƒ Primjer 2.29 Saberi (CA67)16 i (5BC)16


Stavljajući u liniju kolone dobivamo

(1) (1) (1)


C A 6 7 prvi sabirak (augend)
+ 5 B C drugi sabirak (addent)
16 18 19
(-16) (-16) (-16)
D 0 2 3 ▪

Oduzimanje

Oduzimanje je binarna operacija nad parovima digita umanjenika (minuend) i umanjioca (subtrahend)
kada su njihove pozicione vrijednosti kolone stavljene u liniju. Počinjemo sa oduzimanjem posljednja dva
najmanje značajna digita. Ako umanjenika prevazilazi umanjitelj, posuđujemo jednu bazu od naredne
kolone i dodajemo na umanjenik, izvršavamo oduzimanje da bi dobili partikularni digit razlike. Kod
oduzimanja slijedeće kolone posuđena bazna jedinica je oduzeta od umanjenika i tada se proces nastavlja.

ƒ Primjer 2.30 Oduzmi (59)10 od (75)10


Postavljanjem kolona u liniju imamo:

(+10)
7 5 umanjenik (minuend
(-1)
- 5 9 umanjilac (subtrahend)
1 6

Isto pravilo se primjenjuje za sistem bilo koje baze, ali općenito oduzimanje je znatno komplikovanije za
implementaciju od sabiranja. Za ilustraciju dodatnih komplikacija predpostavimo da želimo oduzeti 75 od
59. Ovo se izvršava obrtanjem njihovog redoslijeda i oduzimanjem broja sa manjom veličinom od većeg
broja za rezultat i korištenjem znaka većeg. Dakle, 59-75=-(75-59)=-16.
Također, treba zapaziti da smo predpostavlili da su brojevi bez znaka. Međutim, u svakodnevnim
aritmetičkim sračunavanjima koristimo brojeve sa znakom koji je predstavljen notacijom znaka (predznaka)
veličine.
Kada se operacije vrše nad brojevima sa dva znaka, prvo upoređujemo njihove znakove. Ako su dva znaka
ista sabiremo dvije veličine i znak rezultata je isti kao znak dva broja. Ali, ako su znakovi različiti,
upoređujemo dvije veličine, oduzimamo manju od veće i određujemo znak rezultata da je jednak znaku
većeg broja. Slijedeći primjeri ilustruju ove procese.

ƒ Primjer 2.31

+21 + (+45) = + (21+45) = +66


-21 + (-45) = + (21-45) = -66
+21 + (-45) = - (45-21) = -24
-21 + (+45) = + (45-21) = +24

Da bi implementirali ove procese zahtijeva se duga sekvenca odluka: uporediti, sabrati, oduzeti i odrediti
znak. Ovi procesi mogu se implementirati u hardware-u ili software-u, ali su znatno složeniji nego što je
potrebno. Umjesto navedenog, sabiranje i oduzimanje sa fiksnom tačkom mora da se pojednostavi ako
koristimo r-tu ili (r-1)-tu predstavu komplementa kako je pokazano u narednoj sekciji.

Sabiranje i oduzimanje korištenjem komplemenata

Aritmetika r-tog komplementa

Ako su brojevi predstavljeni u notaciji r-tog komplementa onda je jednadžba (2.11) ključna i može se
ponovo napisati u obliku
(N )r + (N )r = r n (2.12)

Njena reinterpretacija kaže da kada je suma dva broja 0 i prenos 1 (koji zanemarujemo) brojevi su bazni
komplementi (radix complements) jedan drugog.

Sabiranje preko r-tog komplementa: Da bi sabrali dva broja predstavljena u r-tom komplementu
saberemo njihove odgovarajuće digite (uključujući digit znaka) i ignorišemo svaki prenos od krajnjih
digita.
Ovakav prenos se označava kao krajnji prenos (end carry). Ovako dobijena suma predstavljena je također
u r-tom komplementu.
Naredni primjeri ilustriraju sabiranje pozitivnih, negativnih i suprotno označenih binarnih brojeva,
predstavljenih u 2-gom komplementu (krajnji lijevi bit predstavlja znak i stavljen je zacrnjeno).
▪ Primjer 2.32 Brojevi dati u zagradama u slijedećim primjerima su dekadni (decimalni) ekvivalenti binarnih brojeva
0 01110 (+14) 1 10010 (-14)
+ 0 01100 (+12) + 1 10100 (-12)
-------------------- ---------------------
0 11010 (+26) 1 1 00110 (-26)

prenos kraja

0 01110 (+14) 1 10010 (-14)


+ 1 10100 (-12) + 0 01100 (+12)
-------------------- ---------------------
1 0 00010 (+2) 1 11110 (-2)

prenos kraja

1 10100 (-12) 0 01100 (+12)


+ 0 01110 (+14) + 1 10010 (-14)
-------------------- ---------------------
1 0 00010 (+2) 1 11110 (-2)

prenos kraja ▪
Slijedeći primjer prikazuje da sabiranje brojeva sa znakom treba da se obavlja pažljivo.

ƒ Primjer 3.3
(a) Saberi (9D)16 i (A4)16 uz predstavu oba broja sa 16-stim komplementom

9D
+ A4
(1) 4 1

Uočimo da su oba sabirka negativni brojevi (da bi ovo vidjeli izvršimo pretvorbu heksadecimalnih brojeva
u binarne). Međutim njihova suma izlazi kao pozitivan broj, što ne može biti tačno.
Razlog za ovo leži u činjenici što smo prevazišli područje negativnih dvo-digitnih heksadecimalnih
brojeva, pa se desio prevelik protok (overflow). Da bi ovo vidjeli napomenimo da je najmanji negativni
broj koji se može predstaviti u notaciji sa znakom sa dva heksadecimalna digita –(128)10. Da bi smo našli
decimalni ekvivalent od (9D)16 i (A4)16, prvo odredimo njihove 16-te komplemente (63)16 i (5C)16,
respektivno. Njihovi decimalni ekvivalenti su –99 i –92, a njihova suma je –191, što je izvan područja.

(b) Saberi (0 0111001)2 i (0 1001011)2, oba predstavljena sa drugim komplementom.

0 0 111 001
+ 0 1 001 011
1 0 000 100

Prvi i drugi sabirak su pozitivni brojevi, ali njihova je suma negativan broj, što je očigledno netačno.
Ponovo smo prevazišli područje pozitivnih 8-bitnih brojeva, odnosno desio se prevelik protok (overflow).

Pošto digitalne arhitekture uključuju brojeve konačne dužine, može doći do prevelikog protoka svaki put
kada se prevaziđe područje brojeva sa znakom, kako je pokazano u primjeru 2.33. Kada su znaci dva broja
koja se sabiru suprotni, ne može doći do prevelikog protoka. Ako su znaci dva broja koja treba da se saberu
isti, može doći do prevelikog protoka zavisno od veličine dva broja, a koji se može detektovati
razmatranjem znaka dobivenog rezultata. Ako je znak rezultata suprotan od znakova operanada došlo je do
prevelikog protoka i rezultat je netačan. Digitalni sistem mora da se provjeri na preveliki protok i obezbjedi
njegova indikacija ako do prevelikog protoka dođe.
Oduzimanje preko r-tog komplementa: Da bi oduzeli dva broja koristeći r-ti komplement potrebno
je dodati umanjenik r-tom komplementu umanjioca. Ako postoji kraj prenosimo ga izvan digita znaka i
ignorišemo. Dobijena razlika je također predstavljena u r-tom komplementu.
Slijedeći primjer ilustruje oduzimanje pozitivnih, negativnih i binarnih brojeva sa suprotnim znakom,
predstavljenih u r-tom komplementu.

ƒ Primjer 2.34 Brojevi prikazani u zagradama u slijedećim primjerima su decimalni ekvivalenti binarnih brojeva.

0 01110 (+14) 0 01110


- 0 01100 (+12) + 1 10100 (2-gi komplement umanjioca)
1 0 00010 (+2)
prenos kraja

0 01100 (+12) 0 01100


- 0 01110 (+14) + 1 10010 (2-gi komplement umanjioca)
1 11110 (-2)

0 01110 (+14) 0 01110


- 1 10100 (-12) + 0 01100 (2-gi komplement umanjioca)
0 11010 (+26)

1 10010 (-14) 1 10010


- 0 01100 (+12) + 1 10100 (2-gi komplement umanjioca)
1 1 00110 (-26)
prenos kraja

1 10010 (-14) 1 10010


- 1 10100 (-12) + 0 01100 (2-gi komplement umanjioca)
1 11110 (-2)

1 10100 (-12) 1 10100


- 1 10010 (-14) + 0 01110 (2-gi komplement umanjioca)
1 0 00010 (+2)

prenos kraja ▪

Oduzimanje suprotno označenih brojeva može proizvesti rezultat koji prevazilazi područje brojeva r-tog
komplementa, dakle dolazi do prevelikog protoka. Da bi ovo ilustrirali razmotrimo oduzimanje 10110101
(decimalni -75) od 00111001 (decimalni +57). Ako dodamo umanjilac 2-gog komplementa na umanjenik
dobijamo 10000100, što je očigledno netačno. Pošto je gornja granica područja 8-bitnih binarnih brojeva
(127)10 tačan rezultat (koji je 13210) prevazilazi područje, te dolazi do prevelikog protoka. Kako vidimo
preveliki protok kod oduzimanja, sličan onom kod sabiranja (vidi primjer 2.33), može da se detektuje
preko ispitivanja najznačajnijeg bita rezultata.

Artimetika r-tog komplementa

Možemo također sabirati i oduzimati brojeve predstavljene u notaciji (r-1)-og komplementa. Ovdje je
ključna jednadžba (2.9)
Sabiranje preko (r-1)-og komplementa : Da bi sabrali dva broja, saberemo njihove odgovarajuće digite
(uključujući digite znaka). Ako postoji prenos najznačajnijeg lijevog digita, povećava se suma za 1 i
ignorišemo prenos broja. Alternativni opis procesa je kako slijedi. Ako postoji prenos broja, onda (uzmi ga)
i dodaj ga rezultatu. Proces se označava kao kraj oko prenosa (end-around carry). Ovako dobijena suma
predstavljena je u (r-1)-om komplementu.
Sljedeći primjeri ilustriraju sabiranje pozitivnih, negativnih i suprotno označenih binarnih brojeva
predstavljenih u r-tom komplementu. Krajnji lijevi bit predstavlja znak i označen je zacrnjeno.

ƒ Primjer 2.35 U narednim primjerima brojevi dati u zagradama su decimalni ekvivalenti binarnih brojeva.

0 01110 (+14) 1 10001 (-14)


+ 0 01100 (+12) + 1 10011 (-12)
0 11010 (+26) 1 1 00100

prenos
broja
1 (prenos oko kraja)
1 00101 (-26)

0 01110 (+14) 1 10001 ( -14)


+ 1 10011 ( -12) + 0 01100 (+12)
1 0 00001 1 11101 ( -2)

prenos
broja
+ 1 (prenos oko kraja)
0 00010 ( +2)

1 10011 ( -12) 0 01100 (+12)


+ 0 01110 (+14) + 1 10001 ( -14)
1 0 00001 1 11101 ( -2)

prenos
broja
+ 1 (prenos oko kraja)
0 00010 ( +2)

Oduzimanje preko (r-1)-og komplementa : Za oduzimanje u (r-1)-tom komplementu, sabirat ćemo (r-
1)-ti komplement umanjioca sa umanjenikom. Ako se dobije prenos broja dodajemo ga rezultatu (prenos
oko broja). Dobijena razlika također je predstavljena u (r-1)-tom komplementu.
Sljedeći primjeri ilustriraju oduzimanje pozitivnih, negativnih i suprotno označenih binarnih brojeva
predstavljenih u r-tom komplementu.
▪ Primjer 2.35 U narednim primjerima brojevi dati u zagradama su decimalni ekvivalenti binarnih brojeva.

0 01110 (+14) 0 01110


- 0 01100 (+12) + 1 10011 (1-vi komplement umanjioca)
1 0 00001
prenos
broja
+ 1 (prenos oko kraja)
0 00010 ( +2)

0 01100 (+12) 0 01100


- 0 01110 (+14) + 1 10001 (1-vi komplement umanjioca)
1 11101 ( -2)

0 01110 (+14) 0 01110


- 1 10011 (- 12) + 0 01100 (1-vi komplement umanjioca)
0 11010 (+26)

1 10001 (- 14) 1 10001


- 0 01100 (+12) + 1 10011 (1-vi komplement umanjioca)
1 1 00100
prenos
broja
+ 1 (prenos oko kraja)
1 00101 (-26)

1 10001 (- 14) 1 10001


- 1 10011 (- 12) + 0 01100 (1-vi komplement umanjioca)
1 11101 (-2)

1 10011 (- 12) 1 10011


- 1 10001 (- 14) + 0 01110 (1-vi komplement umanjioca)
1 0 00001
prenos
broja
+ 1 (prenos oko kraja)
0 00010 ( +2)

Sabiranje i oduzimanje sa brojevima u notaciji (r-1)-tog komplementa može kao rezultat da ima preveliki
protok u slučaju ako je prevaziđeno područje predstave (r-1)-tog komplementa. Slično slučaju kada su
brojevi u r-tom komplementu, može nastupiti preveliki protok kad sabiremo dva broja koja imaju isti
predznak ili kad oduzimamo dva suprotno označena broja. U bilo kojem od slučaja, detektujemo prevelik
protok preko osmatranja najznačajnijeg digita rezultata.

Množenje i dijeljenje

Zaključimo naš uvod u aritmetičke operacije razmatranjem množenja i dijeljenja sa brojevima sa fiksnom
tačkom i znakom (predznakom). U ovom što slijedi ograničićemo našu diskusiju na binarne brojeve.
Uočimo, međutim, da se izvedena procedura može primijeniti na sistem bilo koje baze.
Množenje je ponovljeni proces operacije lijevog pomjeranja i sabiranja. Polazeći od najmanje značajnog
bita (lsb) množitelja (multiplier) i ako je 1, množenik (multiplicant) se kopira u formi prvog parcijalnog
proizvoda; ako je 0 i prvi parcijalni proizvod formira sekvenca sastavljena od nula. U slijedećem, ispituje
se drugi bit množitelja. Ako je 1, drugi parcijalni proizvod je kopija množenika, pomjera se za jedno
mjesto na lijevo u odnosu na prvi parcijalni proizvod. Ako je 0, onda je drugi parcijalni proizvod sekvenca
sastavljena samo od nula. Proces se nastavlja sve dok se ne iscrpe svi biti množitelja. Nakon toga se svi
parcijalni proizvodi sabiraju u obliku krajnjeg proizvoda.
Znak proizvoda određen je formom znaka množenika i množitelja. Ako su isti, proizvod je pozitivan, a ako
ne, proizvod je negativan.
Za ilustraciju procesa množenja razmotrimo slijedeći primjer. Znaci brojeva u ovom primjeru
predpostavljeni su kao isti i radi toga su izostavljeni.

ƒ Primjer 2.37
11001 množenik
x 01101 množitelj
11001 množitelj lsb=1; kopiraj množenik
00000 množiteljev bit=0; sekvenca nula, pomjerena u lijevo
parcijalni 11001 množitelj bit=1; kopiraj množenik i pomjeri u lijevo
proizvodi 11001 množiteljev bit=1; kopiraj množenik i pomjeri u lijevo
00000 . množiteljev bit=0; sekvenca nula pomjerena u lijevo
101000101 saberi sve parcijalne proizvode za formiranje krajnjeg proizvoda

Dijeljenje je ponovljeni proces operacija upoređivanja, pomjeranja u lijevo i oduzimanja. Oduzimanje se


obično provodi korišćenjem predstave 2-gog komplementa. Predpostavimo da je djeljenik (divident) X n-
bita dug i da je djelitelj (divisor) Y m-bita dug. Neka je sa Xm označeno m najznačajnijih bita od X, uz m ≤
n.
Proces dijeljenja počinje upoređivanjem Y sa Xm. Ako je Y > Xm, onda upoređujemo Y sa Xm+1 i nastavljamo
tako činiti dok je Xm+i ≥ Y. U ovoj tački ulazimo sa 1 u najznačajniji bit (msb) veličine Q. Sada je Y
pomjereno u desno za i mjesta i oduzeto od Xm+i. Ovdje m+i+1 msb od X je dodat na parcijalni ostatak.
Ako je parcijalni ostatak veći od Y, slijedeći msb od Q je 1 i Y se pomjera u desno za jedno mjesto i
oduzima od parcijalnog ostatka. Ako je drugačije, početni proces se ponavlja, pri čemu se stavlja 0 na
pogodan bit Q-a. Proces se nastavlja dok se ne iscrpe svih n bita od X, i u toj tački dobijamo posljednji
ostatak. Znak kvocijenta određen je znacima djeljenika i djelitelja. Ako su isti kvocijent je pozitivan,
drugačije je kvocijent negativan. Da bi ilustrirali proces djeljenja razmotrimo slijedeći primjer.
Predpostavlja se da su znaci brojeva u ovom primjeru isti i da su izostavljeni.

ƒ Primjer 2.38

(a) Uporedi pet najznačajnijih bita X sa Y; X<Y.

djeljenik X djelitelj Y kvocijent Q


0110110110 / 10001 = 11001
01101

(b) Šest bita od X:X>Y; pomjeri u desno Y i oduzmi, uvedi msb od Q=1.

011011
- 10001
01010

(c) Parcijalni ostatak>Y; pomjeri u desno Y i oduzmi, unesi 1 u Q.

010100
- 10001
00011

(d) Parcijalni ostatak<Y; pomjeri u desno; unesi 0 u Q.

000111
(e) Parcijalni ostatak<Y; pomjeri u desno; unesi 0 u Q.

001111

(f) Parcijalni ostatak>Y; pomjeri u desno Y i oduzmi; unesi 1 u Q.

011110
- 10001
01101 posljednji ostatak

Uočimo da operacija dijeljenja može rezultirati prevelikim protokom u kvocijentu. Preveliki protok može
da se desi u više situacija, ali sigurno ako je djelilac nula.

2.5 BINARNI KODOVI

Do sada smo se već susreli sa nekim numeričkim kodovima. Interpretirali smo binarne obrasce (patterns)
koji predstavljaju binarni, decimalni, oktalni, heksadecimalni, BCD, veličine sa znakom, te brojeve 1-vog i
2-gog komplementa. U ovoj sekciji razmotrit ćemo neke dodatne numeričke kodove, instrukcione kodove i
kodove za detekciju greški.
Binarni kodovi mogu biti uspostavljeni za bilo koji skup diskretnih elemenata. Ako skup sadrži 2m
diskretnih elemenata, onda se bar m bita zahtijeva za njegovo kodiranje. Na primjer, ako skup sarži 12
elemenata, onda se bar četiri bita zahtijevaju za jedinstveno kodiranje svakog od ovih elemenata. Sa četiri
bita možemo kodirati do maksimalno 16 različitih elemenata. Istaknimo, međutim, da ne postoji
maksimalni broj bita za binarno kodiranje. Na primjer, možemo koristiti 12 bita za kodiranje 12 elemenata.
U ovom kodu, prvom elementu može biti dodjeljen oblik 000000000001, drugi element može biti kodiran
sa 000000000010, i tako dalje do dvanaestog elementa kodiranog sa 100000000000.

Decimalni kodovi

U BDC kodu, svaki decimalni digit kodiran je kao pravi 4-bitni binarni broj. BCD kod se također naziva i
kao 8421 kod zbog toga što se koriste sukcesivne vrijednosti eksponenta 2 (23, 22, 21, 20) za konverziju
binarnog bitnog oblika u njegov ekvivalentni decimalni digit. Pošto je svaki bit pomnožen sa
odgovarajućom težinom i suma otežanih bitova daje decimalni digit, BCD kod se označava kao otežani
kod (weighted code).
Veliki broj drugih različitih kodova može da se formuliše permutacijom četiri bita da bi se predstavilo
deset decimalnih digita. Neki primjeri najuobičajnijih 4-bitnih decimalnih kodova prikazani su u Tabeli
2.6. Treba uočiti da otežavanje kodova može biti pozitivno ili negativno. Zapazimo također da neki kodovi
(npr. 2421 kod) koriste slične težine za različite pozicije bita. Dakle, predstave nekih decimalnih digita nisu
jedinstvene u ovim kodovima.

ƒ TABELA 2.6 Primjer 4-bitnih decimalnih kodova

Decimalni
BCD 8421 2421 84 (-2) (-1) Excess 3
Digit
0 0000 0000 00 00 0011
1 0001 0001 01 11 0100
2 0010 0010 01 10 0101
3 0011 0011 01 01 0110
4 0100 0100 01 00 0110
5 0101 1011 10 11 1000
6 0110 1100 10 10 1001
7 0111 1101 10 01 1010
8 1000 1110 10 00 1011
9 1001 1111 11 11 1100

Da se dobije decimalni ekvivalent riječi otežanog koda, moramo pomnožiti svaki bit sa njegovom
respektivnom težinom. Na primjer, kodirana riječ 1101 u pozitivno otežanom kodu 2421 ekvivalentna je sa
1·2+1·4+0·2+1·1=(7)10 , dok je 1011 u kodu 84(-2)(-1) ekvivalentna sa 1·8+0·4+1·(-2)+1·(-1)=(11)10. Neke
kodirane riječi mogu da vrijede po jednoj kodnoj šemi, a bezvrijedne po drugoj. Na primjer, 1101 vrijedi u
2421 kodu, a bezvrijedni u 84(-2)(-1) kodu pošto je 1·8+0·4+1·(-2)+1·(-1)=(11)10. Neke kodne riječi, kao
1011 vrijede po obadvije šeme.
Pošto koristimo samo deset od mogućih 16 kodiranih riječi sa četiri bita, šest kodne riječi su uvijek
bezvrijedne sa bilo kojom decimalnom kodnom šemom. Za 2421 kod riječi sa bezvrijednim kodom su
0101, 0110, 1000, 1001 i 1010; a za 84(-2)(-1) kod bezvrijedne su kodne riječi 0001, 0010, 0011, 1100,
1101 i 1110.
Drugi skupovi težina su mogući. Možemo konstruirati 4-bitne decimalne kodove korištenjem težina
(6,3,2,1), (6,4,2,-3), (4,2,2,1), (7,4,2,1) i njih ilustrirati sa nekoliko primjera. Tabela 2.6 prikazuje primjer
neotežanog koda poznatog kao excess 3 kod. Ovdje je svaki decimalni digit kodiran dodavanjem
(3)10=(0011)2 na svoj BCD ekvivalent i tako dobijen binarni kod u formi 8421. Na primjer, decimalno 8 je
kodirano sa 1011 što je decimalno 11 = (=8+3) u 8421 kodu.
Nedostatak korištenja BCD koda je teškoća u sračunavanju njegovog 9-tog komplementa. Nasuprot tome
2421, 84(-2)(-1) i excess 3 kodovi imaju autokomplementarnu osobinu gdje je 9-ti komplement svakog
decimalnog digita dobiven zamjenom 1-vog i 0-tog u njegovom binarnom kodu. Da bi bio auto-
komplementaran, kod mora biti simetričan oko centra. Ovo znači da za otežani kod suma težine mora biti
jednaka 9, dok za neotežani kod binarna suma kodnih riječi decimalnog digita i njegovog 9-tog
komplementa mora biti jednaka kodnoj riječi 9. Čitaoc može ovo lako verificirati, izuzev za BCD, da
kodovi dati u Tabeli 2.6 zadovoljavaju ove uslove i takođe su ohrabreni da pokažu da su otežani kodovi
(5,2,1,1), (4,2,2,1) i (6,4,2,-3) također autokomplementarni. Međutim, pošto slične težine rezultiraju u
nejedinstvenim kodnim riječima, moramo verificirati da je generisani skup zaista autokomplementaran
(vidi Problem 2.21).
Autokomplementarna osobina, demonstrirana u slijedećem primjeru je veoma korisna kod izvršavanja
aritmetičkih operacija sa binarno kodiranim decimalnim brojevima i kada se oduzimanje vrši preko 9-tog
komplementa.

ƒ Primjer 2.39 Odredi 9-ti komplement od (38)10 u obliku četvero kodiranih šema, Tabele 2.
(Zbog jednostavnosti odbaci digit znaka).

BCD: Da se nađe BCD predstava 9-tog komplementa od 38 moramo koristiti jednadžbu (2.9) što daje 61 i
nakon toga primjeniti Tabelu 2.6. Dakle, (38)10=(00111000) i (61)10=(01100001),
2421: (38)10=(00111110). Komplementirajući svaki bit dobijamo (11000001)=(61)10
84(-2)(-1): (38)10=(01011000). Komplementirajući svaki bit dobijamo (10100111)=(61)10
Excess 3: (38)10=(01101011). Komplementirajući svaki bit dobijamo (10100111)=(61)10

Kako se vidi iz primjera, auto-komplementni decimalni kodovi omogućavaju nam da dobijemo 9-ti
komplement na jednostavan pravolinijski način, oslobađajući nas da koristimo jednadžbu (2.9). Ova
osobina omogućava nam da implementiramo vrlo jednostavno logički krug da generira 9-ti komplement.
Ranije smo spomenuli da je četiri bita maksimalni broj bita koji se zahtijeva da se kodiraju deset decimalni
digiti. Ipak, ponekad je nužno koristiti više od četiri bita. Dva ovakva primjera prikazana su u Tabeli 2.7.
Oba ova koda su korisna za detekciju greške, kako će biti objašnjeno u narednoj sekciji. Bikuinari
(biquinary) kod je 7-bitni otežani kod, dok je 2-van-od-5 (2-out-of-5) kod 5-bitni neotežani kod. Oba se
karakterišu da imaju samo dva 1-va u svakoj riječi koda.
Zapazi kako je konstruisan bikuinari kod: Samo 01 pod najznačajnijom težinom {5,0} ukazuje da je
decimalni digit u području od 0 do 4, dok 10 pod ovom težinom ukazuje da je decimalni u području od 5
do 9. Ovdje 1 pod bilo kojom preostalom težinom ukazuje na položaj digita unutar područja, dakle, 1 pod
najmanje značajnom težinom {0} da je decimalni digit prvi unutar područja, dok 1 pod težinom {1}
ukazuje da je decimalni digit drugi unutar područja i tako dalje.
ƒ TABELA 2.7 Primjeri decimalnih kodova koji imaju više od četiri bita

Decimalni digit Bikuinari 5043210 2 izvan od 5


0 0100001 00011
1 0100010 00101
2 0100100 00110
3 0101000 01001
4 0110000 01010
5 1000001 01100
6 1000010 10001
7 1000100 10010
8 1001000 10100
9 1010000 11000

Izvođenje riječi od 2-van-od-5 koda je sasvim jednostavno. Svaka riječ koda mora imati samo 1 bit, dok su
preostala tri bita 0. Uoči, međutim, da šema kodiranja nije jedinstvena, nego riječi koda mogu da budu
permutirane u odnosu na decimalne digite gdje svaka permutacija proizvodi validni 2-van-od-5 kod.

Gray-ov kod

Mnoge praktične primjene zahtijevaju kodove u kojima se sukcesivne riječi koda razlikuju samo u jednom
bitu. Ovi kodovi se označavaju kao ciklički kodovi (cyclic codes), a među njima je Gray-ov kod značajan
član. Tabela 2.8 prikazuje primjer 4-bitnog Gray-ovog koda.

ƒ TABELA 2.8 4-bitni Gray-ov kod

Decimal Gray-ov kod


0 0000
1 0001
2 0011
3 0010
4 0110
5 0111
6 0101
7 0100
8 1100
9 1101
10 1111
11 1110
12 1010
13 1011
14 1001
15 1000

Kao što se može vidjeti svaka binarno kodirana riječ razlikuje se od bilo naredne ili prethodne u promjeni
samo jednog bita od 1 na 0 ili od 0 na 1. Kod prikazan u Tabeli 2.8 nije jedini mogući ciklični kod, već se
mogu izvesti drugi kodovi sa sličnim karakteristikama. Gray-ov kod se često koristi u situacijama gdje
drugi binarni kodovi mogu dovesti do pogrešnih ili sumnjivih rezultata tokom tranzicije jedne kodirane
riječi na drugu u kojoj se više od jednog bita koda mijenja.
Razmotrićemo, na primjer, korištenje koda 8421 i zahtjev za tranziciju od 0111 na 1000. Ovakva tranzicija
traži da se sva četiri bita jednovremeno mijenjaju. Zavisno od logičkog kruga koji generira bitove, može da
postoji značajna razlika u vremenima tranzicije različitih bitova. Na primjer, ako se najznačajniji bit
mijenja brže od ostatka, onda idući od 0111 ka 1000, momentalno ćemo dobiti pogrešan kod 1111. Pojava
ove kodirane riječi proizvodi pogrešnu operaciju čiji ishod zavisi od relativnih vremena tranzicije bita koji
se mijenjaju u kolu čiji su ulazi ovi bitovi. Situacija slična ovoj, u kojoj ishod zavisi od relativnih vremena
tranzicije promjenjivih bitova označava se kao utrka (race). Korištenje Gray-ovog koda eliminiše ovaj
problem, što se po tranziciji dešava samo promjena jednog bita i bilo kakva utrka između bitova neće imati
nikakav uticaj na rezultat.
Gray-ov kod pripada klasi kodova označenih kao reflektirani kodovi (reflected codes). Izraz reflektivni
kod vodi porijeklo od metoda korištenog za njegovo izvođenje.

0 0 00 000 0000
1 1 01 001 0001
(a) 1 11 011 0011
0 10 010 0010
(b) 10 110 0110
11 111 0111
01 101 0101
00 100 0100
(c) 100 1100
101 1101
111 1111
110 1110
010 1010
011 1011
011 1001
000 1000

(d) (e)

SLIKA 2.1 Konstrukcija Gray-ovih kodova

Kako pokazuje slika n-ti kod generiran je reflektiranjem (n-1)-og koda. Prvi biti 0 i 1 napisani su u koloni
(a), reflektrirajuća linija podvučena je ispod 1 i kolona je reflektirana oko nje (b). Dvije 0 su dodate iznad
reflektirajuće linije i dvije 1 su dodate ispod nje, kako pokazuje gornji dio (c). Druga reflektirajuća linija je
povučena (c) i proces se nastavlja na (d) i (e). Ovaj proces se nastavlja do dobijanja željenog broja
kombinacija.

Alfanumerički kodovi

Mnoge primjene koriste podatke koji uključuju ne samo brojeve već također slova alfabeta, kao i ostale
specijalne karaktere. Ovakvi podaci zovu se alfanumerički podaci i mogu da se predstave numeričkim
kodovima. Kada su brojevi uključeni u podatke, mogu se također predstaviti specijalnim kodovima.
Jedan alfanumerički skup podataka tipično uključuje 26 slova alfabeta (moguća velika i mala slova), deset
decimalnih digita i određen broj specijalnih simbola kao što su +, =, “, $ i !.
Dva najuobičajenija alfanumerička koda su ASCII – američki standardni kod za razmjenu informacija
(American Standard Code for Information Interchange), prikazan u Tabeli 2.10. ASCII je 7-bitni kod, dok
je EBCDIC 8-bitni kod. Pošto mnogi digitalni kodovi rade sa 8-bitnim (bayt-nim) kodovima mnogo
efikasnije, jedna 8-bitna verzija nazvana ASCII-8 (ili USASCII-8) također je razvijena i prikazana u
Tabeli 2.11.
Kako možemo vidjeti iz ovih tabela dati su i neki dodatni specijalni kodovi skupu alfanumeričkih
karaktera. Ovi rezervirani kodovi koriste se kao komunikacioni signali u primjenama gdje dolazi do
prenosa podataka, između digitalnog sistema koji je spojen preko komunikacionih linija. Na primjer, linije
napajanja – LF (line feed) i nosilac povrata – CR (carriouge return) se koriste u spoju sa štampačem; BEL
se koristi za aktiviranje zvona; ACR (acknowledge), NAK (negative acknowledge) i DLE veza pobjega
podataka (data link escape) su razmjenjeni signali preko komunikacionih linija.
Najmanje značajni digiti (nibble)

najznačaj-
niji digit
(nibble)

▪ TABELA 2.9. ASCII kod


Najmanje značajni digiti (nibble)

najznačaj-
niji digit
(nibble)

▪ TABELA 2.10 EBCDIC kod


Najmanje značajni digiti (nibble)

najznačaj-
niji digit
(nibble)

ƒ TABELA 2.11 ASCII-8 kod


Svaki kod može da se očita iz tabela bilo u binarnom ili heksadecimalnom formatu. Heksadecimalni se koristi
samo za stenografiju; u digitalnim sistemima sa podacima se rukuje digitalno. Da bi se našao kod koji
odgovara bilo kojem karakteru, treba locirati položaj u odgovarajućoj tabeli, korektno očitati vrstu da bi se
našao najznačajniji heksadecimalni digit (binarni nibble), a nakon toga očitati kolonu da bi se našao najmanje
značajni heksadecimalni digit (binarni nibble). Da bi se našao karakter pridružen binarnom ili
heksadecimalnom kodu moramo činiti suprotno. Koristimo najznačajniji digit da lociramo vrstu karaktera i
najmanje značajni digit za lociranje njegove kolone. Zapazimo da, mada je ASCII 7-bitni kod Tabela 2.9 to
prikazuje u formi bayta dodavanjem vodeće nule na binarnu predstavu najznačanjijeg digita.

ƒ Primjer 2.40 Pronađi heksadecimalni i binarni kod za malo slovo k u tri alfanumeričke kodne šeme.
ASCII : Lociranjem slova k u Tabeli 2.9 vidi se da je njegova vrijednost u vrsti
(6)16=(0110)2 a njegova vrijednost u koloni je (B)16=(1011)2. Dakle ASCII kod za k je
(6B)16=(01101011)2.
EBCDIC : Korištenjem Tabele 2.10 EBCDIC kod za k je (92)16=(10010010)2.
ACSII-8 : Korištenjem Tabele 2.11 ASCII-8 kod za k je (EB)16 ili (11101011)2.

ƒ Primjer 2.41 Nađi karakter predstavljen sa (01011011)2 ili [ekvivalent (5B)16] u tri alfanumeričke kodne šeme.
ASCII : Karakter je lociran u Tabeli 2.9 na presjeku (5)16 vrste i (B)16 kolone i njegov
simbol je [ .
EBCDIC : Korištenjem Tabele 2.10 simbol je $.
ASCII-8 : Korištenjem Tabele 2.11 karakter je;.

ƒ Primjer 2.42 ASCII i EBCDIC kodovi za neke nizove karaktera prikazani su u Tabeli 2.12

Niz karaktera ASCII EBCDIC


RAČUNAR 43 4F 4D 50 55 54 45 52 C3 D6 D4 D7 E4 E3 C5 D5

$ specijalni broj 24 49 6E 74 65 67 65 72 3B C9 95 A3 85 87 85 99

04/12/84 30 34 2F 31 32 2F 38 34 F0 F4 61 F1 F2 61 F8 F4

ƒ TABELA 2.12 Kodovi niza karaktera za primjer 2.42

Ostavili smo prostora između baytova da učinimo kodove čitljivim; međutim takvi prostori u aktuelnoj
komunikaciji podataka ne postoje. Zapazimo da brojevi u tabeli (04,12 i 84) imaju kodove koji se razlikuju
od njihove uobičajene BCD predstave.

Kodovi za detekciju greške

Digitalni podaci tipično su pripremljeni na ulaznom uređaju (tastatura – keyboard) i potom poslani preko
neke komunikacione veze i pročitani od strane digitalnog sistema (računara).
Proces prenosa digitalne informacije je predmet greške. Mada je moderna oprema projektovana da reducira
greške, čak i ne česte greške mogu uzrokovati ozbiljne probleme. Dakle, bitno je detektovati greške kad je
to moguće.
Ako se greške ne dešavaju često može se pokušati retransmisija podataka. Međutim u modernim
digitalnim komunikacionim sistemima ovo se ne smatra efikasnim. Retransmisija podataka za svaku
detektovanu grešku očigledno je suviše skupa. Iz ovih razloga razvijene su tehnike za korekciju
detektiranih grešaka. Upotreba ovih tehnika uobičajeno implicira još komplikovanije sisteme. Optimalno
rješenje, dakle, leži između ova dva prilaza – između korištenja jednostavnih i relativno jeftinih sistema
koji ne ispravljaju detektirane greške i korištenja sofisticiranih i skupih sistema sposobnih da korigiraju
mnoge greške. U ovim sistemima razmotrićemo samo kodove za detekciju greški.
Kod detektiranja greške je binarni kod koji detektira digitalne greške tokom prenosa podataka. Jedna od
najšire korištenih šema za detekciju grešaka je metod pariteta. On znači uvođenje dodatnog bita, pariti
bita u binarnu poruku koja se prenosi sa jedne lokacije na drugu. U slijedećim diskusijama predpostavlja se
da je paritetni bit dodat poruci u krajnje desnu poziciju. On također može biti dodat na krajnju lijevu
poziciju.
Paritetni bit može da se projektuje kao parni ili neparni paritet. Kod metoda parnog pariteta, paritetni bit je
postavljen na 1 tako da je totalni broj 1-ca u binarnoj poruci (uključujući i bit pariteta) paran broj;
drugačije se postavlja na 0. Predpostavimo, na primjer, da želimo prenijeti EBCDIC karakter $ čiji je
binarni kod 01011011. Pošto on sadrži neparan broj jedinica, dodatni bit pariteta postavlja se na 1 da se
ukupan broj jedinica učini parnim. Prema tome, kod koji će stvarno biti prenesen je 010110111. Za
EBCDIC karakter C kod koji će biti prenesen je 110000110. Metod neparnog pariteta koristi se tačno na
isti način osim što je bit pariteta postavljen na 1, tako da je ukupan broj 1-ca, uključujući i bit pariteta
neparan broj.
Bez obzira da li koristimo parni ili neparni paritet, bit pariteta predstavlja integralni dio koda. Razmotrimo
sliku 2.2.

Slika 2.2 Prenos digitalnih podataka korištenjem provjere pariteta ***Str 55

koja pokazuje blok dijagram digitalnog sistema prenosa podataka koji koristi provjeru pariteta. Na kraju
pošiljaoca binarna poruka prvo je primjenjena na generator pariteta koji proizvodi odgovarajući bit
pariteta. Poruka uključuje bit pariteta, koji je nakon toga prenesen na svoje odredište. Na prijemnom kraju
dolazeća poruka je primjenjena na detektor pariteta koji verificira integritet informacije pariteta. Ako broj
1-ca u poruci odgovara (matches) generiranom paritetu poruka se smatra korektnom pa detektor pariteta
izdaje OK signal koga prihvata prijemnik podataka. Drugačije, ako se poruka detektira kao netačna
detektor pariteta izdaje signal GREŠKA, koji se može koristiti kao zahtijevana transmisija.
Metod pariteta je ograničen sa te strane što se može koristiti za detekciju greške u poruci, ali ne može
detektovati u kojem je bitu greška. Šta više, bez obzira da li koristimo parni ili neparni paritet, metod
pariteta može detektirati samo neparni broj greški (vidi zadatak 2.28). Postoje mnogo elaboriranije šeme
koje ne samo što provjeravaju multiple greške, već detektuju i gdje su greške, te ih koriguju.
Drugi primjer koda za detekciju greške je 2-van-5 kod, prikazan u Tabeli 2.7. Ovaj kod je tako konstruisan
da je svaki decimalni digit prestavljen binarno kodiranom rječju u kojoj su dva bita 1, a svi ostali 0. Prema
tome, ako digit koji stiže u prijemnik ima tri 1, pokazaće se greška i digit će biti odbačen kao nekorektan.
Kod 2-van-5 je sposoban da detektira svaku grešku koja sadrži promjenu jednog ili više bita što uzrokuje
da se broj 1-ca razlikuje od 2. Međutim, ima slučajeva gdje se može desiti simultana promjena dva bita, pa
se različiti digiti, koji također imaju dvije 1, proizvode i prihvaćaju sa neuspjehom koda da detektira
grešku. Na primjer, ako je broj 4 predstavljen kodom 01010 prenesen netačno i najmanje značajan bit
promijenjen u 1, doći će do trenutne detekcije greške. Međutim, ako je drugi najznačajniji bit također
afektiran u isto vrijeme, onda će rezultantna kodirana riječ 01001, koja predstavlja decimalno 3, biti
prihvaćena sa nedetektiranom greškom.
Bikuinari kod prikazan u Tabeli 2.7 je još jedan primjer koda sa osobinama detekcije greške. Strukturiran
slično 2-van-5 kodu, bikuinari (biquinary) kod može na sličan način da se upotrijebi za detekciju greške, ali
će na jednak način otkazati ako se dva bita jednovremeno promijene i proizvedu vrijednu kodiranu riječ.

Instrukcioni kodovi

Pored predstavljanja podataka, binarni kodovi se također koriste za formulaciju upravljačkih instrukcija,
označenih kao instrukcioni kodovi. Instrukcioni kod je grupa bita koja kaže digitalnom sistemu da izvrši
specifičnu operaciju. Instrukcioni kod je obično podijeljen u dijelove od kojih svaki ima vlastitu posebnu
interpretaciju. Najznačajniji dio instrukcionog koda je operacioni kod. Operacioni kod (operation code) ili
op-kod (op-code) je grupa bita koja definira operacije kao što su sabiranje, oduzimanje, pomjeranje i
komplementiranje. To je instrukcioni glagol (verb) koji sistemu kaže što činiti. Drugi dio instrukcije sastoji
se od jednog ili više operanada. Operand je ime koje se koristi za objekat i može da bude podatak ili adresa
koja kaže gdje su podaci.
Da bi se izvršile instrukcije formulisane za digitalni sistem, one moraju biti binarno kodirane.
Razmotrićemo, na primjer, operacije opterećivanja (load) i pamćenja (store). Opteretiti znači kopirati
broj iz memorijske lokacije u registar, dok pamtiti znači kopirati broj iz registra u memorijsku lokaciju
(Memorija i registar biće diskutovani u Poglavlju 7).
Na primjer, mikroprocesor Motorola 6800 koristi heksadecimalni op-kod 86 da OPTERETI registar A sa
vrijednošću a. Isti mikroprocesor koristi heksadecimalni op-kod B7 da UPAMTI sadržaj registra A u a
memorijsku lokaciju (zapazi da koristimo heksadecimalnu notaciju samo kao pogodnu stenografsku
predstavu; u digitalnom sistemu op-kodovi su predstavljeni u binarnoj formi).
Instrukcije koje sadrže ovi op-kodovi mogu biti, na primjer, 86 F2 (u heksadecimalnom), što znači
OPTERETI registar A sa vrijednošću F2 ili B7 00F2, što se prevodi u ZAPAMTI vrijednost registra A u
memorijsku lokaciju (čija adresa je) 00F2. Ponovo F2 je interno predstavljen u mikroprocesoru kao
(11110010).

Interpretacija binarnih podataka

Korisno je zaključiti diskusiju o binarnim predstavama obraćajući pažnju na interpretaciju binarnih


podataka. Kao što smo vidjeli do sada binarni podaci mogu imati različita značenja zavisno od konteksta u
kojem se koriste. Da bi ilustrovali različite interpretacije, razmotrimo bayt podatak (1001 0101) kao
primjer.
Svaka od narednih interpretacija vrijedi za ovaj bajt (byte)

1. Binarni broj bez znaka, ekvivalentan decimalnom 149, oktalnom 225 ili heksadecimalnom 95.
2. Binarni broj bez znaka (ekvivalentan decimalnom 21) sa parnim paritetom.
3. Predstava veličine sa znakom koja odgovara -(21)10.
4. Predstava prvog komplementa od -(106)10.
5. Predstava drugog komplementa od -(107)10.
6. BCD broj bez znaka, ekvivalentan (95)10.
7. BCD broj sa znakom ekvivalentan sa –(5)10.
8. ASCII za karakter NAK, sa parnim paritetom.
9. Op-kod u instrukcionom skupu mikroprocesora Motorola 6800 koji izvršava logičko I (AND)
između sadržaja registra A i sadržaja momorijske lokacije M.
10. Excess 3 kodirani decimal 62.
11. Grey-ov kodirani decimal 226.

Sigurno ste začuđeni kako digitalni sistem odlučuje koju od ovih intrepretacija da realizije. Ali, on to ne
čini. To je zadatak projektanta digitalnog sistema, koji odlučuje o značenju različitih binarnih podataka
unutar sistema.
Zadaci

2.1 Pretvori slijedeće brojeve u dekadne


(a) (101011)2, (11011.1101)2, (.01101)2
(b) (476)8, (365.27)8, (.7105)8
(c) (F23A)16, (7A41.C8)16, (.FD21)16
(d) (121.201)3, (1302.12)4, (.354)6, (298)12
2.2 Pretvori dekadni broj 427.5 u bazu 3, bazu 6, bazu 8 i bazu 16
2.3 Pretvori slijedeće brojeve iz date baze u baze koje su navedene
(a) (11010.110)2 u decimalni,oktalni i heksadecimalni
(b) (3DA9.DD)16 u decimalni, oktalni i binarni
(c) (478.12)10 u binarni, oktalni i heksadecimalni
(d) (372.16)8 u binarni, decimalni i heksadecimalni
2.4 Pretvori slijedeće brojeve u BCD:
(a) (47.28)10, (b) (362)8
(c) (7AF2C)16
2.5 Pretvori BCD kod (11101011001) u binarni, dekadni i heksadecimalni
2.6 Pretvori sljedeće brojeve u BCD:
(a) (10110111011)2, (b) (1986)10
(c) (72AF1)16
2.7 Pretvori (11010111011)2 u oktalni i heksadecimalni
2.8 Odredi 15-ti i 16-ti komplement heksadecimalnih brojeva 027A, F8B6, 07AF.4C
2.9 Odredi 10-ti i 9-ti komplement dekadnih brojeva 01398, 9239.72, 9471
2.10 Odredi 8-mi i 7-mi komplement oktalnih brojeva 0361, 043.216, 756
2.11 Odredi 2-gi i 1-vi komplement binranih brojeva 01101101, 1010111.1100, 1010110011.
2.12 Odredi 10-ti komplement od ((11)197)12 i (0BA45)16 koji su predstavljeni u notaciji
znaka veličine
2.13 Koristi 10-ti i 9-ti komplement za izvršenje sljedećih oduzimanja dekadnih brojeva
(predpostavi pozitivne brojeve)

(a) 375-42, (b) 725-1956


(c) 7240-471
2.14 Koristi 2-gi i 1-vi komplement za izvršenje navedenih oduzimanja binarnih brojeva
(predpostavi pozitivne brojeve):

(a) 11010-1101, (b) 101-11001


(c) 11010-10000

2.15 Saberi sljedeće pozitivne brojeve


(a) (45B7)16 + (15)16, (b) (10111)2 + (101)2
(c) (925)10 + (634)8
2.16 Pozitivna i negativna verzija brojeva sa fiksnom tačkom i predznakom (signed fixed-
point number) i stvarnom vrijednošću A= (547)10 uskladištena je u 16-bitnoj riječi. Izlistaj njihove
veličine predznaka, 1-vi komplement, 2-gi komplement u binarnim predstavama sa fiksnom tačkom.
2.17 Koje su predstave u cjelobrojnom području sa veličinom predznaka, 1-vog
komplementa, 2-gog komplementa u binarnom aritmetičkom sistemu sa fiksnom tačkom koji se
sastoji od (a) 16 bita i (b) 64 bita?
2.18 Izvrši zadato množenje sljedećih pozitivnih binarnih brojeva
(a) 110101x1011, (b) 1101101x1101

2.19 Izvrši zadato dijeljenje sljedećih pozitivnih binarnih brojeva


(a) 11010101/11011, (b) 010111101/1001
2.20 Predstavi dekadni broj 729 u BCD-u, ekcesu 3 i 2421 kodovima.
2.21 Generiraj binarne kodove za dekadne digite koristeći otežanja (3,2,3,1). Izlistaj skup
samo-komplementnih kodnih riječi i skup koji nije samo-komplementan
2.22 Konstruiraj samo-komplementne binarne kodove za dekadne digite koristeći sljedeće
otežane (weighted) kodove
(a) (6,4,2,-3) (b) (4,2,2,1)
(c) (5,2,1,1)
2.23 Odredi 9-ti komplement od (+59)10 u tri kodne šeme iz zadatka 2.22. (Ne kodiraj digit
predznaka.)
2.24 Odredi kodne riječi za bazu 12 digita koristeći otežanja (5,4,2,1)
2.25 Pokaži dvije alternative Gray-ovom kodu drugačije od one izlistane u Tabeli 2.8
2.26 Odredi heksadecimalni i binarni kod za sljedeće
(a) ASCII (b) EBCDIC
2.27 Napiši ASCII I EBCDIC heksadecimalnih kodova za sljedeće nizove karaktera
(a) baze-2 (b) arhitecture
(c) 03/24/86
2.28 Zašto je nemoguće detektirati paran broj grešaka kada se koristi bilo kod parnog pariteta
ili neparnog pariteta?
2.29 Odredi bit neparnog pariteta pridodatog poruci koja se sastoji od deset dekadnih digita u (6,4,2,-3) kodu.
Prepostavi da se svaki digit šalje odvojeno.
2.30 Generiraj neparni i parni paritni kod za sljedeće poruke
(a) binarno (10111010)
(b) dekadno 8 u (8,4,-2,-1) kodu
(c) ASCII %
(d) heksadecimalni A4F, sa svakim karakterom odvojeno
2.31 Napiši svoje ime i prezimee u ASCII, pridodajući bit parnog pariteta svakom slovu u bitu najznačajnijeg
položaja.

You might also like