Pokretni zarez - Ncd.matf.bg.ac.rs
Pokretni zarez - Ncd.matf.bg.ac.rs
Pokretni zarez - Ncd.matf.bg.ac.rs
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.