Professional Documents
Culture Documents
Predstavljanje Podataka U Racunaru PDF
Predstavljanje Podataka U Racunaru PDF
ProgramiranjeI_sylabus.doc edina@fit.ba
1. UVOD
Manje-više svima su nam bliske razne ne-aritmetičke operacije na računaru kao npr. rad
sa računarskom grafikom, zvukom i sl. Međutim moramo znati da svaka i najmanja
operacija, odnosno informacija s kojom računar manipuliše mora biti u obliku 0-la i 1-ca
(ili još i "on-off", odnosno "uključeno-isključeno"). Korištenje "on-off" kodova za
predstavljanje informacija pojavilo se još mnogo prije nego sami računari - Morzeov kod
(azbuka).
Oni predstavljaju skup brojeva u kojem svaki pojedini broj ima tačno određen broj cifri, a
decimalni zarez (tačka) je uvijek na istom mjestu.
Primjer jednog takvog skupa u dekadnom sistemu su brojevi: 0.52, 6.25, 8.12. U
ovom primjeru svi brojevi ovog skupa imaju po tri cifre od kojih su dvije uvijek iza
decimalnog zareza. U binarnom sistemu jedan takav skup bi izgledao: 11.01, 10.11,
01.01.
Za navedeni primjer brojeva koji imaju po tri cifre od kojih su dvije uvijek iza
decimalnog zareza rang je od 0.00 do 9.99 uključujući i krajnje vrijednosti tj. zatvoreni
interval je [0.00, 9.99]. Preciznost je određena razlikom između dva susjedna broja na
1
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
brojnoj osi, a to je u ovom slučaju 0.01 (npr. 5.01 - 5.02 = 0.01). Greška se javlja na
1/2 razlike između dva susjedna broja. U ovom slučaju je to 0.005.
Intervali mogu počinjati i završavati sa bilo kojim brojem kao npr. [00,99], [-
50,+49] i td.
a + (b + c) = (a + b) + c
a + (b + c) = 7 + (4+ (-3)) = 7 + 1 = 8
(a + b) + c = (7 + 4) + (-3) = 11 + (-3) …
... ali broj 11 je broj koji nije u rangu datog brojnog sitema. Ovdje se javlja
overflow (prekoračenje vrijednosti) u postupku izračunavanja izraza što uzrokuje
pogrešan i krajnji rezultat, bez obzira što bi konačni rezultat bio u postavljenom
intervalu.
Kada dođe do pojave overflow-a problem rješavamo tako što se prvo ustanovi
gdje se javlja takva vrijednost u toku operacije, operaciju prekidamo i obavještavamo
korisnika o stanju. Druga mogućnost je da se ponovi izračunavanje sa brojevima većeg
ranga što se vrlo rijetko koristi (samo u specifičnim situacijama).
Ovdje posmatramo brojne sisteme koji se najčešće koriste u računarskoj tehnologiji i to:
binarni (baza 2), oktalni (baza 8) i heksadecimalni (baza 16).
2
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
Baza nekog brojnog sistema definiše cifre koje formiraju brojeve iz tog brojnog
sistema. Tako da su kod dekadnog sistema to: 0,1,2,3,4,5,6,7,8 i 9, i s njima se može
prikazati svaki broj iz sistema.
gdje n predstavlja broj cifri (mjesta) lijevo od zareza u određenoj bazi, m je broj
cifri (mjesta) desno od zareza u određenoj bazi, bi cifra na i-toj poziciji, a k predstavlja
bazu.
Ovakav oblik prikazivanja broja, gdje svaka pozicija ima dodijeljenu vrijednost
nam je poznata kao weighted position code (sistemi gdje i pozicija cifre utiče na
vrijednost).
Kao primjer uzet ćemo broj (541.25)10. Kod njega imamo n = 3, m = 2, k = 10, iz
čega slijedi:
Uzet ćemo primjer promjene baze broja (1010.01)2 u dekadni sistem. Kao što
vidimo n = 4, m = 2, k = 2.
1 x 23 + 0 x 22 + 1 x 21 + 0 x 20 + 0 x 2-1 + 1 x 2-2 =
Na ovaj način se može broj iz sistema bilo koje baze prevesti u dekadni sistem i ovaj
metod se naziva polynomial method (metod polinoma). Znači, svaku pojedinačnu cifru
datog broja množimo sa bazom stepenovanom brojem pozicije date cifre, a zatim
saberemo dobijene produkte.
Uzet ćemo za primjer broj (23.375)10 koji ćemo rastaviti na dva dijela:
i ostatak b0. Ponovnim dijeljenjem dobijamo novi izraz i ostatak b1. Taj postupak
ponavljamo dok ne dobijemo kao ostatak bi. Ovo se zove metod ostatka i koristi se u
slučajevima prevođenja cjelobrojnog dijela iz jedne u drugu bazu.
Rezultat Ostatak
11/2 = 5 R1
5/2 = 2 R1
2/2 = 1 R0
significiant bit (najviše važan bit) i on je početna cifra dobijenog binarnog broja
(Slika 1.).
Ovom metodom možemo brojeve iz dekadnog sistema prevoditi u brojeve sistema sa bilo
kojom bazom tako što ćemo dijeljenje vršiti sa odgovarajućom bazom.
.75 x 2 = 1.5 0
.5 x 2 = 1.0
Najmanje važan bit
(.375)10 = (.011) 2
(Slika 2.)
(23.375)10 = (10111.011)2
Iako metod množenja važi za konverziju među svim bazama, javlja se gubljene
preciznosti u nekim slučajevima. Kao primjer uzet ćemo broj (.2)10. Postupak konverzije
je prikazan na slici. Vidimo da se poslije nekoliko množenja ponovno javlja 0.2, što znači
da ovakav postupak vodi u beskonačno ponavljanje.
Možemo reći da bilo koji konačni binarni broj iza zareza možemo predstaviti kao
k
i/2 , gdje su i i k cijeli brojevi. Dalje slijedi:
Uslov da bi konačni broj iza zareza u dekadnom sistemu bio i konačan broj u
binarnom sistemu je:
Što znači da za brojeve sa jednim decimalnim mjestom iza zareza konačan binarni
broj će biti samo za (.0)10 i (.5)10 ili 20% mogućih vrijednosti, za brojeve sa dva
decimalna mjesta to su (.00)10, (.25)10, (.50)10 i (.75)10, ili 4% mogućih vrijednosti i td.
6
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
Dok većina računara koristi binarni brojni sistem u internom radu, neki kalkulatori
i poslovni računari koriste interno predstavljanje u bazi 10, tj. u dekadnom sistemu.
Razlog ovome je ne samo u izbjegavanju problema konačnih decimala, nego i u
izbjegavanju procesa konverzije u ulaznoj i izlaznoj jedinici što uveliko skraćuje vrijeme
obrade podataka.
Problem binarnih sistema jeste u tome što se binarni broj sastoji od mnogo više
cifara nego njemu ekvivalentan broj u nekom drugom sistemu. Tu se javlja velika
mogućnost greške u pisanju tih brojeva jer je to veliki niz 0-la i 1-ca. Zbog toga se
koriste brojni sistemi sa bazom većom od 2, a to su oktalni i heksadecimalni brojni
sistemi.
0 0 0 0
1 1 1 1
10 2 2 2
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
7
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
Koristeći ove metode možemo prevesti bilo koju bazu u bilo koju drugu bazu. U
nekim slučajevima konverzija neće biti moguća u jednom koraku nego će trebati koristiti
i međukorak tj. prevođenje prvo u dekadni sistem.
8
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
.
Prenešena
vrijednost 0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
Operanti
+ 0 + 1 + 0 + 1 + 0 + 1 + 0 + 1
0 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1
Najveći broj koji može biti predstavljen u 8-bitnom formatu je (11111111)2 = (255)10, a
najmanji broj koji može biti predstavljen je (00000000)2 = (0)10. To nam govori da 8-
bitnim formatom možemo prikazati brojeve iz zatvorenog intervala [0,255] i to samo
pozitivne.
Binarni
Decimalni
bez Vrijednost s Komplement Komplement dodavanje
predznaka predznakom jedinice dvojke 4
7 111 - - - -
6 110 - - - -
5 101 - - - -
4 100 - - - -
9
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
-4 - - - 100 000
(+12)10 = (00001100)2
( -12)10 = (10001100)2
Negativni broj jednostavno tvorimo tako što pozitivnom broju zamjenimo početnu
cifru 0 (s lijeve strane) sa cifrom 1. Treba napomenuti da se ovdje postoje prikazi za 0-
lu, tj. pozitivna i negativna nula, a to su: 00000000 i 10000000. U 8-bitnom formatu
imamo mogućnost predstavaljanja 28 = 256 brojeva. U ovom slučaju zbog toga što +0 i -
0 predstavljaju različiti brojevi, imamo 28 - 1 = 255 različitih mogućnosti.
10
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
(+12)10 = (00001100)2
( -12)10 = (11110011)2
Ovdje, međutim, za razliku od prva dva slučaja imamo samo jednu vrijednost za
+0, odnosno -0. Da bi se uvjerili u tačnost izrečenog provedimo naprijed opisani
postupak za vrijednost (+0)10. Binarno je to (00000000)2, komplementiranjem dobijamo
(11111111)2 i dodavanje 1-ce, imamo ponovo (00000000)2 = (-0)10. jer se vrijednost
koja se prenosi gubi kod krajnje lijeve cifre. Znači da sada imamo mogućnost
predstavljanja 28 = 256 različitih brojeva.
( -128)10 = (10000000)2
01111111
+ 1
-----------------
(10000000)2
11
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
Predstavljanje dodavanjem
Kod broja (+12)10 i (-12)10 u 8-bitnom formatu koristićemo kao broj koji se
dodaje broj 128. Sada ga dodajemo brojevima (+12)10 i (-12)10. Za (+12)10 imamo (128
+12 = 140)10 a to je binarno (10001100)2. Za (-12)10 slijedi (128-12 = 116)10, a to je
(01110100)2.
(+12)10 = (10001100)2
( -12)10 = (01110100)2
12
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
Brojevi mogu biti predstavljani na način sličan dekadnom sistemu ali koristeći binarni kod
za svaku cifru datog broja. Svaka cifra dekadnog sistema zauzima četiri bit pozicije, i
ovaj način se naziva binary coded decimal (BCD). Svaka BCD cifra može da poprimi
svaku od 10 vrijednosti. Za svaku postoje 24 = 16 različitih bit kombinacija, od kojih su,
znači, šest uvijek neiskorištene. Na slici ispod vidimo primjer predstavljanja decimalnog
broja sa preznakom i tri cifre, što znači 4 neophodna BCD-a.
Ovdje je moguće 216 = 65.536 binarnih kombinacija koristeći 16-bitnu formu, dok
se u ovom slučaju maksimalno koristi 104 = 10.000.
Komplement devetke se formira tako što se svaka cifra datog broja oduzme od 9.
Kod našeg primjera sa decimalnim brojem +301 koji je predstavljan kao 0301,
komplement devetke negativni broj je 9698.
Brojevi sa nepomičnim decimalnim zarezom, koji smo obradili u Lekciji 2.2, ima
stalni položaj decimalne tačke i stalan broj cifri s lijeve i desne strane decimalne tačke.
U praksi mnogo veći i mnogo manji brojevi se pojavljuju tokom računanja, što
predstavlja još veće zahtjeve za računar. Da bi pohranjivali i manipulisali brojevima od
80 ili više bita potreban je moćniji hardver,i računanje se vrši mnogo sporije. Visoka
preciznost nam generalno nije potrebna ako koristimo velike brojeve, isto tako veliki
brojevi ne moraju biti pretstavljeni kada se kalkuliše sa veoma malim brojevima.
Efikasniji računar se možu realizovati ako se koristi samo onolika preciznosti kolika je
potrebna.
13
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
+6.023 x 1023
+ 2 3 6 . 0 2 3
Ako nam je potreban veći rang, i ako smo željni žrtvovati preciznost, onda
možemo koristiti samo tri cifre za signifikant i tako ostaviti tri cifre za eksponent bez
povećanja broja cifri u predstavljanju čitavog broja. Drugi način povećanja ranga jeste
povećanje baze, što djeluje na povećanje preciznosti najmanjih brojeva ali i smanjenje
preciznosti najvećih brojeva. Fleksibilnost ranga i preciznosti je velika prednost kod
brojeva sa pomičnim zarezom, ali smanjena preciznost može uzrokovati probleme, nekad
katastrofalne.
14
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
Ovaj izgubljeni bit se naziva skriveni bit, takođe poznat kao skrivena 1-ca.
Naprimjer ako je mantisa data u obliku .110010 poslije normalizacije, onda bit
koji je pohranjen je 1010 – krajnji lijevi bit je skracen, ili skriven. Vidjet ćemo da IEEE
754 format brojeva sa pokretnim zarezom koristi skriveni bit.
15
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
16
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
0111000101100110
Ako nam je data bit-forma za broj (385)10 sa opisom formata broja sa pokretnim
zarezom, onda lako možemo odrediti broj. Znakovni bit je 0, što znači da je broj
pozitivan. Eksponent u neoznačenom obliku je broj (+7)10 ali pošto koristimo broj
excess-4 moramo oduzeti 4 što onda rezultuje (+7 – 4 = +3)10. Signifikant je grupisan u
četvero-bitne heksadecimalne cifre, što daje broj (.166)16. Sve zajedno daje (+ .166 x
163)16 = (385)10.
Ako tretiramo nedostajuće bitove kao nule, onda ova bit-forma predstavlja (.164
3
x 16 )16. Ovaj metod skraćivanja ima kao posljedicu grešku, jer su vrijednosti 00, 01, 10
i 11 tretirane kao nula pa je greska u nizu od 0 do (.003)16.
Ponovo naglašavamo da bez obzira koji format broja sa pokretnim zarezom bio, on mora
biti poznat svakome ko želi da ga koristi. Institut elektro i elektroničkih inžinjera (IEEE)
je preuzeo ulogu u standardiziranju formata brojeva sa pokretnim zarezom. IEEE 754
format brojeva sa pokretnim zarezom, koji je ima skoro univerzalnu primjenu je
objašnjen u dijelu 2.3.5.
b baza
M najveći eksponent
m najmanji eksponent
Broj značajnih cifara u signifikantu se predstavlja sa s, što nije isto kao broj bitova
u signifikantu, ako je baza bilo koja druga osim 2 (npr. baza 16 koristi 4 bita za svaku
cifru). Generalno ako je baza 2k gdje ja k cijeli broj, onda je k bitova potrebno da se
predstavi svaka cifra. Korištenje skrivene 1-ce, povećava s za jedan bit iako ona ne
povećava broj brojeva koji se mogu predstaviti. U predhodnom primjeru postoje tri
značajne cifre u signifikantu baze 16 i postoji 12 bitova koji čine 3 cifre, postoje 3 bita u
excess-4 eksponentu koji mu daju rang od [-22, +22-1]. Za ovaj slučaj imamo b=16,
s=3, M=3 i m=-4.
A B C D E
2 X ((M - m) + 1) X (b - 1) X bs-1 + 1
Bit za predznak može imati dvije vrijednosti, kao što pokazuje pozicija A. Ukupni
broj eksponenata je predstavljen na poziciji B. Primjećujemo da sve bit-forme
eksponenta nisu validne u svim predstavljanjima. IEEE 754 standard za predstavljanje
brojeva sa pokretnim zarezom, koji ćemo mi ukratko proučavati, ima najmanji mogući
eksponent –126, čak i ako eksponent od 8 bitova može podržavati manji broj kao što je –
128. Zabranjeni eksponenti su rezervisani za specijalne brojeve kao što su 0 i
beskonačnost.
Slijedi prva cifra signifikanta koja može imati bilo koju vrijednost osim 0, u
normalizovanom predstavljanu (osim ako se koristi skrivena 1-ca) kao što je
predstavljena sa (b-1) na poziciji C. Preostale cifre signifikanta mogu uzeti bilo koje od b
vrijednosti za bazu, kao što je prikazano sa bs-1 na poziciji D.
Ako se koristi skrivena 1-ca onda pozicija C nestaje, a pozicija D se zamjenjuje sa bs. Na
kraju mora biti predstavljanje 0-le koja se postavlja na poziciju E.
19
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
–3 –1 –1 0 1 1 3
1 1
2 2 – 2 2
4 4
–1 1 b = 2 M = +1
8 8 s = 3 m = –2
Sično, najveći broj koji se može predstaviti kad su eksponent i signifikant najveći.
Najveći eksponent je 1, a najveći signifikant je (.111)2. Prema tome najveći broj koji se
može predstavit je bM x (1-b-s) = 21 x (1-2-3) = 7/4.
Najmanja razlika se javlja kada je eksponent ima svoju najmanju vrijednost i kada
se najmanje značajan bit signifikanta promjeni, a to je bm x b-s = bm-s = 2-2-3 = 1/32.
Slično, najveća razlika se javlja kada je eksponent ima svoju najveću vrijednost i
kada se najmanje značajan bit signifikanta promjeni, a to je bM x b-s = bM-s = 2-1-3 = 1/4.
Broj bit-forme koji predstavljaju ispravne brojeve je manji nego broj mogućih bit-
formi, zbog normalizacije, kao što smo prije diskutovali broj brojeva koje je moguće
predstaviti sastoji se od 5 dijelova, koji su: b za predznak, eksponenti, prva značajna
cifra, ostale cifre i bit-formu za nulu. Ovo se izračunava na sljedeći način:
20
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
PRIMJER:
.09375 X 2 = 0.1875
.1875 X 2 = 0.375
.375 X 2 = 0.75
.75 X 2 = 1.5
.5 X 2 = 1.0
Ovaj standard kao što je opisan ispod mora biti podržan od kompjuterskog
sistema, a ne neophodno od čitavog hardvera. Tj. kombinacija hardvera i softvera može
se koristiti, a da se ispoštuje standard.
1.2.5.1. Formati
21
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
32 bits
Jednostruka
8 bits 23 bits
preciznost
Exponent Ostatak
Znak
(1 bit) 64 bits
Dvostruka
11 bits 52 bits
preciznost
Exponent Ostatak
22
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
da postoji samo jedna predstava za svaki denormalizovani broj, a nasuprot tome postoji
beskonačno mnogo ne-normalizovanih predstava.
Vrijednost Bit-forma
Znak Eksponent Ostatak
(a) +1.101 X 25 0 1000 0100 101 0000 0000 0000 0000 0000
(b) −1.01011 X 2−126 1 0000 0001 010 1100 0000 0000 0000 0000
(c) +1.0 X 2127 0 1111 1110 000 0000 0000 0000 0000 0000
(d) +0 0 0000 0000 000 0000 0000 0000 0000 0000
(e) −0 1 0000 0000 000 0000 0000 0000 0000 0000
8
Primjećujemo da 2-128 ima osnovicu 1.0, zbog čega zu svi brojevi iza zareza nule.
Pored ovih postoje još i jednostruki prošireni i dvostruki prošireni formati. Oni se
koriste u slučajevima kada se trebaju izbjeći greške prilikom zaokruživanja, tj. kada je
potrebna veća interna preciznost za vrijeme kalkulacije.
23
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba
1.2.5.2. Zaokruživanje
Implementacija IEEE 754 mora dati najmanje jednostruku preciznost dok su ostali
formati opcioni. Također može biti potrebno još nekoliko dodatnih bitova preciznosti za
vrijeme izračunavanja (tzv. bitovi čuvari), i mora postojati odgovarajući metod
zaokruživanja srednjeg rezultata na broj bitova poslije decimalne tačke. Postoje četiri
načina zaokruživanja u IEEE 754 standardu. Jedan način zaokružuje na 0, drugi prema +
beskonačno, treći prema – beskonačno. Podrazumijevani način je da se zaokruži na
najbliži broj koji se može predstaviti. Slučajevi “na pola” se zaokružuju na cifru nižeg
reda koja je parna. Na primjer 1.01101 se zaokružuje na 1.0110, a 1.01111 se
zaokružuje na 1.1000.
24
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/