Brojevi u pokretnom zarezu Uvod u organizaciju raunara
Brojevi u pokretnom zarezu Uvod u organizaciju računara 1
Mane zapisa u fiksnom zarezu Zapisuju se samo brojevi sličnog reda veličine Zapisi (5, 1) i (5, 4) Šta ako je potrebno zapisivati brojeve drastično različitih redova veličine? Odgovor je zapis u pokretnom zarezu Složenije zapisivanje i operacije Uvod u organizaciju računara 2
Zapisivanje razlomljenih brojeva Ceo i razlomljeni deo broja se odvojeno prebacuju u traženu osnovu. Ceo deo se zapisuje prema poznatim pravilima. Razlomljeni deo se zapisuje tako što se u svakom koraku množi osnovom u kojoj želimo da zapišemo broj. Posle svakog množenja celobrojni deo predstavlja cifru u zapisu, a razlomljeni deo se ponovo množi osnovom sve dok je različit od nule. Uvod u organizaciju računara 3
Primer Zapisati broj 0. 84375 u osnovi 4 0 1 2 3 0. 84375 0. 5 0 0 1 2 3 =(0. 312)4 Uvod u organizaciju računara 4
Zapis sa pokretnim zarezom Broj • • • se predstavlja kao ± m * be m je “značajni deo”, “mantisa”, “frakcija” b je “osnova zapisa” e je “eksponent” broj cifara značajnog dela je “preciznost” i označavaćemo ga sa p Uvod u organizaciju računara 5
Primer (23. 71) 10 = (17. B 5 C 2)16 = (0. 17 B 5 C 2)16 * 162 greška < 16 -4 Uvod u organizaciju računara 6
Greške pri zaokruživanju Zapis realnih brojeva u računaru je aproksimacija skupa realnih brojeva u određenom intervalu. Pri aproksimiranju na određeni broj decimala može doći do zaokruživanja, a samim tim i greške. Greška pri zaokruživanju se meri na dva načina: – Apsolutna (u terminima ulp-a) – Relativna (u terminima mašinskog ε) Uvod u organizaciju računara 7
ULP (Unit in the last place) je najmanja vrednost za koju se mogu razlikovati dva broja u pokretnom zarezu zapisana u određenoj osnovi i sa određenom preciznošću. Ako je broj z predstavljen u računaru kao d 0, d-1…d-(p-1) * be, onda je greška |d 0, d-1…d-(p-1) - (z/be)| * bp-1 ulp-a Uvod u organizaciju računara 8
Primer b=10, p=4. Broj z=0. 034869 je predstavljen kao 3. 487 *10 -2. Greška je: |3. 487 – (0. 034869/10 -2)| * 103 = |3. 487 – 3. 4869| * 103 = 0. 0001 * 103 = 0. 1 ulp-a Uvod u organizaciju računara 9
Relativna greška je apsolutna vrednost razlike realnog broja i njegove reprezentacije podeljena sa apsolutnom vrednošću realnog broja. Uvek se zapisuje u terminima mašinskog ε=b 1 -p/2. Uvod u organizaciju računara 10
Primer b=10, p=4, ε=0. 0005. Broj z=0. 034869 je predstavljen kao 3. 487 *10 -2. Relativna greška je: |0. 034869 – 0. 03487| / |0. 034869| = 0. 000028678 ≈ 0. 0574ε Uvod u organizaciju računara 11
Razlozi za standardizaciju Primenjivani su različiti dogovori (osnova, raspodela bitova između delova zapisa. . . ) Različiti algoritmi zaokruživanja, izvođenja aritmetičkih operacija, itd. Slaba prenosivost numeričkih programa Odgovor: IEEE 754 (1985; 2008) Uvod u organizaciju računara 12
IEEE 754 Standard IEEE 754 propisuje zapise: – 32 bita – jednostruka tačnost • 1 bit za znak • 8 bita za eksponent u zapisu sa uvećanjem 127 (zašto ne potpuni komplement? ) • 23 značajne binarne cifre – 64 bita – dvostruka tačnost • 1 bit za znak • 11 bita za eksponent (uvećan za 1023) • 52 značajne binarne cifre – pri tome • normalizovani zapisi, podrazumeva se najviša cifra 1 • nula se zapisuje sa svim bitovima 0 • najviši eksponent označava posebne Na. N vrednosti Uvod u organizaciju računara 13
Normalizovani brojevi u jednostrukoj tačnosti imaju eksponent izmedju -126 (00000001) i +127 (11111110). Frakcija ima oblik 1, d-1…d-(p-1), pri čemu se prva jedinica ne zapisuje. Zapis frakcije može da ima bilo koju vrednost. Uvod u organizaciju računara 14
Primer Zapisati broj 13, 25 prema standardu IEEE 754 u jednostrukoj tačnosti (13, 25)10 = (1101, 01)2 = (1, 10101)2 * 23 Znak: 0 (+) Eksponent sa uvećanjem 127: 130 = (10000010)2 Značajni deo sa implicitnom jedinicom: 10101 - (1, 10101)2 Zapis: 0 10000010 10101000000000 Uvod u organizaciju računara 15
Primer Pročitati sledeći zapis: 1 10000110 01001000000000 Znak: Eksponent: 134 -127=7 Frakcija: (1, 01001)2 = (1. 28125)10 Rešenje: (-1, 01001)2 * 27 = (-10100100)2 = (-164)10 Uvod u organizaciju računara 16
Na. N (Not a number) su specijalne vrednosti koje nisu brojevi i označavaju neke izuzetne situacije prilikom izračunavanja. Npr. 0/0 ili √-1 Eksponent Na. N vrednosti je maksimalan. U slučaju jednostruke tačnosti to je 128 (1111). Frakcija mora biti različita od nule. Postoje takozvani Signalni Na. N (SNa. N) i Tihi Na. N (QNa. N). Uvod u organizaciju računara 17
QNa. N Tihi Na. N predstavlja pojavu nedozvoljene operacije u programu. Propagira se kroz izračunavanje. Greška ne mora biti prijavljena. Zapis eksponenta u jednostrukoj tačnosti je 1111. Prvi bit frakcije je 1. Ostali bitovi frakcije su proizvoljni. Uvod u organizaciju računara 18
SNa. N Signalni Na. N signalizira izuzetno stanje kod racunskih operacija. Može se koristiti za debagovanje npr. kako bi se uočio rad sa neinicijalizovanim promenljivim. Zapis eksponenta u jednostrukoj tačnosti je 1111. Prvi bit frakcije je 0. Ostatak frakcije je različit od 0. Uvod u organizaciju računara 19
Beskonačno IEEE 754 standard omogućava predstavljanje beskonačnih vrednosti. Znak određuje da li se radi o +∞ ili -∞ Eksponent u jednostrukoj tačnosti ima vrednost 128 (1111). Frakcija je 0. Uvod u organizaciju računara 20
Označena nula Nula se u jednostrukoj tačnosti predstavlja eksponentom -127 (0000) i frakcijom 0. Pošto znak može biti + ili – (0 ili 1) onda postoje i dve nule +0 i -0. Prema standardu važi +0 = -0. log-0 = Na. N, a log+0 = -∞ Uvod u organizaciju računara 21
Denormalizovani brojevi Da bi se povećala gustina realnih brojeva oko nule i izbegla pojava potkoračenja uvode se takozvani denormalizovani brojevi. U jednostrukoj tačnosti važi: – Zapis eksponenta u jednostrukoj tačnosti je 0000 – Frakcija je različita od nule, a vodeća jedinica se ne podrazumeva. Ako je frakcija f, onda je predstavljeni broj 0, f * 2 -126. Uvod u organizaciju računara 22
Primer Neka je broj zapisan u denormalizovanom obliku kao: 0 0000 00010000000000 Radi se o broju +(0, 0001)2 * 2 -126 odnosno 2 -130 Uvod u organizaciju računara 23
Svojstva IEEE 754 Izvesti raspon za normalizovane i za denormalizovane brojeve Lako poređenje Varirajuća gustina Uvod u organizaciju računara 24
Gustina Jednak broj ekvidistantnih vrednosti između svaka dva stepena dvojke Problematično predstavljanje celih brojeva Ako su int i fload 32 -bitni, a double 64 -bitan, konverzija int -> float -> int može dovesti do gubitka podataka, ali int -> double -> int ne može. Uvod u organizaciju računara 25
Gustina (pojednostavljena ilustracija) Uvod u organizaciju računara 26
Aritmetičke operacije Zaokruživanje Sabiranje Oduzimanje Uvod u organizaciju računara 27
Zaokruživanje se vrši kada rezultat operacije ne može biti tačno zapisan. Moguće su sledeće vrste zaokruživanja: – Zaokruživanje na najbližu vrednost – Zaokruživanje prema +∞ – Zaokruživanje prema -∞ – Zaokruživanje prema nuli. Uvod u organizaciju računara 28
Zaokruživanje na najbližu vrendost Pri ovoj vrsti zaokruživanja broj se zaokružuje na najbližu predstavljivu vrednost, uz zaokruživanje na parnu cifru kada je broj na sredini intervala između dve predstavljive vrednosti. Ovo je predefinisani način zaokruživanja. Uvod u organizaciju računara 29
Zaokruživanje prema +∞ Realizuje se u dva koraka: – Ako je broj pozitivan i postoji bar jedna jedinica na nekoj poziciji desno od poslednje pozicije koja se čuva u zpisu, na poslednju poziciju se dodaje jedinica. – Bez obzira na znak odbacuju se bitovi desno od poslednje pozicije koja se čuva u zapisu. Uvod u organizaciju računara 30
Zaokruživanje prema -∞ Realizuje se u dva koraka: – Ako je broj negativan i postoji bar jedna jedinica na nekoj poziciji desno od poslednje pozicije koja se čuva u zpisu, na poslednju poziciju se dodaje jedinica. – Bez obzira na znak odbacuju se bitovi desno od poslednje pozicije koja se čuva u zapisu. Uvod u organizaciju računara 31
Zaokruživanje ka nuli Odbacuju se svi bitovi desno od poslednje pozicije koja se čuva u zapisu. Uvod u organizaciju računara 32
∞ u aritmetičkim operacijama Sa izuzetkom operacija koje proizvode QNa. N sve operacije koje uključuju ∞ takodje imaju ∞ kao rezultat. Međutim i dalje treba paziti na znak. Uvod u organizaciju računara 33
QNa. N u aritmetičkim operacijama QNa. N se propagira kroz aritmetičke operacije. Može se pojaviti u sledećim slučajevima: – – – (±∞) - (±∞) 0*∞ 0 / 0, ∞ / ∞ x % 0, ∞ % x √x, x<0 Bilo koja operacija čiji je argument SNa. N. Uvod u organizaciju računara 34
Sabiranje i oduzimanje Prilikom sabiranja i oduzimanja operandi se svode na jednake eksponente. Manji eksponent se povećava, a cifre frakcije koja mu odgovara se pomeraju udesno za onoliko mesta za koliko je povećan eksponent. Ako pri pomeranju frakcija postane 0 rezultat je vrendost drugog operanda. Uvod u organizaciju računara 35
Sabiranje i oduzimanje frakcija se vrše prema pravilima koja važe za cele brojeve u zapisu znak i apsolutna vrednost. Eksponent rezultata je eksponent operanada posle izjednačavanja. Ako dolazi do prekoračenja rezultat se pomera za jedno mesto udesno uz povećanje vrednosti eksponenta za jedan. Ako povećanje vrednosti eksponenta dovede do prekoračenja rezultat je ∞, ali uzevši u obzir i znak. Uvod u organizaciju računara 36
Sabiranje i oduzimanje Ako rezultat operacije normalizovan, pokušava se normalizacija. Cifre frakcije se pomeraju ulevo uz smanjivanje eksponenta. Može se dobiti i denormalizovan rezultat. Na kraju se vrši zaokruživanje, ako je potrebno. Uvod u organizaciju računara 37
Primer 5. 375+3. 75 0 10000001 01011000000000 (5. 375) 0 10000000 1110000000000 (3. 75) 1, 01011 +0, 11110 (posle izjedačavanja eksponenata) 10, 01001 (normalizacija) 0 1000001001000000000 =9. 125 Uvod u organizaciju računara 38
Primer 5. 375 -2. 5 0 10000001 01011000000000 (5. 375) 0 10000000 0100000000000 (2. 5) 1, 01011 -0, 10100 (posle izjedačavanja eksponenata) 0, 10111 (normalizacija) 0 10000000 01110000000000 =2. 875 Uvod u organizaciju računara 39
- Slides: 39