You are on page 1of 10

2.

Predstavljanje podataka
2.1. Binarno kodovani decimalni brojevi
Za obavljanje numerikih operacija najpogodniji je decimalni brojni sistem. Meutim, binarni
brojni sistem je povoljniji sa stanovita jednostavnosti konstrukcije digitalne mree. Zbog toga su
razvijeni mjeoviti sistemi. Oni sadre binarno kodovane decimalne cifre i zbog toga se nazivaju
BCD (Binary Coded Decimal) kodovi.
Pri izboru koda nastoji se da on bude pogodan ne samo za brojanje, aritmetike operacije,
pretvaranje, ve i za lako otkrivanje i korigovanje eventualnih greaka pri kodovanju informacija.
Kod svih BCD sistema decimalni brojevi se predstavljaju binarnim, tako da se svaka cifra
decimalnog broja zamjenjuje odreenom grupom binarnih cifara.
Kako decimalni brojni sistem ima deset cifara u opsegu od 0 do 9, vrijedi:
23 < m = 10 < 24 .
Iz prethodne jednaine vidimo da su nam za predstavljenje 10 dekadnih cifara potrebne grupe
od po etiri binarne cifre koje nazivamo tetrade.
Postoji veliki broj kombinacija tih tetrada, odnosno mnogo BCD kodova. U praksi se koristi
relativno mali broj moguih kombinacija.

2.1.1. Prirodni BCD (NBCD) kod ili kod 8421


Tetrade kod ovog koda se u potpunosti podudaraju sa prirodnim binarnim brojevima, tj. koristi
se prvih deset binarnih brojeva, a ostalih est se odbacuje.

0
1
2
3
4
5
6
7
8
9

8421
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001

Primjer 1:
92410 = 1001 0010 0100NBCD
1000 0111 1001NBCD = 87910

Prirodni NBCD kod je teinski kod. To znai da svaka binarna cifra ima odreenu teinu pri
formiranju decimalne cifre, koja je odreena pozicijom te cifre.

2.1.2. Ajkenov kod ili kod 2421


I ovaj kod je teinski kod. Ovaj kod je samokomplementaran BCD kod, tj. ima tu osobinu da pri
inverziji svakog bita dekadni ekvivalent postaje sopstveni komplement broja devet.
U sljedeoj tabeli prikazani su binarni kodovi za decimalne cifre u Ajkenovom kodu.

0
1
2
3
4
5
6
7
8
9

2421
0000
0001
0010
0011
0100
1011
1100
1101
1110
1111

Primjer 2:
97410 = 1111 1101 0100AJKEN
0000 0010 1011AJKEN = 02510

2.1.3. Kod "vie 3" ili XS3 ("excess 3") kod


Ovaj kod se dobija dodavanjem trojke svakoj tetradi kod prirodnog binarnog sistema. Tetrade su
date u sljedeoj tabeli. Ovaj kod nije teinski, ali je samokomplementaran.

0
1
2
3
4
5
6
7
8
9

XS3
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100

Primjer 3:
7010 = 1010 0011XS3
1011 1100XS3 = 8910

2.1.4. Grejov (Gray) kod


Grejov kod je specijalan kod koji ima tu osobinu da se svaka kodna grupa razlikuje za samo
jedan bit od prethodne. Na taj nain se postie da je manja mogua greka, nego kada se mijenjaju
sve cifre u tetradi.

0
1
2
3
4

Gray
15731
0000
0001
0011
0010
0110

Gray BCD
15731
0000
0001
0011
0010
0110

5
6
7
8
9
10
11
12
13
14
15

0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000

0111
0101
0100
1100
1000

Primjer 4:
10 = 15 7 + 3 1
36710 = 0010 0101 0100Gray BCD

2.1.5. Donsonov (Johnson) kod


0
1
2
3
4
5
6
7
8
9

Johnson
00000
00001
00011
00111
01111
11111
11110
11100
11000
10000

Zadatak 1. Napisati sljedee brojeve u NBCD, XS3, Grejovom i Donsonovom kodu:


a) 847
b) 2170,25
c) 35,29.
Rjeenje:
a)
1000 0100 0111NBCD
1011 0111 1010XS3
1100 0110 0100Gray BCD
11000 01111 11100Johnson

b)

0010 0001 0111 0000, 0010 0101NBCD


0101 0100 1010 0011, 0101 1000XS3
0011 0001 0100 0000, 0011 0111Gray BCD
00011 00001 111000 00000, 00011 11111Johnson

c)

0011 0101, 0010 1001NBCD


0110 1000, 0101 1100XS3
0010 0111, 0011 1000Gray BCD
00111 11111, 00011 10000Johnson

2.2. BCD aritmetika


Ukoliko su numeriki podaci predstavljeni nekim BCD kodom, tada i rezultati poslije
izvravanja aritmetikih operacija takoe treba da budu u istom BCD kodu. Pri aritmetikim
operacijama nad BCD brojevima primjenom klasinog binarnog sabiranja dobijaju se tetrade koje
ne pripadaju tom BCD kodu. Zbog toga je neophodno izvriti korekciju rezultata dodavanjem
tetrade 0110.
Tetrade zbira treba da se koriguju sa 0110 u sljedeim sluajevima:
1) Ukoliko je zbir dvije tetrade u zabranjenom opsegu (od 1010 do 1111).
2) Ako je neka od tetrada zbira u dozvoljenom opsegu (od 0000 do 1001), ali je postojao prenos u
sljedeu viu tetradu.
Pri tome, pravilo 1) se uvijek primjenjuje, dok se pravilo 2) primjenjuje samo pri prvom
sabiranju.
Zadatak 2. Izvriti sabiranje sljedeih NBCD brojeva:
a) 59 i 73
b) 137 i 266
c) 379 i 458.
Rjeenje:
a)
0101 1001
59
+ 0111 0011
73
-------------------------1100 1100
132
+ 0110 0110
---------------0001 0011 0010

b)

0001 0011 0111


137
0010 0110 0110
266
-------------------------------0011 1001 1101
403
0000 0000 0110
-------------------0011 1010 0011
0000 0110 0000
-------------------0100 0000 0011

c)

0011 0111 1001


379
0100 0101 1000
458
-------------------------------0111 1101 0001
837
0000 0110 0110
-------------------1000 0011 0111

2.3. Alfanumeriki kodovi


Dosad pominjani kodovi upotrebljavaju se samo za kodovanje brojeva i zato se nazivaju
numeriki kodovi. Meutim, pri prenosu podataka potrebno je kodovati i druge znakove kao to su:
slova, specijalni i interpunkcijski znakovi. BCD kod nema dovoljno bita za predstavljanje takvih

podataka. Zbog toga se koriste tzv. alfanumeriki kodovi koji koriste vie od etiri bita za
predstavljanje podataka. Alfanumeriki podaci su tipa char (character). Poto skup latinskih slova
ima 26 znakova, zatim imamo 10 cifara, to ukupno daje 36. Odavde zakljuujemo da
alfanumeriki kod mora imati vie od 5 bita.
25 < 36
Najpoznatiji alfanumeriki kodovi su:
a) ASCII (American Standard Code for Information Interchange) kod koji se sastoji od sedam bita
b) EBCDIC (Extended Binary Coded Decimal Interchange Code) kod koji se sastoji od osam bita.
Danas se najvie koristi ASCII kod, dok se EBCDIC koristi u nekim IBM raunarima.

2.3.1. ASCII kod


Skup ASCII karaktera izdijeljen je u grupe od po 32 karaktera. Prvih 32 karaktera, ASCII
kodovi od 0 do1Fh (31), ini specijalni skup kontrolnih karaktera koji se ne tampaju. To su npr.
karakteri kao to su carriage return, koji postavlja kursor na lijevu stranu trenutne linije karaktera,
line feed (koji pomjera kursor jednu liniju nie na izlaznom ureaju), i back space (koji pomjera
kursor nazad ulijevo za jednu poziciju).
Druga grupa od 32 ASCII karaktera sadri razne interpunkcijske simbole, specijalne karaktere, i
numerike cifre. Najznaajnije karaktere u ovoj grupi ine znak razmaka space (ASCII kod 20h) i
numerike cifre (ASCII kodovi 30h do 39h). Vidimo da oduzimanjem 30h od ASCII koda za bilo
koju cifru moemo dobiti numeriki ekvivalent te cifre.
Trea grupa 32 ASCII karaktera je rezervisana za simbole velikih slova abecede. ASCII kodovi
za karaktere "A" do "Z" se nalaze u opsegu 41h do 5Ah (65 do 90). Kako imamo samo 26 razliitih
alfabetskih karaktera, ostalih est kodova predstavlja razne specijalne simbole.
etvrta grupa 32 ASCII karaktera rezervisana je za simbole malih slova abecede, pet dodatnih
specijalnih simbola, i jo jedan kontrolni karakter (delete). Kodovi velikih slova se razlikuju od
kodova ekvivalentnih malih slova tano u jednoj bit poziciji. Na primjer, razmotriemo kod
karaktera "E" i "e" na slici:

Jedino gdje se ova dva karaktera razlikuju jeste u bit na petoj poziciji. Karakteri velikih slova
uvijek sadre nulu na petoj poziciji; karakteri malih slova uvijek sadre jedinicu u petom bitu. Na
ovaj nain se moe na lak nain vriti pretvaranje velikih slova u mala i obrnuto.
Bit 6 Bit 5

Grupa

Kontrolni karakteri

Cifre i interpunkcija

Velika slova i specijalni znaci

Mala slova i specijalni znaci

Sedmi bit u standardnom ASCII kodu je uvijek postavljen na nulu. Ovo znai da ASCII skup
karaktera zauzima polovinu moguih kodova karaktera u bajtu.

2.4. Predstavljanje brojnih podataka


Brojni podaci koji se predstavljaju u raunaru mogu biti tipa integer (cjelobrojni podaci) i real
(realni brojevi). Za predstavljanje cjelobrojnih podataka obino se koristi forma drugog
komplementa, dok se za predstavljanje realnih brojeva danas koriste dva formata format sa
nepokretnim zarezom (fixed point) i format sa pokretnim zarezom (floating point). Pri tome, danas
postoji veliki broj razliitih standarda za predstavljanje realnih brojeva u formatu sa pokretnim
zarezom1. Ovdje emo pokazati samo neke osnovne koncepte i neemo ulaziti u detalje oko
predstavljanja brojeva u razliitim formatima. Za detaljnije informacije italac moe konsultovati
navedenu literaturu.

2.4.1. Predstavljanje cjelobrojnih podataka


Integer su cijeli brojevi i za njihovo predstavljanje se standardno koristi binarna rije od 32 bita.
Meutim, u praksi je ponekad dovoljno koristiti 8 ili 16 bita, pa postoje razliiti tipovi cjelobrojnih
podataka (short int, int, long int itd.). Cjelobrojni podaci se predstavljaju u drugom komplementu.
Najstariji bit je bit znaka S (sign).
31
S

Tipom podataka real u raunaru se predstavlja jedan konaan podskup realnih brojeva. Kako
raunari posjeduju registre i memoriju ogranienog kapaciteta, ogranien je opseg i preciznost
realnih brojeva, odnosno skup brojeva koji se mogu prikazati u raunaru je diskretan i konaan za
razliku od skupa realnih brojeva koji je kontinualan i beskonaan. Zbog prirode diskretnosti postoji
uvijek praznina izmeu dva susjedna broja, tako da se moe desiti da rezultat bude ba u tom
opsegu. U tom sluaju vri se zaokruivanje na broj koji je najblii dobijenom rezultatu a koji se
moe predstaviti u raunaru.

2.4.2. Predstavljanje brojeva sa nepokretnim zarezom (fixed point)


Predstavljanje brojeva u formatu sa nepokretnim zarezom svodi se na fiksiranje decimalne
take na odreenu poziciju. Na taj nain rezervisan je fiksan broj bita za predstavljanje cijelog dijela
broja (koji nazivamo I dio i koji predstavljamo u formi drugog komplementa), dok je preostali dio
bita broja rezervisan za predstavljanje razlomljenog dijela broja (koji nazivamo Q dio i koji ima isto
znaenje kao i binarne cifre iza decimalne take kod predstavljanja standardnih binarnih brojeva
stepen baze sa negativnim pozicijama). Na taj nain dobija se tzv. IQ format za predstavljanje
realnih brojeva (npr. broj predstavljen u I2Q5 formatu ima ukupno 7 binarnih cifara od kojih su
dvije cifre rezervisane za predstavljanje cijelog dijela, a pet za predstavljanje razlomljenog dijela
broja).
Decimalna vrijednost broja predstavljenog u IQ formatu moe se, u optem sluaju, odrediti
prema sljedeoj formuli:
n2

k =0

k =1

bn 1 2 n 1 + bk 2k + b k 2 k

(1)

gdje je: n broj bita cijelog dijela, q broj bita razlomljenog dijela broja i bk vrijednost bita na ktoj poziciji. Opseg brojeva koji se mogu predstaviti u ovom formatu se kree u granicama od 2n1
do +2n 1 2 q .
1

Za detaljnije informacije pogledati sljedee linkove:


http://en.wikipedia.org/wiki/Floating_point
http://www.codeproject.com/KB/applications/libnumber.aspx

Prednost predstavljanja brojeva u formatu sa nepokretnim zarezom je u veoma velikoj brzini


izvravanja aritmetikih operacija nad ovim brojevima bez potrebe za korienjem dodatnih
koprocesorskih jedinica (kao to je to sluaj kod formata sa pokretnim zarezom). Meutim, veliki
nedostatak kod korienja ovog formata je u tome to se on ne moe koristiti za istovremeno
predstavljanje veoma velikih i veoma malih brojeva. Naime, da bi imali irok opseg brojeva
potrebno je rezervisati to je mogue vie bita za cijeli dio broja. S druge strane da bi mogli
predstaviti veoma male brojeve potrebno je imati veliku preciznost ili rezoluciju, koja je odreena
brojem bita razlomljenog dijela. Odavde zakljuujemo da se radi o dva suprostavljena zahtijeva. U
nekim sluajevima moe se nai kompromis izmeu broja bita cijelog i razlomljenog dijela broja.
Meutim, postoje i sluajevi kada je to nemogue postii. Izlaz za ovakvu situaciju nalazi se u
korienju formata sa pokretnim zarezom.

2.4.3. Predstavljanje brojeva sa pominim zarezom (floating point)


U praktinim primjenama javljaju se veoma velike i veoma male vrijednosti (npr. 1024 i 10-27).
Predstavljanje brojeva u formatu sa pokretnim zarezom bazira se na injenici da se svaki realan broj
moe napisati u eksponencijalnom obliku.
m = M bE
(2)
gdje je: b baza, E eksponent i M mantisa.
Realni broj se najee predstavlja u binarnom sistemu (gdje je baza 2) sa 32 bita, pri emu se
usvaja normalizovani oblik broja. To znai da mantisa ima oblik 0.xyz... pri emu je x 0.
Primjer 5:
1357.9531 = +0.13579531104 = +.13579531E + 4
eksponent
znak mantise
mantisa

31

znak
eksponenta

23

eksponent sa znakom

Opseg brojeva koji se mogu predstaviti na ovaj nain odreen je brojem binarnih cifara
eksponenta, dok broj binarnih cifara mantise odreuje preciznost predstavljanja i tanost raunanja.
Za predstavljanje eksponenta moe se koristiti format drugog komplementa. Prednost formata sa
pokretnim zarezom je u tome to se na ovaj nain mogu predstaviti brojevi u veoma irokom opsegu
sa zadovoljavajuom preciznou. Nedostatak je svakako brzina izvravanja aritmetikih operacija
nad ovim podacima. Naime, za realizaciju sistema koji koriste format sa pokretnim zarezom obino
je potrebno koristiti dodatni koprocesor (tzv. FPU Floating Point Unit). Iako ove jedinice danas
veoma brzo izvravaju aritmetike operacije nad podacima u formatu sa pokretnim zarezom, dosta
vremena se gubi pri komunikaciji izmeu glavne i koprocesorske jedinice. Zbog toga se ovaj format
ne koristi u sistemima koji imaju kritinu brzinu izvravanja (upravljaki sistemi koji zahtijevaju
obradu signala u realnom vremenu).
Danas postoji veliki broj razliitih formata za predstavljanje realnih brojeva u formatu sa
pokretnim zarezom. Prethodno razmatranje predstavlja samo opis koncepta ovakve predstave
realnih brojeva. Danas najee korien standard za predstavljanje brojeva u formatu sa pokretnim
zarezom jeste format IEEE 7542. Pored ovog formata (koji predstavlja standard u veini dananjih

http://en.wikipedia.org/wiki/IEEE_754

raunarskih sistema) postoje jo dva esto koriena formata: IBM Floating Point format3 i VAX
Floating Point format4. Za detaljnije informacije italac moe da konsultuje odgovarajuu
literaturu.

2.5. Zadaci
Zadatak 1. Koliko se razliitih NBCD brojeva moe predstaviti sa 16 bita?
Rjenje:

Za predstavljanje jedne decimalne cifre korienjem NBCD koda potrebne su etiri binarne
cifre. S obzirom da nam je na raspolaganju 16 bita, zakljuujemo da moemo predstaviti
etvorocifren broj. Najvei etvorocifren broj je 9999, pa je opseg brojeva koji se mogu predstaviti
od 0 do 9999, a to je ukupno 10000 razliitih brojeva.
Zadatak 2. Predstaviti heksadecimalni broj 3ADFH u NBCD, XS3, GrayBCD i Johnson kodu.
Rjeenje:

Da bi heksadecimalni broj predstavili u nekom BCD kodu najprije ga je potrebno pretvoriti u


decimalni.
3 ADFH = 3 163 + 10 16 2 + 13 161 + 15 160 = 15071

Sada je potrebno decimalni broj predstaviti odgovarajuim kodom korienjem tabela kodova.
15071 = 0001 0101 0000 0111 0001NBCD
15071 = 0100 1000 0011 1010 0100XS3
15071 = 0001 0111 0000 0100 0001GrayBCD
15071 = 00001 11111 00000 11100 00001Johnson
Zadatak 3. Sljedee decimalne brojeve predstaviti u NBCD kodu i izvriti naznaene operacije:
47 + 35; 59 + 38; 275 + 641.
Rjeenje:

0100 0111 47
+
0011 0101 35
-----------------------------0111 1100
+
0110
----------------------1000 0010 82

0101 1001 59
+
0011 1000 38
-----------------------------1001 0001
+
0110
----------------------1001 0111 97

0010 0111 0101 275


+
0110 0100 0001 641
-------------------------------------1000 1011 0110
+
0110
----------------------------1001 0001 0110 916

Kodne kombinacije oznaene crvenom bojom predstavljaju korekcione tetrade koje se koriste
za korekciju zbira pri NBCD sabiranju.

3
4

http://en.wikipedia.org/wiki/IBM_Floating_Point_Architecture
http://www.codeproject.com/KB/applications/libnumber.aspx

Zadatak 4. a) Koliki je minimalan broj bita potreban za binarno predstavljanje brojeva 52, 72, 130 i
256?
b) Izraunati ABH+CDH, ABCH+DEFH, 98A5H-4BBDH.
c) Napisati najvei pozitivan i najmanji negativan broj koji se moe predstaviti sa 32 bita.
d) Izvriti sljedee raunske operacije primjenom metode drugog komplementa: 99-75, -46+25,
-110-13.
e) Koliko se osmobitnih memorijskih lokacija nalazi u opsegu od 0000H do FFFFH?
Rjeenje:

potrebno je 26=64
potrebno je 27=128
potrebno je 28=256
potrebno je 9 bita

a)

52
72
130
256

b)

ABH
+
CDH
---------------178H

c)

Najevei pozitivan broj:


Najmanji negativan broj:

d)

01100011
+
10110101
---------------------(1)00011000
10010010
+
11110011
---------------------(1)10000101

6 bita
7 bita
8 bita

ABCH
+
DEFH
-----------------18ABH

(+99)
(-75)
(+24)

98A5H
4BBDH
------------------4CE8H

232-1-1=231-1=2,147,483,647
-232-1=-231=-2,147,483,648
11010010
+
00011001
---------------------11101011

(-46)
(+25)
(-21)

(-110)
(-13)
(-123)

e) S obzirom da opseg 0000H do FFFFH predstavlja opseg 16-bitnog broja, moemo da zakljuimo
da je broj memorijskih lokacija jednak 216=65,536. Prema tome, u ovom opsegu se nalazi ukupno
65,536 osmobitnih memorijskih lokacija (bajtova), ili kako je 210=1,024=1K, imamo da je
216=26210=26K=64K.
Kako se radi o osmobitnim memorijskim lokacijama imamo ukupno 64KB.
Zadatak 5. Heksadecimalni broj C3H predstaviti u formatima I1Q7, I2Q6 i I3Q5, a zatim odrediti
decimalnu vrijednost broja za svaki od formata.
Rjeenje:

Binarna vrijednost heksadecimalnog broja odreena je sa C3H=110000112.


Ako sada koristimo pojedine formate i formulu (1) dobijamo da je:
I1Q7: 1.1000011=-1+2-1+2-6+2-7=-0.4765625
I2Q6: 11.000011=-1+2-5+2-6=-0.953125
I3Q5: 110.00011=-2+2-4+2-5=-1.90625.

Zadatak 6. Decimalni broj 128.75 predstaviti u formatu sa pokretnim zarezom u binarnom brojnom
sistemu koristei 32-bitnu reprezentaciju.
Rjeenje:

Dati decimalni broj je najprije potrebno pretvoriti u binarni prikaz, a zatim izvriti
normalizaciju:
128.75=10000000.11=0.1000000011E+8.
Ako sada ovakav normalizovani oblik predstavimo u 32-bitnom formatu sa pokretnim zarezom
dobijamo:
znak
mantise

0|00001000|00000000000001000000011
eksponent

mantisa

to odgovara heksadecimalnoj vrijednosti 04000203H.


Treba napomenuti da e vrijednost realnog broja zavisiti od formata sa pokretnim zarezom koji
koristimo (u prethodnom sluaju je korien opti koncept). Npr. u formatu IEEE 754 broj 128.75
ima sljedei izgled:
0100 0011 0000 0000 1100 0000 0000 0000 = 4300C000H.
Ovo se moe provjeriti korienjem softvera dostupnog na webu5. Slino, u sluaju korienja
IBM Floating Point formata dobijamo potpuno drugaiji rezultat (provjeriti!):
0100 0010 1000 0000 1100 0000 0000 0000 = 4280C000H.
Ovdje treba napomenuti da se kod IBM formata, za razliku od IEEE 754 i ostalih floating point
formata, kao baza koristi 16 a ne 2 (stepenovanje kod baze 16 odgovara pomjeranju decimalne
take za etiri binarne cifre).

http://www.h-schmidt.net/FloatApplet/IEEE754.html

You might also like