300 likes | 555 Views
1 2 . čas Pokretni zarez. IEEE754-2008 ( dekadna osnova ). Standard IEEE 754-2008. Standard IEEE 754-2008 usvojen je avgusta 2008. godine. Zamenjuje prethodne verzije standarda IEEE 754 i IEEE 854 Standardnom se uvodi mogućnost zapisa brojeva pomoću dekadne osnove
E N D
12. čas Pokretni zarez IEEE754-2008 (dekadna osnova)
Standard IEEE 754-2008 • Standard IEEE 754-2008 usvojen je avgusta 2008. godine. • Zamenjuje prethodne verzije standarda IEEE 754 i IEEE 854 • Standardnom se uvodi mogućnost zapisa brojeva pomoću dekadne osnove • Dopune prethodnog standarda vezano za binarnu osnovu
Predstavljanje brojeva u dekadnoj osnovi • Softverski – brzina rada nije zadovoljavajuća jer se softver stara o zapisu brojeva i operacijama nad njima. • Hardverski • BCD zapis (fiksni zarez – nedostaci su relativno složeno izvođenje operacija, znatno sporije od binarne osnove) • Pokretni zarez (IEEE 754-2008) – trenutno samo neki od procesora hardverski podržavaju ovakav zapis (npr IBM z serija)
Zapis u registrima računara • Realne brojeve u dekadnoj osnovi u računaru treba zapisati u registre iste dužine kao i pri zapisu realnih brojeva u pokretnom zarezu pomoću binarne osnove. • Zapis treba da bude u obliku znak, frakcija i eksponent. • Zapis treba da bude moguć u jednostrukoj, dvostrukoj i četvorostrukoj tačnosti. • Zapis treba da omogući precizno zapisivanje dekadnih cifara bez konverzije
Zapis u registrima računara • Preciznost zapisa treba da bude uporediva sa preciznošću zapisa dekadnih brojeva pomoću binarne osnove. • Potrebno je primeniti kodiranje koje omogućuje zapisivanje svih potrebnih podataka u dovoljnoj tačnosti (u slučaju BCD kodiranja javlja se problem) • Treba predvideti zapis specijalnih vrednosti • Definisati pravila za izvođenje operacija
Packed Decimal Encoding (PDP) • Mehanizam predstavljanja 3 dekadne cifre pomoću 10 bitova. • Dekadno kodiranje, Densely Packed Decimal (DPD) – IBM • Binarno kodiranje, Binary Integer Decimal (BID) – INTEL
Densely Packed Decimal kodiranje • Kodira 3 dekadne cifre u 10 bita • 20% efikasnije kodiranje od BCD zapisa • Deli cifre na male (0-7) i velike (8-9) na osnovu vrednosti prvog bita u BCD kodu • Male cifre zahtevaju tri bita za predstavljanje, a velike jedan bit kako bi se međusobno razlikovale
Densely Packed Decimal kodiranje • Kodiranje razmatra svaku od kombinacija tri cifre: • Sve tri cifre su male: potrebno je 10 bitova (3+3+3 za cifre, 1 bit da označi ovu kombinaciju) • Dve cifre su male: potrebno je 7 bitova za cifre (3+3+1); preostala 3 bita označavaju kombinaciju • Jedna cifra je mala: potrebno je 5 bitova za cifre (3+1+1); preostalih 5 bitova označavaju kombinaciju • Sve cifre su velike: potrebna su 3 bita za cifre (1+1+1); preostalih 7 (mada je potrebno samo 5) označavaju kombinaciju
Brojevi • Brojevi mogu biti: • Konačni • Specijalne vrednosti • Brojevi su zapisani pomoću: • Znaka broja (0 za pozitivne, 1 za negativne) • Frakcije (zapisuje se kao celobrojna vrednost veća ili jednaka nuli) • eksponenta • U zavisnosti od komponenti, jedna ista vrednost može biti zapisana na različite načine! • Iz tog razloga, njegova reprezentacija ne mora da bude normalizovana.
Klase brojeva • Postoje iste klase brojeva kao i kod binarne osnove: • Označena nula • Subnormalni brojevi (denormalizovani brojevi) • Normalni (normalizovani brojevi) • Beskonačno • NaN (tihi i signalni)
Napomene (DPD) • Kodiranje jedne ili dve dekadne cifre je uvek desno poravnato u grupi od 10 bitova, dok su ostali bitovi 0. Kodirane dekadne cifre se zato mogu zapisati u polju veće dužine dopunjavanjem nula sa leve strane, bez potrebe za ponovnim kodiranjem. • Svi brojevi u intervalu [0,79] se kodiraju desno poravnato na isti način kao u BCD (8421) kodu.
Šematski prikaz kodiranja • Cifre C1C2C3 zapisane u BCD zapisu (abcd)(efgh)(ijkm) postaju (pqr)(stu)(v)(wxy) gde je:
Šematski prikaz dekodiranja • Cifre (pqr)(stu)(v)(wxy) postaju (abcd)(efgh)(ijkm) koje predstavljaju BCD zapis cifara C1C2C3
Vrednost broja • Vrednost broja predstavljenog u pokretnom zarezu pomoću dekadne osnove se određuje na sledeći način: • Ako su 5 bitova kombinacije u intervalu 00000-11101, u pitanju je konačan broj. • Ako su 5 bitova kombinacije jednaki 11110, vrednost broja je ±∞, u zavisnosti od znaka broja. • Ako su 5 bitova kombinacije jednaki 11111, vrednost broja je NaN (SNaN ako je bit najveće težine polja NE jednak 1, inače QNaN).
Dekadno kodiranje • Dekadne cifre u nastavku frakcije kodirane su DPD algoritmom. • Dve cifre najveće težine eksponenta i cifra najveće težine frakcije određuju se na osnovu 5 bitova kombinacije.
Uporedni prikaz zapisa nekih brojeva pomoću binarne, heksadekadne i dekadne osnove
Uporedni prikaz zapisa nekih brojeva pomoću binarne, heksadekadne i dekadne osnove
Primer 1 • Zapisati broj +123.4 u pokretnom zarezu pomoćcu dekadne osnove u jednostrukoj tačnosti, koristeći dekadno (DPD) kodiranje. • Rešenje: Broj koga treba zapisati predstavimo u obliku +1234*10−1. Vrednosti cifara u zapisu broja su: • 1. Broj koga treba zapisati je pozitivan - znak broja je 0. • 2. Frakcija broja je 1234. Dopunimo frakciju do maksimalnog broja cifara za jednostruku tačnost (7). Dobijeni broj koga treba da kodiramo je 0001234. Kodiraju se 6 cifara manje težine u dva dekleta, dok se cifra najveće težine kodira u polju za kombinaciju. Primenom DPD kodiranja dobija se (npr. na osnovu tabele shematskog prikaza kodiranja): • 0 0 1 2 3 4 Dekadni zapis • abcd efgh ijkm abcd efgh ijkm • 0000 0000 0001 0010 0011 0100 BCD zapis • 000 000 0 001 010 011 0 100 DPD dekleti • pqr stu v wxy pqr stu v wxy
Primer 1 • 3. Eksponent je jednak -1 i uz uvećanje 101 dobija se 100. Prevod dobijene vrednosti u binarni brojni sistem je 01100100. Odavde je nastavak eksponenta 100100, dok se prva dva bita 01 kodiraju u kombinaciji. • 4. Kombinacija treba da kodira cifru 0 (cifra frakcije) i dva bita najveće težine eksponenta (binarne cifre 01). Kako je 0 cifra frakcije, na osnovu pravila za predstavljanje sledi da je kombinacija = 01000. • Odavde, zapis broja +123.4 je 0 01000 100100 0000 0000 0101 0011 0100
Primer 2 • Primer 2: Zapisati broj -243/13 u pokretnom zarezu pomoću dekadne osnove u jednostrukoj • tačnosti, koristeći dekadno (DPD) kodiranje. • Rešenje: Dobijeni količnik zapišimo pomoću 7 dekadnih cifara u obliku znak, farkcija i eksponent. • Kako je 243/13=18.69230769... pretpostavimo da je odabrano takvo pravilo zaokruživanja da jerezultat zaokružen na 7 cifara jednak 18,69230 (primedba: i za zapis pomoću dekadne osnove važeista pravila zaokruživanja!). • Broj koga treba zapisati predstavimo u obliku -1869230*10−5. Vrednosti cifara u zapisu broja su: • 1. Broj koga treba zapisati je negativan → znak broja je 1. • 2. Frakcija broja je 1869230. Kodiraju se 6 cifara manje težine u dva dekleta, dok se cifranajveće težine kodira u polju za kombinaciju. Primenom DPD kodiranja dobija se (npr. naosnovu tabele shematskog prikaza kodiranja):
Primer 2 • 8 69 23 0 Dekadni zapis • abcd efgh ijkmabcd efgh ijkm • 1000 0110 1001 0010 0011 0000 BCD zapis • 110 010 1 111 010 011 0 000 DPD dekleti • pqr stu v wxy pqr stu v wxy • 3. Eksponent je jednak -5, i uz uvećanje 101 dobija se 96. Prevod dobijene vrednosti u binarnibrojni sistem je 01100000. Odavde je nastavak eksponenta 100000, dok se prva dva bita 01kodiraju u kombinaciji. • 4. Kombinacija treba da kodira cifru 1 (cifra frakcije) i dva bita najveće težine eksponenta(binarne cifre 01). Kako je 1 cifra frakcije, na osnovu pravila za predstavljanje sledi da jekombinacija = 01001. • Odavde, zapis broja -243/13 je 1 01001 100000 1100 1011 1101 0011 0000