You are on page 1of 24

Fakultet informacijskih tehnologija

ProgramiranjeI_sylabus.doc edina@fit.ba

PREDSTAVLJANJE PODATAKA U RAČUNARU

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

Ova spoznaja odmah povlači i pitanje kako se podaci, odnosno informacije


predstavljaju u računaru - to predstavlja data representation, ili data encoding.
Možemo zaključiti da sve informacije (grafika, audio, klik na miša i sl.) moraju biti
sistematski i na odgovarajući unaprijed-dogovoren način kodirane odnosno predstavljene
u računaru.

Dalje kroz tekst ćemo objasniti kodiranje (predstavljanje) nekoliko jednostavnijih i


najvažnijih tipova podataka i to: predstavljanje brojeva sa nepomičnim decimalnim
zarezom (s predznakom i bez predznaka), realnih brojeva (brojeva sa pomičnim
decimalnim zarezom - floating point number) i karaktera. Vidjet ćemo da u svim
pojedinačnim slučajevima postoji više načina kodiranja gore navednih podataka, od kojih
su neki korisni u jednom, a neki u drugom kontekstu. U početku nam je cilj
razumijevanje šeme predstavljanja podataka, dok ćemo kasnije kompletan proces
razmatrati detaljnije.

1.1. BROJEVI SA NEPOMIČNIM ZAREZOM (Fixed Point Numbers)

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.

Kada ovakav broj predstavljamo u računaru, binarni zarez (tačka) se nigdje ne


pohranjuje, nego se njeno mjesto samo podrazumijeva. Moglo bi se reći da postoji samo
u programerovoj glavi.

1.1.1. Područje vrijednosti (Rang) i preciznost (Precision) kod brojeva sa


nepomičnim zarezom

Brojevi sa nepomičnim zarezom mogu poprimati vrijednosti koje se izražavaju


zatvorenim intervalom (od najmanjeg do najvećeg broja) i sa preciznošću koja je
određena razlikom između dva uzastopna broja, iz definisanog intervala, na brojnoj osi.

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.

Pomjeranjem decimalnog zareza na desno odnosno lijevo dobivamo intervale


[000, 999] sa preciznošću od 1.0, odnosno [.000, .999] sa preciznošću od 0.001. U oba
slučaja broj decimalnih "objekata" je 103, tj. moguće je prikazati 1000 različitih
vrijednosti.

Intervali mogu počinjati i završavati sa bilo kojim brojem kao npr. [00,99], [-
50,+49] i td.

Rang (područje vrijednosti) i preciznost su veoma bitna pitanja u računarskoj


arhitekturi, jer to su ograničenja kojih se moramo pridržavati i na koja se moramo
naviknuti, za razliku od realnog svijeta gdje takva ograničenja ne postoje.

1.1.2. Zakon asocijativnosti ne važi uvijek kod računara

Ranije smo naučili zakon asocijativnosti u matematici koji glasi:

a + (b + c) = (a + b) + c

Sada ćemo na jednom primjeru provjeriti da li zakon asocijativnosti važi za


fixed point numers (brojeve sa nepomičnim zarezom).

Uzet ćemo u razmatranje brojeve predstavljene kao jednocifrene brojeve za


decimalnom tačkom (zarezom) na desnoj strani i u intervalu (rangu) [-9,9]. Uzet ćemo
sljedeće vrijednosti parametara: a = 7, b = 4, c = -3, dalje slijedi:

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.

Ovo nam govori da zakon asocijativnosti u ovakvim i sličnim slučajevima ne važi


zbog ograničenosti brojeva sa nepomičnim zarezom.

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

1.1.3. Baze brojnih sistema

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.

Generalni oblik brojeva sa nepomičnim zarezom piše se:

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:

5 x 102 + 4 x 101 + 1 x 100 + 2 x 10-1 + 5 x 10-2 =

(500)10 + (40)10 + (1)10 + (2/10)10 + (5/100)10 = (541.25)10

1.1.4. Pretvaranje broja iz jedne baze u drugu bazu

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 =

(8)10 + (0)10 + (2)10 + (0)10 + (0/2)10 + (1/4)10 = (10.25)10

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.

Obrnuti postupak, tj. prevođenje iz dekadnog u binarni (ili sistem sa nekom


drugom bazom) broja sa nepomičnim zarezom je nešto složeniji postupak.
Najjednostavniji način prevođenja u slučaju kada fixed point number sadrži i cjelobrojni i
decimalni (iza zareza) dio, jeste da se ti dijelovi razdvoje i posmatraju odvojemo.
3
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba

Uzet ćemo za primjer broj (23.375)10 koji ćemo rastaviti na dva dijela:

(23.375)10 = (23)10 + (.375)10

Prevođenje cjelobrojnog dijela broja sa nepomičnim zarezom - Metod ostatka

Prema naprijed navedenom opći prikaz cjelobrojnog binarnog dijela predstavljamo u


obliku:

bi x 2i + bi-1 x 2i-1 + bi-2 x 2i-2 + ….. + b1 x 21 + b0 x 20

Dijeljenjem ovog izraza sa 2 dobijamo izraz:

bi x 2i-1 + bi-1 x 2i-2 + ….. + b1 x 20

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

23/2 = 11 R1 Najmanje važan bit

11/2 = 5 R1

5/2 = 2 R1

2/2 = 1 R0

1/2 = 0 R1 Najviše važan bit


(23)10 = (10111) 2
(Slika 1.)

Sada ovaj postupak ponovimo za naš konkretan slučaj. Dobijamo:

Metoda ostatka se ogleda u tome da se broj podijeli sa brojem 2 (bazom) uz


određeni ostatak (1 odnosno 0), zatim se dobijeni rezultat ponovo dijeli sa 2, i
sve tako dok se ne dođe do nule. Dobijeni ostaci predstavljaju traženi binarni broj,
s tim da je prvi dobijeni ostatak least significiant bit (najmanje važan bit) i on
je posljednja cifra u nizu 0-la i 1-ca, dok je posljednji dobijeni ostatak most
4
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba

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.

Prevođenje decimalnog dijela broja za nepomičnim zarezom - Metod množenja

Opći prikaz binarnog dijela iza zareza predstavljamo u obliku:

b-1 2-1 + b-2 x 2-2 + b-3 x 2-3 + …

Množenjem ovog izraza sa 2 dobijamo izraz:

b-1 + b-2 x 2-1 + b-3 x 2-2 + …

Vidimo da nam je sada poznat koeficijent b-1. Ponavljanjem množenja dobijamo


koeficijente bi. Ovo se zove metod množenja i koristi se u slučajevima prevođenja broja
iza zareza iz jedne u drugu bazu.

U našem slučaju. Dobijamo:

Najviše važan bit


.375 x 2 = 0.75

.75 x 2 = 1.5 0

.5 x 2 = 1.0
Najmanje važan bit
(.375)10 = (.011) 2

(Slika 2.)

Početni broj je uvijek manji od 1 tako da množenjem sa 2 dobijamo broj manji od


2. Cifra sa lijeve strane tačke (cjelobrojni dio) nakon množenja može biti samo 0 ili 1. Ta
cifra predstavalja most significiant bit (najviše važan bit) i ona je početna cifra
traženog binarnog broja. U našem slučaju je to 0 (0.75). Ponovnim množenjem broja iza
zareza (dobijenog kao rezultat prvog množenja) dobijamo sljedeću cifru birnarnog broja.
Postupak se ponavlja dok se nedobije 0 iza zareza, a posljednja dobijena cifra ispred
zareza jeste least significiant bit (najmanje važan bit) i ona je posljednja cifra
dobijenog binarnog broja (Slika 2.).

Ovom metodom možemo brojeve iza zareza iz dekadnog sistema prevoditi u


brojeve sistema sa bilo kojom bazom tako što ćemo množenje vršiti sa odgovarajućom
bazom.
5
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba

Konačko spajanjem ova dva dobijena rezultata imamo:

(23.375)10 = (10111.011)2

- Beskonačni brojevi iza zareza

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:

i/2k = i x 5k / (2k x 5k) = i x 5k / 10k = j / 10k , gdje je j = i x 5k

Tako je broj iza zareza konačan u dekadnom sistemu.

Uslov da bi konačni broj iza zareza u dekadnom sistemu bio i konačan broj u
binarnom sistemu je:

i/10k = i / (2k x 5k) = j / 2k , gdje je j = i/5k i 5k se mora sadržavati u i bez ostatka.

Š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

Binarni protiv dekadnog sistema

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.

Binarni, oktalni i heksadecimalni sistem

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.

Oktalni (baza 8) i heksadecimalni (baza 16) brojni sistemi su srodni sa binarnim


sistemom jer su te baze djeljive sa 2. Oktalni brojni sistem je bliskiji nama jer koristi 8
cifri, dok je heskadecimalnom brojnom sistemu osim 10 cifri koje koristimo u dekadnom
sistemu potrebno još šest, a to su slova A, B, C, D, E i F. U sljedećoj tabeli je uporedni
pregled četiri spomenuta brojna sistema.

Binarni Oktalni Decimalni Heksadecimalni

(baza 2) (baza 8) (baza 10) (baza 16)

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

Poredeći ove kolone primjećujemo da je za prikaz jednocifrenog oktalnog broja u


binarnom sistemu potrebno 3 bita (23 = 8), a heksadecimalnog broja u binarnom sistemu
potrebna su 4 bita (24 = 8). Analogno tome k bita za sistem baze 2k.

Prevođenje iz binarnog u oktalni i heksadecimalni brojni sistem je daleko


jednostavnije nego li u decimalni sistem. Kod prevođenja u oktalni sistem binarni broj se
dijeli u grupe od po 3, počevši od binarne tačke. Ukoliko posljednja grupa nema 3 cifre, u
nju se sa lijeve strane dopisuju 0-le. Nakon toga svaka grupa se prevodi u oktalni sistem.
Kod prevođenja u heksadecimalni sistem binarni broj se dijeli u grupe od po 4 cifre, a
dalji postupak je identičan.

Primjer prevođenja broja (10110)2 u oktalni sistem:

(10110)2 = (010)2 (110)2 = (2)8 (6)8 = (26)8

Primjer prevođenja broja (10110110)2 u heksadecimalni sistem:

(10110110)2 = (1011)2 (0110)2 = (B) 16 (6) 16 = (B6)16

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.

1.1.5. Sabiranje u binarnom sistemu

Poznavanje jednostavnog binarnog sabiranja je neophodno radi mogućnosti


razumijevanja predstavljanja negativnih binarnih brojeva. Binarno sabiranje je slično
decimalnom sabiranju. Binarni brojevi A i B se također sabiraju s desna na lijevo. Nakon
svakog pojedinačnog sabiranja dvije odgovarajuće cifre brojeva A i B, dobijamo zbir i
pamtimo vrijednost koja se prenosi. Ona se zbraja zajedno sa sljedećim parom cifri.
Krajnja desna vrijednost koja se prenosi je uvijek 0, a svaka sljedeća može biti 0 ili 1. Na
sljedećoj slici vidimo sve moguće varijante zbirova i vrijednosti koje se prenose, te jedan
primjer binarnog sabiranja.

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

Vrijednost Zbir Primjer:


koja se prenosi Prenešeno: 1 1 1 1 0 0 0 0
Broj A 0 1 1 1 1 1 0 0 (124)10
Broj B + 0 1 0 1 1 0 1 0 (90)10
Zbir: 1 1 0 1 0 1 1 0 (214)10

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.

1.1.6. Brojevi za nepomičnim zarezom sa predznakom (Signed Fixed Point


Number)

Do sada smo govorili samo o predstavljanju brojeva sa nepomičnim zarezom bez


predznaka, međutim stvar se uveliko mijenja kada se pojavljaju brojevi sa preznakom,
odnosno i negativni brojevi sa nepomičnim zarezom. Postoje četiri različita načina
njihovog predstavljanja a to su: vrijednost s predznakom, komplement jedinice,
komplement dvojke, predstavljanje dodavanjem.

U sljedećoj tabeli je možete uporediti predstavljene 3-bitne brojeve na ova četiri


načina, a svaki ćemo opisati i kroz primjere objasniti.

Binarni
Decimalni
bez Vrijednost s Komplement Komplement dodavanje
predznaka predznakom jedinice dvojke 4

7 111 - - - -

6 110 - - - -

5 101 - - - -

4 100 - - - -

3 011 011 011 011 111

2 010 010 010 010 110

9
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba

1 001 001 001 001 101

+0 000 000 000 000 100

-0 - 100 111 000 100

-1 - 101 110 111 011

-2 - 110 101 110 010

-3 - 111 100 101 001

-4 - - - 100 000

Vrijednost s predznakom (Signed Magnitude)

Ovaj način predstavljanja je najbliži nama, tj. najsličniji predstavljanju predznaka


u dekadnom sistemu. Kao što u dekadnom sistemu ispred broja (na lijevoj strani) stoji
znak + ili -, tako u binarnom sistemu, kod ovog načina predstavljanja, krajnja lijeva cifra
datog binarnog broja određuje njegov predznak. To tako što 0 na znači "+", a 1 znači "-".
Pogledajmo to na primjeru broja (+12)10, odnosno (-12)10 u 8-bitnom formatu:

(+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.

Komplement jedinice (One's Complement)

Ovaj način se vrlo jednostavno primjenjuje. Negativan binarni broj prikazujemo


zamjenom svih 0-la u 1-ce i svih 1-ca u 0-le datog pozitivnog binarnog broja. Ovaj
postupak zamjene 0-la u 1-ce i obrnuto se naziva komplementacija bita. Iz prethodne
tabele primjećujemo da su kao i kod vrijednost s predznakom načina prikaza, kod
pozitivnih brojeva prve cifre 0-le, a kod negativnih 1-ce.

Ponovo pogledajmo to na primjeru broja (+12)10, odnosno (-12)10 u 8-bitnom


formatu:

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

Kod komplementa jedinice +0 i -0 predstavljaju binarni brojevi 00000000 i


11111111, tako da i ovdje imamo 28 - 1 = 255 različitih mogućnosti.

Ovaj način prikazivanja negativnih brojeva se ne koristi često, jer se javljaju


komplikacije kod sabiranja ovakvih brojeva, što ćemo vidjeti kasnije.

Komplement dvojke (Two's Complement)

Komplement dvojke se formira na način sličan prethodnom s tim da se nakon


komplementiranja svih bita u datom broju, dobijenom broju dodaje 1-ca. Ako se
vrijednost koja se prenosi desi kod najviše važnog bita onda se prenešena vrijednost gubi
odnosno ne prenosi se. I kod komplementa dvojke krajnje lijeve cifre za predstavljanje
pozitivnih brojeva su 0-le, a negativnih 1-ce, kao i kod predhodna sva načina.

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.

Pogledajmo sada ponovo broj (+12)10 8-bitnom formatu koji je binarno


(00001100)2 komplementiranjem dobijamo (11110011)2, a dodavanjem 1-ce imamo
(-12)10 = (11110100)2.

Broj pozitivnih i broj negativnih brojeva je identičan, s tim da 0 predstavlja


pozitivan broj, a što je i logično jer je njen predznak 0. Pošto pozitivni brojevi počinju sa
0, a negativni sa -1, apsolutna vrijednost najmanjeg negativnog broja će biti veća od
apsolutne vrijednosti najvećeg pozitivnog broja. Najmanji negativni broj je -128, dok je
najveći pozitivan 127. Ako pokušamo da nađemo pozitivnu vrijednost od broja (-128)10
vidjećemo da ponovo dobijamo negativan broj.

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

Komplement dvojke predstavljanje se najčešće koristi na današnjim računarima i


mi ćemo ga koristiti.

Predstavljanje dodavanjem

U excess ili bias predstavljanju, brojevi su predstavljani kao brojevi bez


predznaka, s tim što im je vrijednost "pomjerena" za određenu vrijednost - bias. Stvar je
u tome da se najmanja vrijednost bit-forme, sve nule, dodijele negativnoj vrijednosti
bias-a, a onda redom uvećavajući svaki naredni broj u nizu. Zgodno je objasniti ovaj
način predstavljanja kao zbir komplementa dvojke i još jednog broja, kojeg nazivamo
excess ili bias.

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

Kako je ovaj način predstavljanja ustvari samo "pomjeren" za određenu vrijednost


komplent dvojke način to ovdje imamo samo jedan prikaz za 0. U prethodnom slučaju
vrijednost broja koji se dodaje je izabran tako da ima isti uzorak bita kao najveći
negativni broj, što ima za posljedicu pojavljivanje brojeva u numerički sortiranom
redosljedom ako se posmatraju kao brojevi bez predznaka. Tako je najveći negativan
broj predstavljen kao (-128)10 = (00000000)2, a najveći povizivan broj kao (-127)10 =
(11111111)2.

Ovakav način predstavljanja pojednostavljuje uočavanje razlike među brojevima,


jer su binarne predstave za negativne brojeve manje vrijednosti u odnosu na pozitivne
brojeve.

1.1.7. Binarno predstavljanje cifri decimalnog broja (Binary Coded


Decimal)

(a) 0 0 0 0 0011 0000 0 0 0 1 (+301)10


(0)10 (3)10 (0)10 (1)10

(b) 1 0 0 1 0110 1001 1 0 0 0 (–301)10


(9)10 (6)10 (9)10 (8)10

(c) 1 0 0 1 0110 1001 1 0 0 1 (–301)10


(9)10 (6)10 (9)10 (9)10

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.

Iako se ne koriste sve moguće kombinacije, BCD se najčešće koristi kod


kalkulatora i poslovnih aplikacija. Pošto postoje neki problemi u predstavljanju
decimalnih brojeva sa konačnim brojem decimalnih mjesta u binarni sistem. Zato, nema
potrebe da se vrši konverzija podataka koji se unose u dekadnom sistemu (kao kod
kalkulatora) u bazu 2, niti pri izlazu iz baze 2 u bazu 10.

Vršiti aritmetičke operacije sa BDC brojevima sa predznakom, nije baš najjasnije


na prvi pogled. To iz razloga što smo navikli da u dekadnom sistemu imamo predznak za
broj pored njegove vrijednosti, međutim kod predstavljanja u računaru je to drugačije. U
komplement devetke brojnom sistemu brojevi su predstavljeni kao i u običnom BCD
sistemu, samo što krajnja lijeva cifra mora biti manja od 5 za pozitivne brojeve, a 5 ili
veća za negativne brojeve.

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.

Komplement desetke se tvori tako što se na komplement devetke dodaje 1-ca.


Tako da imamo 9698 + 1 = 9699. Za ovaj primjer pozitivni brojevi su od 0 do 4999, dok
su negativni 5000 do 9999.

1.2. BROJEVI SA POMIČNIM ZAREZOM (Floating Point Numbers)

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.

Kod brojeva sa nepomičnim zarezom bilo bi potrebno mnogo cifri da bi se


predstavio neki raspon brojeva koji susrećemo u praksi. Npr. računar koji može
predstaviti broj velik kao 1 bilion sadrži najmanje 40 bitova s lijeve strane tačke jer je
240=1012. Ako isti računar treba da predstavi jedan bilioniti dio, onda 40 bita mora takođe
postojati sa desne strane decimalne tačke, što ukupno iznosi 80 bita po jednom broju.

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

1.2.1. Područje vrijednosti (Rang) i preciznost (Precision) kod

brojeva sa pomičnim zarezom

Brojevi sa pokretnim zarezom omogućuju predstavljane velikog raspona brojeva


malim brojem cifri tako što se odvajaju cifre korištene za preciznost od brojeva korištenih
za raspon. Prmjer jednog takvog broja je:

+6.023 x 1023

Ovdje je raspon predstavljen stepenom baze 10, 1023 u ovom slučaju, a


preciznost je predstavljena ciframa sa nepomičnim zarezom, 6.023 u ovom slučaju. Kod
brojeva sa pomičnim zarezom dio sa nepomičnim zarezom se često oznacava kao
mantisa ili signifikant. Raspon je određen uglavnom brojem cifri u eksponentu (ovdje su
korištene

dvije cifre) i bazom (u ovom slučaju je to baza 10), a preciznost je definisana


brojem cifri u signifikantu (ovdje su korištene četiri cifre). Slika pokazuje kako triplet:
znak, eksponent i signifikant mogu biti formatirani na računaru.

Pozicija decimalne tačke

+ 2 3 6 . 0 2 3

Znak Eksponent Ostataak


(Dvije cifre) (Četiri cifre)

Primjetite kako su cifre grupisane zajedno sa znakom na početku, nakon kojeg


dolazi eksponent i nakon njega dolazi signifikant. Ovaj raspored je koristan kod
usporedbe dva ovakva broja. Treba znati da nije potrebno da decimalna tačka bude
smještena zajedno sa brojevima sve dok je na istom mjestu u signifikantu.

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

1.2.2. Normalizacija i skriveni bit

Problem koji se javlja kod predstavljanja brojeva sa pokretnim zarezom je da se


isti broj može predstaviti na više načina, što otežava poređenja i artimetičke operacije. U
primjeru ispod pogledajte nekoliko numeričkih ekvivalenata:

3584.1 x 100 = 3.5841 x 103 = .35841 104

Da bi izbjegli predstavljanje istog broja na više načina, brojevi se drže u nomaliziranoj


formi. To jest decimalna tačka se premješta lijevo ili desno i eksponent se prilagođava
tački sve dok tačka ne bude jedno mjesto lijevo od krajnje lijeve cifre različite od 0.
Tako je u našem primjeru krajnji desni broj normaliziran. Na žalost nula ne može biti
predstavljena ovom šemom, pa je njeno predstavljanje izuzetak. Izuzetak je taj da je
nula predstavljena kao sve nule u mantisi.
Ako je mantisa predstavljena binarno tj. baza je 2 i ako je uslov za normalizaciju
da glavni broj u normalizovanoj mantisi bude 1, onda ne moramo pisati 1, šta više većina
formata za brojeve sa pokretnim zarezom nigdje je ne upisuju. Umjesto toga ona je
izostavljena (“isječena”) prilokom pripreme za pohranu i onda vraćena kada se broj
ponovo čita (vraća u oblik eksponeneta i mantise). To rezultira dodanim bitom za
preciznost na desnoj strani broja, pošto se uklanja bit na lijevoj strani.

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.

1.2.3. Predstavljanje brojeva sa pokretnim zarezom u računaru - uvod

Prvo ćemo dizajnirati jednostavan format brojeva sa pokretnim zarezom da bi


ilustrirali bitne činioce u predstavljanju ovog tipa brojeva u računaru. Predstavit ćemo
signifikant u formatu vrijednosti sa predznakom(jedan bit određuje znak), i tri
heksadecimalne cifre za vrijednost. Exponent će biti 3-bita, excess-4 broj, sa bazom 16.

Normaliziran oblik broja ima heksadecimalnu tačku lijevo od tri heksadecimalne


cifre. Ovi bitovi će biti grupisani zajedno na sljedeći način: znakovni bit je lijevo, praćen
3-bitnim eksponentom a poslije njega su tri heksadecimalne cifre signifikanta. Niti baza
niti heksadecimalna tačka neće biti pohranjena. Razlog zbog kojeg se koristi ovaj
redoslijed je da se brojevi u ovom formatu mogu porediti sa =, /, <, > u njihovom
”pakiranom” obliku, što pokazuje slika:

15
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba

Pogledajmo na primjeru predstavljanja broja (358)10 u ovom obliku.

Prvi korak je da prebacimo broj sa nepokretnim zarezom iz njegove originalne


baze u broj sa nepokretnim zarezom ciljne baze. Koristeći metod opisan ranije prebacit
ćemo broj iz baze 10 u broj po bazi 16 kao na slici:

Na ovaj način (358)10 postaje broj (166)16.

Drugi korak je da broj sa nepokretnim zarezom pretvorimo u broj sa pokretnim


zarezom:
(166)16 = (166.) 16 *160

Napominjemo da oblik 160 označava bazu 16 sa exponentom 0, s tim da je broj


16 po bazi 10. Ovo je znakovna olakšica koja se koristi u opisivanju brojeva sa pokretnim
zarezom.

Slijedeći korak je normaliziranje broja:

(166.)16 x 160=(.166)16 x 163

Na kraju punimo bitove brojem. Broj je pozitivan pa ćemo postaviti 0 na mjesto


znaka. Eksponent je 3, ali ćemo ga mi predstaviti u obliku excess-4, pa se bit-forma
računa kao na slici:

16
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba

Još smo mogli jednostavno računati 3 + 4 = 7 u bazi 10 i onda prevesti rezultat


tj. (7)10=(111)2.

Na kraju, svaka cifra u bazi 16 predstavljena je binarno kao 1=0001, 6=0110 i


6=0110. Krajnja bit-forma je prikazana na slici:

Još jednom primjetite da decimalna tačka nije eksplicitno predstavljena u bit-


formi nego se njena prisutnost podrazumijeva. Mjesta između cifri su samo da bi bilo
jasnije, ali to ne znači da su cifre tako pohranjene i u računaru. Bit-forma pohranjena u
računaru bi izgledala ovako:

0111000101100110

Upotreba excess-4 eksponenta umjesto komplementa dvojke ili vrijednosti sa


predznakom pojednostavljuje sabiranje i oduzimanje brojeva sa pokretnim zarezom (što
ćemo objasniti u kasnije). Da bi oduzeli ili sabrali dva normalizirana broja sa pokretnim
zarezom, manji eksponent (manji po stepenu) mora prvo biti povećan do većeg
eksponenta (ovo zadržava rang), koji takođe ima efekat denormalizacije manjeg broja.
Da bi odredili koji je eksponent veći trebamo bit-forme tretirati kao neoznačene brojeve i
onda ih uporediti.

Tj. koristeći excess-4 predstavljanje, najmanji eksponent je -4, koji se predstavlja


kao 000. Najveći eksponent je +3 koji se predstavlja kao 111. Preostale bit-forme za -3,
-2, -1, 0, +1 i +2 se označavaju kao 001, 010, 100, 101 i 110 respektivno.

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.

Predpostavimo da je dozvoljeno samo 10 bita za signifikant u primjeru iznad.


Umjesto 12 bita koji se podjednako grupišu u četvorke za heksadecimalne cifre. Kako
promijeniti predstavljanje? Jedan način je da zaokružimo signifikant i prilagodimo
exponent. Drugi način, koji ovdje prikazujemo, je da jednostavno skratimo bit-formu za
17
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba

najmanje značajne bitove odsjecanjem i izbjegnemo prilagođavanje eksponenta, pa bi


broj koji predstavljamo bio:

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.

1.2.4. Greške kod predstavljanja brojeva sa pokretnim zarezom

Činjenica da konačna preciznost izaziva grešku znači da bi trebali razmatrati kolika


je ta greška (pod greškom podrazumijevamo razmak između dva susjedna broja koja se
mogu predstaviti), i da li je ona prihvatljiva za našu aplikaciju. Kao primjer potencijalnog
problema razmatramo predstavljanje jednog miliona u formatu pokretnog zareza i
oduzimanje milion jedinica od njega. Može se desiti da opet ostanemo na milionu (poslije
cjelokupnog oduzimanja) ako je greška veća od 1.

Da bi okarakterisali grešku rang i preciznost koristimo sljedeću notaciju:

b baza

s broj značajnih cifri (ne bitova) u signifikantu

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.

U analizi predstavaljanja brojeva sa pokretnim zarezom postoji pet karakteristika


koje razmatramo: broj brojeva koji se mogu predstaviti, brojevi koji imaju najveću i
najmanju vrijednost (različitu od 0) i veličine najvećeg i najmanjeg razmaka između dva
uzastopna broja. 18
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba

Broj brojeva koji se mogu predstaviti može se odrediti kao na slici:

A B C D E

2 X ((M - m) + 1) X (b - 1) X bs-1 + 1

Bit za Brojevi za Prva cifra Ostale cifre Nula


znak eksponent ostatka ostatka

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.

Posmatrajmo sada brojeve sa najmanjom i najvećom vrijednosti. Broj sa


najmanjom vrijednosti ima najmanji eksponent i najmanji normaliziran signifikant različit
od nule. Mora biti vrijednost različita od nule na mjestu prve cifre, a pošto je jedinica
najmanja vrijednost koju možemo postaviti, najmanji signifikant je b-1. Broj sa
najmanjom vrijednosti je bm x b-1 = bm-1 . Na sličan način dobijamo i broj sa najvećom
vrijednosti (kada su sve jedinice), a to je bM (1- b-s).

Najmanji i najveći razmak između dva uzastopna broja se slično izračunavaju.


Najmanja razlika nastaje kada eksponent ima svoju najmanju vrijednost i kada se
najmanje značajan bit signifikanta promjeni. Razlika je bm x b-s = bm-s. Najveća razlika
nastaje kada je eksponent najveći i kada se najmanje značajan bit signifikanta promjeni.
Razlika je bM x b-s = bM-s.

Kao primjer posmatrajmo predstavljanje broja sa pokretnim zarezom kod kojeg


imamo jedan bit za predznak, dvobitni excess-2 eksponent, te trobitni normalizovani
signifikant u bazi 2, kod kojeg je vodeća jednica vidljiva, tj. nije skrivena. Reprezentacija
nule je bit-forma 000000. Brojna linija koja prikazuje sve brojeve koji se mogu predstavit
u ovom formatu je prikazana na slici :

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

Primjećujemo da je relativno veliki razmak između nule i sljedećeg broja koji se


može predstaviti, zato što normalizovano predstavljanje ne podržava bit-forme koje
odgovaraju brojevima između 0 i prvog broja kojeg je moguće predstaviti.

Najmanji broj koji se može predstaviti kad su eksponent i signifikant najmanji.


Najmanji eksponent je –2, a najmanji signifikant je (.100)2. Prema tome najmanji broj
koji se može predstavit je bm x b-1 = bm-1 = 2-2-1 = 1/8.

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:

2 x ((M-m) +1) x (b-1) x bs-1 +1 = 2 x ((1-(-2)) +1) x (2-1) x 23-1 +1 = 33

Primjećujemo da su razmaci mali za male brojeve, a da su veliki za velike brojeve.


U stvari, relativna greška je približno ista za sve brojeve. Ako uzmemo količnik velikog
razmaka i velikog broja i to uporedimo sa količnikom malog razmaka i malog broja,
vidjećemo da su oni isti:

20
Arhitektura kompjuterskih sistema::Vjezbe i workshop
http://dl.fit.ba/
Fakultet informacijskih tehnologija
ProgramiranjeI_sylabus.doc edina@fit.ba

PRIMJER:

Razmatrajte problem konvertovanja (9.375 x 10-2)10 u bazu 2 (naučna notacija).


Tj. rezultat bi trebao imati formu x.yy x 2z. Počinjemo pretvaranjem iz baze 10 (sa
pokretnim zarezom) u bazu 10 sa nepokretnim zarezom. Pomjeranjem decimalne tačke
dvije pozicije lijevo što odgovara .09375. Onda taj broj pretvaramo u bazu 2.

.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

Imamo (.09375)10 = (.00011)2. Konačno pretvaramo u normalizovan oblik broja


sa pokretnim zarezom u bazi 2

.00011 = .00011 x 20 = 1.1 x 2-4

1.2.5. IEEE 754 standard brojeva sa pokretnim zarezom

Postoji mnogo načina da se prikažu brojevi sa pokretnim zarezom, od kojih smo


mi neke već istražili. Svaka predstava ima svoje svopstvene karakteristike u smislu
ranga, preciznosti i broja brojeva kji se mogu predstaviti. U naporu da se poboljša
portabilnost sofrvera i omogući jedinstvena tačnost u kalkulacijama sa pokretnim
zarezom IEEE 754 standard za predstavljanje brojeva sa pokretnim zarezom za binarne
brojeve je razvijen.

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

Postoje dva primarna formata u IEEE 754 standardu: jednostruka preciznost i


dvostruka preciznost. Slika ispod sumira izglede ova dva formata.

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

Jednostruka preciznost zauzima 32 bita a dvostruka preciznost 64 bita. Format


dvostruke preciznosti je jednostavno šira verzija jednostruke preciznosti. Bit za predznak
je krajnji lijevo, i označava pozitivni ili negativni broj sa 0-lom ili 1-com respektivno. 8-
bitni excess-127 (ne 128) exponent slijedi u kojem bit-forme 00000000 i 11111111 su
rezervisane za specijalne slučajeve kao što je dolje opisano.

Za dvostruku preciznost 11-bitni eksponent je predstavljen u excess-1023 a


00000000000 i 11111111111 su rezervisani. 23-bitna osnovica u bazi 2 slijedi. Postoji
skriveni bit lijevo od binarne tačke koji kad se uzme zajedno sa osnovicom jednostruke
preciznosti formira 23+1=24-bitnu osnovicu u formi 1.fff…f gdje fff…f forma predstavlja
23-bitnu osnovicu koja se pohranjuje. Format dvostruke preciznosti takođe koristi
skriveni bit lijevo od decimalne tačke što podržava 52+1=53 bitnu osnovicu. Za oba
formata broj je normalizovan osim ako denormalizovani nisu podržani, kao što će biti
objašnjeno poslije.

Postoji pet osnovnih tipova brojeva koji se mogu predstaviti. Normalizovani


brojevi različiti od 0 imaju formu, kao što je opisano iznad.

Tzv. “čista nula” se predstavlja sa rezervisanom bit formom 0000000 u


eksponentu i sve nule u osnovici. Znak može biti 0 ili 1, tako da nulu možemo predstaviti
na dva načina: +0 i –0.

Beskonačnost se predstavlja na taj način što eksponent sadržanu rezervisanu bit-


formu 11111111, a osnovica sadrži sve nule, a bit za znak može biti 0 ili 1. Beskonačnost
je korisna u rukovanju sa situacijama prekoračenja ili u ispravnom predstavljanju broja
različitog od 0 podijeljenog sa nulom.

Ako se 0 dijeli sa 0 ili beskonačno sa beskonačno onda je rezultat nedefinisan.


Ovo se predstavlja sa NaN (not a number) formatom u kojem eksponent sadrži
rezervisanu bit-formu 11111111, a osnovica je različita od 0, a bit znak je 0 ili 1. NaN se
također dobiva pokuša li se izvaditi korijen iz –1.

Kao sa svim normalizovanim predstavljanjima postoji veliki razmak između 0 i


prvog broja koji je moguće predstaviti. Denormalizovana, “prljava nula” predstava
dozvoljava da brojevi u ovom razmaku da budu predstavljeni. Bit za znak može biti 0 ili
1, eksponent sadrži rezervisanu bit formu 00000000, što predstavlja –126, za
jednostruku preciznost (-1022 za dvostruku preciznost), a osnovica sadrži odgovarajući
bit fomu za vrijednost broja. Prema tome nema skrivene jedinice u ovom formatu.
Primjećujemo da denormalizovani format nije ne-normalizovani format. Ključna razlika je

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

(f) + 0 1111 1111 000 0000 0000 0000 0000 0000


(g) +2−128 0 0000 0000 010 0000 0000 0000 0000 0000
(h) +NaN 0 1111 1111 011 0111 0000 0000 0000 0000
(i) +2−128 0 011 0111 1111 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000

Primjeri od a do h su u formatu jednostruke preciznosti dok je primjer i u formatu


dvostruke preciznosti. Primjer a prikazuje uobičajen broj jednostruke preciznosti.
Primjetite da je osnovica 1.101, ali da je samo 101 eksplicitno prikazan. Primjer b koristi
najmanji eksponent u jednostrukoj preciznosti (-126), a primjer c koristi najveći
eksponent jednostruke preciznosti (127).

Primjeri d i e prikazuju dvije predstave za nulu. Primjer f prikazuje predstavu za


+beskonačno. Također postoji bit-forma za – beskonačno. Primjer g prikazuje
denormalizovan broj. Primjetite da je broj 2-128 najmani broj koji se može prikazati kao
eksponent ipak –126. Eksponent za brojeve jednostruke preciznosti je uvijek –126, što je
predstavljeno sa bit-formom 00000000, i osnovicom različitom od 0.

Osnovica predstavlja vrijednost broja, a ne signifikanta. Vrijednost iza zareza


predstavlja vrijednost broja, a ne sva osnovica, pa prema tome imamo +2-128 = -01 x 2-
126
što je predstavljeno sa bit- formom na slici pod g.

Primjer h prikazuje NaN jednostruke vrijednosti. NaN može biti pozitivan i


negativan. Napokon primjer i ponovo prikazuje 2-128, ali sada koristeći dvostruku
preciznost. Predstavljanje je za uobičajeni broj dvostruke preciznosti tako da ovdje nema
specijalnih razmatranja.

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/

You might also like