06.01.2015 Views

Pokretni zarez - Ncd.matf.bg.ac.rs

Pokretni zarez - Ncd.matf.bg.ac.rs

Pokretni zarez - Ncd.matf.bg.ac.rs

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Uvod u organiz<strong>ac</strong>iju računara<br />

vežbe, školska 2010/11<br />

Biljana Stojanović<br />

Matematički fakultet, Univerzitet u Beogradu


<strong>Pokretni</strong> <strong>zarez</strong> – binarna i<br />

heksadekadna osnova<br />

čas 10


<strong>Pokretni</strong> <strong>zarez</strong><br />

Predstavljanjem brojeva u pokretnom <strong>zarez</strong>u omogućuje<br />

se zapisivanje vrlo velikih ili jako malih brojeva pomoću<br />

malog broja cifara<br />

b-osnova (uvek je parna), p-preciznost<br />

U opštem slučaju broj u pokretnom <strong>zarez</strong>u se predstavlja<br />

u obliku<br />

<br />

d 0 ,d -1 d -2 ...d -(p-1) b e


Zapis brojeva<br />

d 0 ,d -1 d -2 ...d -(p-1) je značajni deo i zapisuje se u brojčanom<br />

sistemu sa osnovom b (0≤d i < b)<br />

Zapis broja za koji važi da je d 0 ≠0 naziva se normalizovan.<br />

Za predstavljanje realnih brojeva u računarima koriste se<br />

vrednosti b=2 ili b=16.


Zapis brojeva<br />

U oba slučaja eksponent se kodira u binarnom brojčanom<br />

sistemu, dok se vrednost b ne čuva eksplicitno jer je ista<br />

za sve brojeve koji se zapisuju.<br />

Jednostruka preciznost – za zapis brojeva se koriste<br />

registri dužine 32 bita<br />

Dvostruka preciznost – za zapis brojeva se koriste registri<br />

dužine 64 bita


Zapis brojeva<br />

Zapis realnog broja (u registru) sastoji se od:<br />

znaka broja<br />

frakcije<br />

eksponenta


Zapis sa binarnom osnovom<br />

PDP-11 i VAX-11 računari firme DEC<br />

Zapis u 32-bitnom registru:<br />

31 30 23 22 0<br />

Uvećani<br />

eksponent<br />

Frakcija<br />

Znak<br />

značajni deo broja se zapisuje u obliku znak i apsolutna<br />

vrednost, pri čemu je znak značajnog dela istovremeno i<br />

znak broja (0-pozitivni, 1-negativni) i upisuje se u bit<br />

najveće težine.


Zapis sa binarnom osnovom<br />

apsolutna vrednost se prevodi u binarni sistem i zapisuje u<br />

normalizovanom obliku uz modifik<strong>ac</strong>iju:<br />

umesto oblika: d 0 ,d -1 d -2 ...d -(p-1) , d 0 ≠0<br />

koristi se oblik: 0, d 0 d -1 d -2 ...d -(p-1)<br />

uz povećanje vrednosti eksponenta za 1


Frakcija<br />

Niz cifara u razlomljenom delu broja naziva se frakcija.<br />

U zapisu sa binarnom osnovom frakcija d 0 d -1 d -2 ...d -(p-1)<br />

ima 24 bita, ali se u računaru predstavlja sa 23 binarne<br />

pozicije 0-22 jer je uvek d 0 =1, tako da je njegovo<br />

eksplicitno čuvanje nepotrebno


Eksponent<br />

Eksponent se zapisuje u 8 bita na pozicijama 23-30, uz<br />

uvećanje vrednosti za 128.<br />

Vrednosti eksponenta koje mogu da se zapišu pripadaju<br />

intervalu [-128,+127], odnosno [0,255] posle uvećanja za<br />

128


Uvećanje 128<br />

Bez uvećanja ne bi mogla da se pravi razlika u zapisu<br />

brojeva 0 i 0.1 (0=0x2 0 0.1=0.1x2 0 ) zbog implicitnog<br />

kodiranja prvog bita jedinicom.<br />

Sa druge strane, poželjno je da se ne pravi razlika između<br />

celobrojne nule i nule u pokretnom <strong>zarez</strong>u.


Nula<br />

Nula se zapisuje kao sve nule u registru, odnosno kao<br />

pozitivan broj sa vrednošću eksponenta -128, kod koga su<br />

sve binarne cifre frakcije 0.<br />

(0.1) 2 *2 -128 =1*2 -1 *2 -128 =2 -129


Primeri<br />

Znak Eksponent Frakcija<br />

+15= 0 10000100 11100...0<br />

-15 = 1 10000100 11100...0<br />

+1/64= 0 01111011 00000...0<br />

0 = 0 00000000 00000...0<br />

+1x2 -128 = 0 00000001 00000...0<br />

(1-2 -24 )x2 +127 0 11111111 11111...1


Granične vrednosti<br />

za vrednost eksponenta e važi:<br />

-2 7 ≤ e ≤ 2 7 -1<br />

za vrednost frakcije s važi:<br />

2 -1 ≤ | s | ≤ 1-2 -24<br />

2 -1 *2 -128 ≤ | x | ≤ (1-2 -24 )*2 +127<br />

a kako kod za 2 -1 *2 -128 predstavlja 0<br />

2 -128 ≤ | x | ≤ (1-2 -24 )*2 +127<br />

tj. 2.9*10 -39


Prekoračenje i potkoračenje<br />

Pokušaj zapisa broja x:<br />

|x| > (1-2 -24 )x2 +127<br />

dovodi do pozitivnog ili negativnog prekoračenja u<br />

zavisnosti od znaka broja.<br />

Potkoračenje se javlja pri pokušaju zapisa broja koji<br />

je po apsolutnoj vrednosti manji od donje granice<br />

intervala. U tom slučaju, računar generiše inform<strong>ac</strong>iju<br />

da je došlo do potkoračenja, zapiše takav broj kao 0 i<br />

nastavi dalje sa radom. I potkoračenje može biti<br />

pozitivno i negativno.


Dvostruka tačnost<br />

Dva uzastopna 32-bitna registra<br />

Prvi registar – kao kod jednostruke tačnosti<br />

Ceo drugi registar – za dodatne cifre frakcije<br />

Omogućuje povećanje preciznosti, tj. veći broj cifara<br />

frakcije, ali ne i povećanje vrednosti eksponenta<br />

2 -128 ≤ | x | ≤ (1-2 -56 )x2 +127


Dvostruka tačnost<br />

63 62 55 54 32<br />

Uvećani<br />

eksponent<br />

Frakcija<br />

Znak<br />

31 0<br />

Produžetak frakcije


Zapis sa heksadekadnom osnovom<br />

S/360, S/370 firme IBM<br />

Značajni deo: znak i apsolutna vrednost<br />

Znak značajnog dela je istovremeno i znak broja (kao i<br />

kod binarne osnove).<br />

Frakcija značajnog dela je takođe normalizovana; zapisuje<br />

se sa 6 heksadekadnih cifara u 24 bita.


Eksponent<br />

Eksponent se zapisuje u 7 bita na pozicijama 24-30.<br />

Vrednosti eksponenta se zapisuju uz uvećanje za 64.<br />

Vrednosti eksponenta koje mogu da se zapišu pripadaju<br />

intervalu [-64,+63], odnosno [0,+127] posle uvećanja.


Uvećanje, Nula<br />

Osnova b=16 se ne zapisuje u registru.<br />

Kao i u slučaju zapisa sa binarnom osnovom, eksponent se<br />

uvećava zbog zapisa nule.<br />

Pravilo je da se nula zapisuje kao sve nule u registru.


Format zapisa – jednostruka tačnost<br />

31 30 24 23 0<br />

Znak<br />

Uvećani<br />

eksponent<br />

Frakcija


Primeri (32-bitni registar)<br />

Znak Eksponent Frakcija<br />

+15= 0 1000001 11110...0<br />

-15 = 1 1000001 11110...0<br />

+1/64 = 0 0111111 01000...0<br />

0 = 0 0000000 00000...0<br />

+1x16 -65 0 0000000 00010...0<br />

(1-16 -6 )x16 +63 0 1111111 11111...1


Granične vrednosti<br />

32-bitni registar:<br />

za veličinu eksponenta važi:<br />

-2 6 ≤ e ≤ 2 6 -1<br />

za vrednost s kojom se predstavlja frakcija važi:<br />

16 -1 ≤ | s | ≤ 1-16 -6<br />

16 -1 *16 -64 ≤ | x | ≤ (1-16 -6 )*16 +63<br />

tj. 5.4*10 -79


Prekoračenje i potkoračenje<br />

pokušaj zapisa broja x<br />

| x | > (1-16 -6 )*16 +63<br />

dovodi do pozitivnog ili negativnog prekoračenja, u<br />

zavisnosti od znaka broja<br />

pokušaj zapisa broja | x | < 16 -65 dovodi do pozitivnog ili<br />

negativnog potkoračenja


Dvostruka tačnost<br />

Dva uzastopna 32-bitna registra<br />

Prvi registar – kao kod jednostruke tačnosti<br />

Ceo drugi registar – dodatne cifre frakcije broja<br />

Interval:<br />

16 -65 ≤ | x | ≤ (1-16 -14 )*16 +63


Napomene<br />

Bez obzira na način zapisa realnih brojeva, za izabranu<br />

tačnost ( sa binarnom ili heksadekadnom osnovom ) broj<br />

različitih zapisa realnih brojeva je isti, ali je gustina na<br />

pojedinim delovima brojčane ose različita.<br />

Ukoliko se poveća interval za eksponent, smanjuje se broj<br />

cifara frakcije koje je moguće zapisati i obratno.


Napomene<br />

Dodatno, realnih brojeva koji mogu da se zapišu u<br />

jednostrukoj tačnosti ima isto koliko i celih (2 32 ) jer toliko<br />

ima različitih kombin<strong>ac</strong>ija bitova u registru dužine 32 bita.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!