17
3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke funkcije se mogu izraziti preko četiri osnovne aritmetičke operacije: sabiranje, oduzimanje, množenje i deljenje. Ove operacije se mogu izvršavati u tri načina rada kojima odgovaraju tri načina predstavljanja brojeva: fiksni zarez (fixed point), pokretni zarez (floating point) i binarno kodirani dekadni brojevi (BCD - Binary Coded Decimals). Aritmetika u fisknom zarezu se koristi kod problema kod kojih se podaci predstavljaju sa fiksiranom pozicijom tačke osnove. Operacije u fiksnom zarezu se mogu podeliti na celobrojne (kada je tačka osnove desno od broja) i operacije sa razlomcima (tačka osnove je levo od broja). Aritmetika u pokretnom zarezu se koristi za različita naučno-tehnička izračunavanja. Ove operacije se mogu podeliti na normalizovane i nenormalizovane. Decimalna aritmetika se koristi za aritmetičke operacije i operacije pomeranja nad decimalnim podacima. Ovde se svaka dekadna cifra predstavlja sa četiri binarne cifre. Pri tome, BCD brojevi mogu biti u pakovanom i nepakovanom formatu. U pakovanom formatu svaki bajt sadrži dve decimalne cifre, dok se kod nepakovanog formata po jedna cifra smešta u svakom bajtu i to u nižoj tetradi. 3.1. Predstavljanje celih brojeva u fiksnom zarezu Ako za predstavljanje pozitivnih celih brojeva u fiksnom zarezu koristimo n bitova, onda na taj način možemo predstaviti brojeve iz opsega [0,2 n -1]. Međutim, potrebno je predstavljati i negativne brojeve. Pri tome treba obezbediti sledeće: podjednaku distribuciju negativnih i pozitivnih brojeva, jednostavnu detekciju znaka, jedinstven prikaz nule, i jednostavnu implementaciju aritmetičkih operacija. Obično se za kodiranje znaka broja koristi bit najveće težine. Ako se broj A u sistemu sa brojnom osnovom r predstavlja kao A = (a n-1 a n-2 ...a 1 a 0 ) r , (3.1) tada cifra znaka a n-1 ima sledeću vrednost: a A r A n= < 1 0 0 1 , | | , | | 0 (3.2) Kod binarnog brojnog sistema (r=2) to znači a A A n= < 1 0 0 1 , | | , | | 0 . (3.3) Ostale cifre predstavljaju ili pravu vrednost broja ili njen komplement. Postoje tri načina za predstavljanje celih brojeva: označena vrednost broja ili znak-moduo, nepotpuni komplement i potpuni komplement. 3.1.1. Prezentacija znak-moduo Kod ove prezentacije se pozitivni i negativni brojevi razlikuju samo u bitu znaka (kod binarnog brojnog sistema 0 za pozitivne i 1 za negativne brojeve). Međutim, ovde se javlja problem zbog postojanja dva ravnopravna načina za predstavljanje broja nula. Praktično je moguće nulu predstaviti kao +0 i kao -0. Takođe se javlja problem i kod sabiranja brojeva različitog znaka, jer se najpre mora izvršiti poređenje apsolutnih vrednosti sabiraka da bi se odredio znak rezultata.

Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

Embed Size (px)

Citation preview

Page 1: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

3. PREDSTAVLJANJE BROJEVA U RAČUNARU

Sve matematičke funkcije se mogu izraziti preko četiri osnovne aritmetičke operacije: sabiranje, oduzimanje, množenje i deljenje. Ove operacije se mogu izvršavati u tri načina rada kojima odgovaraju tri načina predstavljanja brojeva: fiksni zarez (fixed point), pokretni zarez (floating point) i binarno kodirani dekadni brojevi (BCD - Binary Coded Decimals). Aritmetika u fisknom zarezu se koristi kod problema kod kojih se podaci predstavljaju sa fiksiranom pozicijom tačke osnove. Operacije u fiksnom zarezu se mogu podeliti na celobrojne (kada je tačka osnove desno od broja) i operacije sa razlomcima (tačka osnove je levo od broja). Aritmetika u pokretnom zarezu se koristi za različita naučno-tehnička izračunavanja. Ove operacije se mogu podeliti na normalizovane i nenormalizovane. Decimalna aritmetika se koristi za aritmetičke operacije i operacije pomeranja nad decimalnim podacima. Ovde se svaka dekadna cifra predstavlja sa četiri binarne cifre. Pri tome, BCD brojevi mogu biti u pakovanom i nepakovanom formatu. U pakovanom formatu svaki bajt sadrži dve decimalne cifre, dok se kod nepakovanog formata po jedna cifra smešta u svakom bajtu i to u nižoj tetradi.

3.1. Predstavljanje celih brojeva u fiksnom zarezu

Ako za predstavljanje pozitivnih celih brojeva u fiksnom zarezu koristimo n bitova, onda na taj način možemo predstaviti brojeve iz opsega [0,2n-1]. Međutim, potrebno je predstavljati i negativne brojeve. Pri tome treba obezbediti sledeće:

• podjednaku distribuciju negativnih i pozitivnih brojeva, • jednostavnu detekciju znaka, • jedinstven prikaz nule, i • jednostavnu implementaciju aritmetičkih operacija.

Obično se za kodiranje znaka broja koristi bit najveće težine. Ako se broj A u sistemu sa brojnom osnovom r predstavlja kao

A = (an-1an-2...a1a0)r, (3.1)

tada cifra znaka an-1 ima sledeću vrednost:

aA

r An− =≥

− <⎧⎨⎩1

0 01, | |, | | 0 (3.2)

Kod binarnog brojnog sistema (r=2) to znači

aAAn− =≥<

⎧⎨⎩1

0 01

, | |, | | 0 . (3.3)

Ostale cifre predstavljaju ili pravu vrednost broja ili njen komplement. Postoje tri načina za predstavljanje celih brojeva: označena vrednost broja ili znak-moduo, nepotpuni komplement i potpuni komplement.

3.1.1. Prezentacija znak-moduo Kod ove prezentacije se pozitivni i negativni brojevi razlikuju samo u bitu znaka (kod binarnog brojnog sistema 0 za pozitivne i 1 za negativne brojeve). Međutim, ovde se javlja problem zbog postojanja dva ravnopravna načina za predstavljanje broja nula. Praktično je moguće nulu predstaviti kao +0 i kao -0. Takođe se javlja problem i kod sabiranja brojeva različitog znaka, jer se najpre mora izvršiti poređenje apsolutnih vrednosti sabiraka da bi se odredio znak rezultata.

Page 2: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

RAČUNARSKI SISTEMI: Principi digitalnih sistema 18

3.1.2. Nepotpuni komplement Nepotpuni komplement se još naziva i komplement najveće cifre pa se kod binarnog brojnog sistema još naziva i jedinični komplement. Nenegativni celi brojevi (u opsegu od 0 do 2n-1-1, ako je za predstavljanje upotrebljeno n bitova) se i dalje predstavljaju kao u binarnom pozicionom sistemu, tj.

A = 0an-2an-3...a1a0. (3.4) Negativni brojevi se komplementiraju do najveće cifre (tj. do jedinice kod binarnog brojnog sistema). Tako je negativni broj koji ima istu apsolutnu vrednost kao gornji broj A predstavljen u binarnom brojnom sistemu kao:

A a a a an n= − −1 2 3 1 0L , (3.5) ili, generalno,

A r a a a an n r= − − −[( ) ]1 2 3 1 0L , (3.6) gde je a ri i= − −( )1 a . Sabiranje brojeva u nepotpunom komplementu odvija se tako što se brojevi saberu, a eventualni prenos na mestu za znak odbaci iz međurezultata i sabere sa cifrom najmanje težine, i tako dobije rezultat koji je takođe u nepotpunom komplemetu.

3.1.3. Potpuni komplement Potpuni komplement se još naziva i komplement osnove, pa je u binarnom brojnom sistemu njegov naziv i dvojični komplement. Nenegativni brojevi se predstavljaju na isti način kao i ranije, dok se prezentacija negativnih brojeva dobija tako što se najpre dobije nepotpuni komplement a onda na mestu najmanje težine doda 1. Na ovaj način se sa n bitova mogu predstaviti brojevi u opsegu od -2n-1 do +2n-1-1. Pri tome imamo jedinstven prikaz nule, a i izvođenje aritmetičkih operacija je pojednostavljeno. Naime, brojevi u potpunom komplementu se sabiraju tako što se izvrši sabiranje a eventualni prenos na mestu za znak se odbaci i tako dobije rezultat u potpunom komplementu.

3.2. Obim reči

Važan aspekt digitalnih sistema je taj što oni mogu da manipulišu samo brojevima koji imaju unapred određen broj cifara n. Računari, na primer, imaju specificiran obim reči (word size), koji odgovara dužini (broju bitova) binarnih brojeva koji se obrađuju od strane (internih) instrukcija računara. Obim reči je obično stepen dvojke i nalazi se u opsegu od 8 bitova kod nekih mikroračunara do 64 ili više bitova kod superskalarnih procesora. 1 2 3 4 5 6 7 8

1 244 3440 0 0 0 1 0 0 1 .

a) ↑ pozicija binarne tačke vodeće nule

1 2 3 4 5 6 7 8

1 24 34prateće nule

0 1 1 0 1 0 0 1 . b)

↑ pozicija binarne tačke

Sl. 3.1. Dva 8-bitna broja: (a) celobrojna vrednost 20; (b) razlomljena vrednost 29/64.

Na slici 3.1. prikazana su dva primera binarnih brojeva čiji je obim reči osam. Prvi primer (slika 3.1a) osnačava celobrojnu vrednost 20 (tj. 5-bitnu sekvencu 101002). Da bi uklopili (smestili) ovaj broj u 8-bitni format, neophodno je proširiti ga na 8 bitova, a to se izvodi pridruživanjem (dopisivanjem) tri nule na njegovom levom kraju. Ove "vodeće nule" nemaju uticaj na numeričku vrednost reči i zbog toga se nazivaju neznačajnim (insignificant). Cifre čije odstranjivanje dovodi do promene vrednosti broja nazivaju se značajnim (significant). Prema tome, 8-bitna reč 00010100 predstavlja broj 20. Moguće je takođe koristiti reči sa unapred definisanim obimom reči za predstavlajnje razlomljenih vrednosti. Na slici 3.1b je prikazana 8-bitna prezentacija razlomljene vrednosti 29/64, čiji je binarni oblik 0.0111012. Postoji šest značajnih cifara, 011101, koje je moguće proširiti na osam bitova pridruživanjem dve neznačajne "prateće" nule, kao što je to prikazano na slici 3.1b. Zaključak je sledeći: 8-bitna reč koja odgovara vrednosti 29/64 se može predstaviti kao 01110100.

Page 3: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

3. Predstavljanje brojeva u računaru 19

3.3. Tačnost

Neka je dat broj A koji sadrži n+k značajnih cifara. Pretpostavimo sada da smo dobili zadatak da uklopimo broj A u reč obima n bitova kakvu podržava digitalni sistem. Jednostavno smo prinuđeni da odstranimo k cifara broja A. Rezultujući n-tocifreni broj A* razlikuje se od prave vrednosti A za određeni iznos E koji predstavlja numeričku grešku. Vrednost E zavisi od k, tj. od broja cifara koje smo odstranili, kao i od pozicije tačke brojne osnove. Ilustracije radi, da bi uklopili A = 1101011.11012 u 8-bitnu reč, treba odstraniti njegova tri kranje desna bita koji imaju najmanji značaj. Na ovaj način smo redukovali broj A na vrednost A* = 1101011.1. Ako definišemo tačnost pomoću broja značajnih cifara koje ta vrednost sadrži, tada gubitak od tri cifre u tačnosti znači da A* unosi grešku od 0.01012 u odnosu na A. I pored toga što greške ovakvog tipa mogu da izgledaju male, u toku dugog niza izračunavanja njihov efekat se može akumulirati tako da one kreiraju veće greške i uzrokuju ozbiljne posledice. Ovaj problem se može rešiti povećanjem obima reči ili korišćenjem nekoliko reči u cilju prezentacije jedinstvenog broja. Tačnost (ili kako se taj pojam u računarskoj tehnici često identifikuje sa pojmom preciznost) sa kojom se određeni broj predstavlja funkcija je i osnove brojnog sistema. Na primer, ternarni broj 102.213 se konvertuje u odgovarajući decimalni broj 11.777...10, što znači da postoji deo razlomljenog broja koji je neograničene dužine. Shodno prethodnom, koristeći osnovu 3, petocifren broj možemo predstaviti tačno, ali to ne možemo da uradimo kada ga predstavljamo kao decimalan broj nezavisno od njegove dužine. U opštem slučaju, za svaku osnovu r i obim reči n, postoji veliki broj brojeva koji se ne mogu predstaviti tačno pomoću n cifara. U metrologiji (nauka koja se bavi merenjem) se pravi jasna razlika između pojmova preciznost i tačnost. Preciznost (precision) se definiše kao broj cifara koje su za datu brojnu vrednost od značaja. Tako na primer, logaritamska tablica kod koje su tabelarne vrednosti date sa šest cifarskih mesta je preciznija od one kod koje su vrednosti date sa četiri mesta. Sa druge strane, tačnost (accuracy) je mera koja ukazuje na grešku u odnosu na pravu vrednost x, nezavisno od preciznosti, i kvantitativno se definiše kao

E = tačnost = ((greška u x)/(tačna vrednost))*100 Razlika između pojmova tačnosti i preciznosti slikovito je prikazana na slici 3.2 za slučaj kada strelac gađa u metu.

a) Precizan ali nije tačan.

b) Tačan ali nije precizan.

c) Precizan i tačan. d) N an.eprecizan i netač

Sl. 3.2. Forme pogodaka strelaca u metu koje ukazuju na razliku između preciznosti i tačnosti.

Na osnovu celokupne prethodne diskusije možemo da izvedemo sledeće zaključke: • Pojam preciznosti identifikovaćemo sa brojem cifara kojima se oređena vrednost predstavlja. Na primer, y=sinx

se može predstaviti sa 3, 4, 5, ..., n cifara. Što je broj cifara veći i preciznost je veća. • Pojam tačnosti identifikovaćemo sa bliskošću te vrednosti pravoj vrednosti. Ilustracije radi, ako algoritam za

izračunavanje sinx nije korektan, tada je dobijeni rezultat pogrešan, tj. nije tačan, ali u zavisnosti od toga sa koliko cifara se on predstavlja isti može da bude precizan ili neprecizan.

3.4. Odsecanje i zaokruživanje

Neka je zadat broj N10=0.62705 koga treba konvertovati u 8-bitni rezultat oblika N2 = b-1b-2b-3b-4b-5b-6b-7b-8.

Analizom dobijenog rezultata konverzije zaključujemo da 8-bitna binarna frakcija N2 nije tačan ekvivalent broju N10. Proces završavanja konstrukcije broja nakon fiksnog broja bitova n, ili jednostavno izbacivanjem (zanemarivanjem) svih cifara koje se dobijaju procesom konverzije nakon n-te, naziva se odsecanje (truncation). Odsecanje može da bude uzrok značajnih netačnosti u narednim izračunavanjima u kojima učestvuju brojevi nad kojima je primenjeno odsecanje. Ako proces konverzije broja N10 proširimo na veći broj binarnih cifra dobićemo da je b-9=1, b-10=0, ... , b-14=1. Daljom analizom možemo da zaključimo da je broj N10 bliži broju 0.101000012 nego

Page 4: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

RAČUNARSKI SISTEMI: Principi digitalnih sistema 20

broju 0.101000002. Sa ciljem da učinimo da N2 ima korektniju vrednost promenićemo bit poziciju b-8 sa 0 na 1. Ovo se ostvaruje zaokruživanjem (rounding), čime se broj N zamenjuje brojem N* koji je što je moguće bliži broju N, u okviru specificiranih ograničenja broja koja se odnose na njegovu dužinu ili obim reči. Tačno zaokruživanje je veoma suptilan proces. U računarstvu se ono izvodi hardverskim ili softverskim sredstvima. Postoji veliki broj metoda od kojih se, radi lakše implementacije, najčešće koriste tehnike zaokruživanje naviše ili naniže, tj. prema numerički većem ili manjem broju.

3.5. Binarna aritmetika

Aritmetičke operacije koje se izvode nad binarnim brojevima su jednostavnije od odgovarajućih operacija koje koriste decimalne brojeve zbog elementarnih pravila sabiranja i množenja. Ilustracije radi, tabele operacija sabiranja i množenja prikazane su na slici 3.3.

0 + 0 = 0 0*0 = 0 0 + 1 = 1 0*1 = 0 1 + 1 = 10 1*1 = 1

a) b)

Sl. 3.3. Tablice (a) sabiranja i (b) množenja binarnih brojeva.

Analiziraćemo sada realizaciju operacija sabiranja, oduzimanja, množenja i deljenja nad binarnim brojevima.

3.5.1. Sabiranje Kod sabiranja dva binarna broja, x=xm-1 ... x0 i y=ym-1 ... y0 prvo se sabiraju LS cifre x0 i y0 pri c0=0, a generišu prenos c1 i suma s0, a nakon toga se sabiraju cifre x1 i y1 sa prenosom c1, itd. Na slici 3.4 je prikazana procedura za sabiranje binarnih brojeva i tablica sabiranja.

Početak

xi + yi + ci ci+1 si 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1

Sl. 3.4. Procedura i tablica za sabiranje binarnih brojeva.

Konkretnije, ako su x=11110000, y=10101010, i c0=0, tada ćemo kao rezultat sabiranja imati

256 128 64 32 16 8 4 2 1

x 1 1 1 1 0 0 0 0 y 1 1 0 0 1 1 0 0 ci 1 1 0 0 0 0 0 0 0 x+y 1 1 0 1 1 1 1 0 0 s8 s7 s6 s5 s4 s3 s2 s1 s0

Kraj

i = 0, c0 = 0

ci+1, si = xi + yi + ci

da i = m

ne

i = i + 1

Page 5: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

3. Predstavljanje brojeva u računaru 21

3.5.2. Oduzimanje Binarno oduzimanje se obavlja na sličan način. U datom trenutku oduzima se jedan par bitova i generiše u svakom koraku bit pozajmice (borrow) umesto bita prenosa, kao i bit razlike umesto bita sume. Kod operacije oduzimanja koristi se tabela prikazana na slici 3.5. 0 - 0 = 0 1 - 0 = 1 1 - 1 = 0 0 - 1 = 1 sa pozajmicom od naredne bit pozicije veće težine

Sl. 3.5. Tabela binarnog oduzimanja.

Na slici 3.6 prikazane su procedura i tablica za oduzimanje binarnih brojeva.

Početak

xi - yi - bi bi+1 di 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1

Napomena: bi - i-ti bit pozajmice;

di - i-ti bit razlike.

Sl. 3.6. Procedura i tablica za oduzimanje binarnih brojeva.

Ilustracije radi, od broja x=11 1101 1011 (=98110) oduzimamo broj y=111 1011 (=1231).

512 256 128 64 32 16 8 4 2 1

x 1 1 1 1 0 1 1 0 1 1 y 0 0 0 1 1 1 1 0 1 1 pozajmica 0 0 1 1 0 0 0 0 0 0 x-y 1 1 0 1 1 0 0 0 0 0 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0

Procedura startuje od LS cifre pri čemu se generiše bit pozajmice b1 i razlika d0 a zatim se postupak nastavlja do krajnje leve cifre. U konkretnom primeru prvo se nulama popunjavaju ostale bit pozicije broja y (osenčeni deo). Nakon toga se vrši oduzimanje y0 od x0 i generiše razlika d0 i bit pozajmice b1. Oduzimanjem y1 i b1 od x1 generiše se d1=0 i b2=0. Proces produžava sve do generisanja d9. Drugi tipični primeri su 10000 - 101 = 1011 1010 - 1 = 1001 110010- 101 = 101101 1101 - 100101 = -11000

3.5.3. Množenje Kod operacije množenja koriste se obe tabele prikazane na slici 3.3 (tabela sabiranja i tabela množenja). Operacija binarnog množenja se obavlja na isti način kao i decimalno množenje. Množenjem množenika svakom cifrom množioca dobijaju se parcijalni proizvodi koji se pomeraju za po jedno mesto ulevo i potom sabiraju. Na primer, binarno množenje decimalnih brojeva 67 sa 13 je oblika:

Kraj

i = 0, b0 = 0

bi+1, di = xi - yi - bi

da i = m

ne

i = i + 1

Page 6: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

RAČUNARSKI SISTEMI: Principi digitalnih sistema 22

decimalno binarno

67 1000011 - množenik * 13 1101 - množilac

871 1000011 - prvi parcijalni proizvod 0000000 - drugi parcijalni proizvod 1000011 - treći parcijalni proizvod 1000011 - četvrti parcijalni proizvod 1101100111 - konačni proizvod

Na sličan način množenjem 13.5 sa 3.25 se dobija Decimalno binarno

13.5 1101.10 - množenik * 3.25 11.01 - množilac

43.875 110110 - prvi parcijalni proizvod 000000 - drugi parcijalni proizvod 110110 - treći parcijalni proizvod 110110 - četvrti parcijalni proizvod 101011.1110 - konačni proizvod

3.5.4. Deljenje Proces deljenja sličan je standardnom decimalnom deljenju. U suštini, binarno deljenje je jednostavnije jer se samo proverava koliko puta se delilac sadrži u deljeniku, a za to postoje samo dve mogućnosti - 0 ili 1. Analizirajmo deljenje broja 101110 (4610) sa 111 (710)

0001 količnik delilac 111 101110 deljenik 0111 100

S obzirom da je delilac 111 veći od prva tri bita deljenika, prva tri bita količnika su jednaki 0. Delilac je manji od prva četiri bita deljenika; zbog toga je deljenje moguće, pa je četvrti bit količnika 1. Razlika je manja od delioca tako da uzimamo i naredni bit deljenika.

00011 111 101110 0111 1001 111 10

Razlika je manja od delioca, pa ponovo uzimamo naredni bit deljenika. 000110 111 101110 0111 1001 111 100 ostatak

Sada je deljenik manji od delioca tako da je naredni bit količnika jednak 0 pa je deljenje završeno. Decimalna konverzija daje 46/7=6 a ostatak je 4.

3.6. Komplement aritmetika

Već smo ukazali da se operacija oduzimanja izvodi korišćenjem operacije sabiranja ako (kada) se umanjilac "korektno" kodira. Posledica ovog pristupa u odnosu na složenost ugrađenog hardvera koji obavlja ovu operaciju u računaru je da se jedinstvena hardverska celina, nazvana sabirač, može koristiti da izvrši sve aritmetičke operacije. Prilog ovome je svakako i to da se operacija binarnog množenja izvodi isključivo sabiranjem, a operacija binarnog deljenja isključivo oduzimanjem. Na ovaj način pojednostavljuje se, pre svega, proces projektovanja bloka koji vrši aritmetičke operacije, a zatim i hardver koji izvodi aritmetičke operacije. Sagledajmo sada neke detalje koji se tiču prezentacije brojeva a shodno tome i implementacije osnovnih aritmetičkih operacija.

3.6.1. Aritmetika u prezentaciji znak-moduo Negativni brojevi se mogu predstaviti na više načina. U svakodnevnom životu koristimo sistem znak-moduo (sign-magnitude), ali sa ciljem da se pojednostave aritmetička kola kod računara se koristi sistem komplement broja. Nezavisno od prethodne konstatacije, ukažimo prvo na složenost izvođenja operacija sabiranja i oduzimanja kod brojeva u prezentaciji znak-moduo.

Page 7: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

3. Predstavljanje brojeva u računaru 23

Kod sistema znak-moduo broj čine dva dela, moduo i znak. Znak može biti + ili -, što ukazuje na pozitivan ili negativan znak modula. Ako ispred broja nema znaka obično to znači da je broj pozitivan. Postoje dve mogućnosti prezentacije nule “+0” i “-0” koje imaju istu vrednost. Kada se sistem znak-moduo koristi za predstavljanje binarnih brojeva, znak se predstavlja jednim dodatnim bitom, kome je u okviru prezentacije broja dodeljeno mesto MS bit pozicije. Kada je bit znaka jednak 0, broj je pozitivan, a kada je jednak 1, broj je negativan. Ostali bitovi u okviru prezentacije broja dodeljuju se modulu. Shodno prethodnom, brojevi +123 i -123 razlikuju se samo na MS bitu na sledeći način

011110112 = +123 111110112 = -123

Sistem znak-moduo sadrži isti broj pozitivnih i negativnih celobrojnih vrednosti, koji se kod n-tobitnog broja nalaze u opsegu -(2n-1-1) do +(2n-1-1). Procedura za sabiranje i oduzimanje brojeva u sistemu znak-moduo prikazana je na slici 3.7. Kao što se vidi sa slike 3.7, kod aritmetike znak-moduo vrši se poređenje znakova i modula operanada. Za prezentaciju oba operanda i rezultata se koristi notacija D1=<s1,m1>, D2=<s2,m2> i Dr=<sr,mr>, gde su D1 i D2 prvi i drugi operand a Dr rezultat, pri čemu su s1, s2 i sr kao i m1, m2 i mr pripadajući znakovi i moduli, respektivno. Kod operacije množenje (deljenje) vrši se množenje (deljenje) modula brojeva a rezultat je pozitivan ako oba operanda imaju isti znak, a negativan kada su različitog znaka. Uobičajeno se, kada je rezultat jednak nuli, generiše +0. Početak

oduzimanja

s2 = s'2

i = m

i = m

i = m

mr = m1 + m2 sr = s1

mr = m1 - m2 sr = s2

mr = m1 - m2sr = s1

mr = 0 sr = 0

ne

ne

ne

da

da

da

Početak sabiranja

Kraj

Sl. 3.7. Procedura za sabiranje i oduzimanje kod brojeva u prezentaciji znak-moduo.

3.6.2. Aritmetika u prezentaciji potpunog komplementa Svaka celobrojna vrednost D se može predstaviti u obliku sume

rD dii

i

m

==

∑0

1

.

Pri ovome se pretpostavlja da je broj cifara tačno jednak m. Ako se nakon aritmetičke operacije generiše rezultat koji ima veći broj cifara od m tada se zadržava samo m LS cifara. U tom slučaju dolazi do prekoračenja opsega. Kod sistema komplement brojne osnove (radix complement system), komplement D , m-tocifrenog broja D, se dobija oduzimanjem tog broja od rm:

D r Dm= − . Na primer,

Page 8: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

RAČUNARSKI SISTEMI: Principi digitalnih sistema 24

desetični komplement od 5 10-5=5 (r=10, m=1) desetični komplement od 27 100-27=73 (r=10, m=2) desetični komplement od 146 1000-146=854 (r=10, m=3)

U opštem slučaju, ako se D nalazi imeđu 1 i rm-1, kao rezultat se dobija drugi broj koji se nalzi u opsegu od 1 do rm-1. Ako je D=0, kao rezultat se dobija rm što odgovara broju koji ima m+1 cifru od kojih je MS cifra (cifra na poziciji m) jednaka 1, a iza nje sledi m nula. S obzirom da zadržavamo samo m LS cifara, to znači da se nula kao broj ekvivalentno predstavlja nizom koji sadrži m nula. Kod binarnog brojnog sistema komplement brojne osnove se zove dvojični komplement (two's complement). Prezentacija pozitivnih brojeva kod dvojičnog komplementa je ista kao i kod prezentacije znak-moduo, dok se negativni broj dobija komplementiranjem prezentacije znak-moduo odgovarajućeg pozitivnog broja i sabiranjem sa 1 na mestu LS pozicije. Na primer, dvojični kompelent od -43 se određuje kao

+43 = 0101011 - oblik znak-moduo 1010100 - oblik jedinični komplement +1 1010101 - oblik dvojični komplement

Kod dvojičnog komplementa 0 je pozitivan broj i ima jedinstvenu prezentaciju. Opseg brojeva koji se može predstaviti nalazi se u granicama -(2m-1) do +(2m-1-1). Često je u toku izvođenja aritmetičkih operacija potrebno konvertovati m-tobitni broj u n-tobiitni. Kod ovakvih situacija potrebno je prvo odrediti da li je n>m. Ako je n veće od m dodaje se (n-m) nula posle bita za znak kod pozitivnih brojeva. Kada je broj negativan pridružuje se (n-m) jedinica nakon cifre znaka. S obzirom da smo dodali bitove koji su jednaki bitu znaka, ovo proširenje zovemo znakovno proširenje (sign-extension). Alternativno, kada je n<m, mi obavljamo operaciju znakovno odsecanje (sign-truncation), izbacivanjem m-n bitova koji slede iza bita znaka. Operacija odsecanja bitova je važeća pod uslovom da su svi odsečeni bitovi identični kao i bit znaka. U Tabeli 3.1 prikazano je kodiranje brojeva kod prezentacije dvojičnog komplementa i znak moduo.

Tab. 3.1. Prezentacija brojeva u dvojičnom komplementu i znak-moduo. decimalni dvojični komplement znak-moduo

-8 1000 - -7 1001 1111 -6 1010 1110 -5 1011 1101 -4 1100 1100 -3 1101 1011 -2 1110 1010 -1 1111 1001 0 0000 1000 ili 0000 1 0001 0001 2 0010 0010 3 0011 0011 4 0100 0100 5 0101 0101 6 0110 0110 7 0111 0111

Sabiranje i oduzimanje brojeva u dvojičnom komplementu je mnogo jednostavnije nego kod prezentacije znak moduo. Kod sabiranja dva broja u dvojičnom komplementu koristi se binarna aritmetika, tj. pravila definisana na slici 3.4, a ignoriše se bit prenosa nakon bita znaka. Sve dok opseg brojnog sistema nije premašen, dobijeni rezultat sabiranja je korektan, uključujući i znak. Na primer, sabiranjem dva pozitivna broja generiše se pozitivan rezultat.

0010 (+2) + 0100 (+4)

0110 (+6) Na sličan način, kada se sabiraju dva negativna broja i ignorišući bit prenosa nakon bita za znak dobije negativna suma, ona je uvek korektna.

1110 (-2) + 1100 (-4)

ignorisani prenos = 1 1010 (-6) Ipak postoje situacije kada rezultat premašuje opseg brojeva, generišući uslov poznat kao prekoračenje (overflow). Pravilo koje važi je sledeće: kod sabiranja dva broja različitog znaka nikad ne dolazi do prekoračenja.

Page 9: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

3. Predstavljanje brojeva u računaru 25

Ali, kada se sabiraju dva broja istog znaka čija je suma veća od najvećeg broja koji se može predstaviti dobija se nekorektni rezultat. Tako na primer

0100 (+4) + 0101 (+5)

1001 (-7) ili

1100 (-4) + 1011 (-5)

ignorisani prenos = 1 0111 (+7) Pravilo za detekciju prekoračenja je sledeće: Premašaj kod sabiranja uvek se javlja kada je znak sume različit od znaka oba sabirka. Projektanti računara se za detekciju premašenja koriste sledećim pravilom: ako je bit prenosa koji se prenosi u bit znaka različit od bita prenosa koji se dobija nakon bita znaka tada se javlja premašaj. Da bi ukazali na ovaj problem detaljnije analizirajmo sledeće primere: a)

1 prenos na mestu bita znaka 0 1 1 0 1 (+13) 1 1 0 0 1 (-7) 1 0 0 1 1 0 (+6) korektan rezultat bit prenosa na izlazu

b) 0 prenos na mestu bita znaka 1 0 0 0 1 (-15) 1 1 0 1 0 (-6) 1 0 1 0 1 1 (+11) rezultat nije korektan bit prenosa na izlazu

c) 0 prenos na mestu znaka 1 0 1 1 1 (-9) 0 0 1 1 0 (+6) 0 1 1 1 0 1 (-3) rezultat je korektan bit prenosa na izlazu

d) 1 bit prenosa na mestu znaka 1 0 1 1 (-5) 1 1 1 1 (-1) 1 1 0 1 0 (-6) rezultat je korektan bit prenosa na izlazu

Koristeći proceduru prikazanu na slici 3.6 vrši se oduzimanje brojeva u dvojičnom komplementu kao da su to binarni neoznačeni brojevi. Pri ovome pravila za detekciju premašaja kod oduzimanja su identična kao i pravila za detekciju premašaja kod sabiranja. Ipak, najveći broj kola za oduzimanje brojeva u dvojičnom komlementu ne obavlja oduzimanje direktno nego prvo komplementira umanjilac i uzima njegov dvojični komplement a zatim ga sabira sa umanjenikom koristeći pravila sabiranja. Da bi ukazali na razliku između direktnog oduzimanja i sabiranja u dvojičnom komplementu, analizirajmo sledeća dva primera: (i) direktno oduzimanje

0 0 1 0 (+2) - 0 1 0 0 (+4) 1 1 0 0 pozajmice ignorisana pozajmica = 1 (-2)

Page 10: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

RAČUNARSKI SISTEMI: Principi digitalnih sistema 26

(ii) sabiranje u dvojičnom komplementu 0 0 1 0 (+2) 1 1 0 0 dvojični komplement od (+4) 0 0 0 prenosi 1 1 1 0 (-2)

U slučaju (ii) koriste se ista pravila za detekciju premašaja kao i kod sabiranja. S obzirom da se brojevi u dvojičnom komplementu sabiraju i oduzimaju na isti način kao i brojevi bez znaka iste dužine, koristi se isto kolo za sabiranje i oduzimanje (slika 3.8).

Početak oduzimanja

D2 =⎯D2 +1

Dr = D1 + D2

Početak sabiranja

formiranje komplementa

brojne osnove

Sl. 3.8. Procedura za sabiranje/oduzimanje brojeva u komplementu brojne osnove.

Primer 3.1.

Digitalni sistemi operišu samo sa binarnim brojevima. No, kako su binarni brojevi često veoma dugi, mogu se koristiti i oktalna i heksadecimalna prezentacija za predstavljanje binarnih brojeva velikog obima. Brojna osnova kod oktalnog sistema je 8, a cifre uzimaju vrednosti od 0 do 7. Kao i kod decimalnih i binarnih brojnih sistema, poziciona vrednost svake cifre u sekvenci brojeva je unapred fiksirana. Naime, svaka pozicija u oktalnom brojnom sistemu je stepena 8, tj. osam puta je značajnija od prethodne. To znači da oktalni broj 3578 ima vrednost

3*82+7*81+5*80

= 192+56+5

= 25310

Decimalni ekvivalent oktalnog broja 14.3 je

14.38= 1*81+4*80+3*8-1

= 8+4+0.375

= 12.37510

Metod konverzije decimalnog broja u oktalni je isti kao i metod konverzije decimalnog broja u binarni, sa izuzetkom što se decimalni broj deli sa 8 umesto sa dva. Oktalni ekvivalent decimalnog broja 278 je

278 : 8 = 34, ostatak 6

34 : 8 = 4, ostatak 2

4 : 8 = 0, ostatak 4

Prema tome 27810=4268. Decimalni razlomljeni broj se konvertuje u oktalni progresivnim množenjem sa 8. Pri ovom postupku celobrojni deo svakog proizvoda se pamti kao oktalni razlomak. Na primer, 0.65110 se konvertuje u oktalni na sledeći način

0.651

* 8

5 0.208

8

1 0.664

* 8

Page 11: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

3. Predstavljanje brojeva u računaru 27

5 0.312

* 8

2 0.496

8

3 0.968

itd.

Prema tome 0.65110=0.515288. Veći broj oktalnih cifara rezultiraće većom tačnošću. Broj bitova potreban da se predstavi oktalna cifra je tri. To znači da je, ako svaku oktalnu cifru napišemo kao grupu od po tri bita, konverzija iz oktalnog u binarni sistem direktna. Tako na primer, broj 2708 se konvertuje u binarni na sledeći način

2 7 0

010 111 000

Konverzija iz binarnog u oktalni brojni sistem je opet direktna. Počevši od LS cifre binarni broj se deli na grupe od po tri cifre. Svaka grupa se zatim zamenjuje odgovarajućom vrednošću. Konverzija binarnog broja 101 110 010 111 u oktalni se vrši na sledeći način:

101 110 010 111

5 6 2 7

Za slučaj da krajnja leva grupa nema dovoljan broj cifara tada se dopisuju nule, kao u slučaju 1 100 001 011.

001 100 001 011

1 4 1 3

Kada je broj razlomljen, a broj bitova se ne može grupisati u segmente od po 3 bita dodaju se nule krajnjoj desnoj i krajnjoj levoj grupi. Primera radi broj 1101111.1011 se konvertuje u binarni kao

001 101 111 . 101 100

1 5 7 . 5 4

Konverzija decimalnog broja u binarni može da se vrši prvo konverzijom u oktalni a zatim direktno iz oktalnog u binarni. Na primer, broj 52310 se prvo konvertuje u oktalni

523 : 8 = 65, ostatak 3

65 : 8 = 8, ostatak 1

8 : 8 = 1, ostatak 0

1 : 8 = 0, ostatak 1

a zatim direktno, cifru po cifru, iz oktalnog u binarni kao

52310 1 0 1 3 8

001 000 001 011 2

Operacije sabiranja i oduzimanja kod oktalnih brojeva slične su onima koje se koriste kod decimalnog sistema. Naime, generiše se prenos ako suma premaši 710, kao na primeru

1548

4268

6028

6+4=1010 = 2+1 prenos ← prva kolona

5+2+1 prenos = 0+1 prenos ← druga kolona

Page 12: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

RAČUNARSKI SISTEMI: Principi digitalnih sistema 28

1+4+1 prenos = 6 ← treća kolona

Operaciju oduzimanja analizirajmo kroz sledeći primer 6708

- 1258

5438

0-5 = (8-5+1 pozajmica) = 3+1 pozajmica ← prva kolona

7-(2+1 pozajmica) = 7-3 = 4 ← druga kolona

6-1 = 5 ← treća kolona

Primer 3.2.

Baza heksadecimalnog brojnog sistema je 16, što znači da postoji 16 simbola. U Tabeli 3.2 prikazan je odnos između decimalnog, binarnog, oktalnog i heksadecimalnog brojnog sistema.

Tab. 3.2. Odnos brojnih sistema. decimalni binarni oktalni heksadecimalni

0 0000 0 0

1 0001 1 1

2 0010 2 2

3 0011 3 3

4 0100 4 4

5 0101 5 5

6 0110 6 6

7 0111 7 7

8 1000 10 8

9 1001 11 9

10 1010 12 10

11 1011 13 A

12 1100 14 B

13 1101 15 D

14 1110 16 E

15 1111 17 F

Konverzija binarnog brojnog sistema u heksadecimalni sastoji se u deljenju binarnog broja u grupe od po 4 bita, i predstavljanju svake grupe heksadecimalnim ekvivalentom. Na primer, binarni broj 1101 1000 1100 1001 se generiše kao

1101 1000 1100 1001

D 8 C 9

što je ekvivalentno sa D8C9H. Konverzija iz heksadecimalnog u binarni je direktna. Tako na primer, 3C2EH se konvertuje u binarni kao

3 C 2 E H

0011 1100 0010 1110

Ponekad je potrebno konvertovati heksadecimalni broj u decimalni. Svaka cifra kod heksadecimalnog broja je 16 puta značajnija od prethodne pozicije. Prema tome, decimalni ekvivalent 2B8CH je

2*163+B*162+8*161+C*160

= 2*163+11*162+8*161+12*160

= 8192+2816+128+12

= 11148

Page 13: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

3. Predstavljanje brojeva u računaru 29

Heksadecimalni brojevi se često koriste za opis podataka koji se smeštaju u memoriju. Najčešće se kapacitet memorije izražava u bajtovima. Bajt je 8-bitni podatak, a čine ga dve heksadecimalne cifre. Pola bajta se naziva nibla (nibble). Heksadecimalno sabiranje i oduzimanje se obavlja identično kao i kod bilo kog pozicionog brojnog sistema. Na primer, suma 688H i 679H se određuje kao

688H

679H

D01H

8+9 = 1710 = 1+1 prenos ← prva kolona

8+7+1 prenos = 1610 = 0+1 prenos ← druga kolona

6+6+1 prenos = 1310 = D ← treća kolona

Heksadecimalno oduzimanje analizirajmo na primeru oduzimanja brojeva 2A5H i 11BH 2A5H

- 11BH

18AH

(5-B)=(21-11+1 pozajmica)10 = 10+1 pozajmica = A+1 pozajmica ← prva kolona

A-(1+1 pozajmica) = (10-2)10 = 8 ← druga kolona

2-1 = 1 ← treća kolona

3.7. Predstavljanje znakova

Znaci su takođe nabrojivi tipovi podataka. Za razmenu informacije između računara potreban je skup podataka. Skup znakova se komponuje shodno specifičnim pravilima. Skup znakova mora da sadrži slova, znake interpukcije, komercijalne simbole i aritmetičke operatore. Druga klasa simbola koji pripadaju skupu znakova su upravljački znaci (control characters). U Tabeli 3.3 prikazan je skup znakova koji pripadaju ASCII kodu (American Standard Code for Information Interchange), koji je formalno poznat kao ISO kod.

Tab. 3.3. ASCII kod. Viši deo

Niži deo 000 001 010 011 100 101 110 111 0000 NUL DLE SP 0 @ P ` p 0001 SDH DC1 ! 1 A Q A q 0010 STX DC2 " 2 B R B r 0011 ETX DC3 # 3 C S C s 0100 EOT DC4 $ 4 D T D t 0101 ENQ NAK % 5 E U E u 0110 ACK SYN & 6 F V F v 0111 BEL ETB ' 7 G W G w 1000 BS CAN ( 8 H X H x 1001 HT EM ) 9 I Y i y 1010 LF SUB * : J Z j z 1011 VT ESC + ; K [ k { 1100 FF FS , < L \ l | 1101 CR GS - = M ] m } 1110 SO RS . > N ^ n ~ 1111 SI US / ? O _ o DEL

Primer: ASCII kod za znak '>' je 0b0111110.

Page 14: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

RAČUNARSKI SISTEMI: Principi digitalnih sistema 30

Skraćenice za upravljačke kodove

ACK acknowledge ETX end of text BEL bell FF form feed BS backspace FS file separator

CAN cancel GS group separator CR carriage return HT horizontal tabulation

DC1 device control 1 LF line feed DC2 device control 2 NAK negative acknowledge DC3 device control 2 NUL null DC4 device control 4 (stop) RS record separator DEL delete SI shift in DLE data link escape SO shift out EM end of medium SOH start of heading

ENQ enquiry STX start of text EOT end of transmission SUB substitute ESC escape SYN synchronous idle ETB end of transmission block US unit separator

VT vertical tabulation

3.8. Predstavljanje brojeva u pokretnom zarezu

Kod najvećeg broja viših programskih jezika postoji mogućnost deklarisanja promenljive tipa real. U računarima se brojne vrednosti ovog tipa predstavljaju u notaciji pokretnog zareza.

V=(-1)s×F×RE, gde je:

S-znak; F-mantisa; E-eksponent; R-brojna osnova. U računarskim sistemima se koristi nekoliko formata realnih brojeva.

3.8.1. Normalizovana notacija Nedostatak FP (floating point) notacije je što se brojevi mogu predstaviti na nekoliko načina, tj. ne postoji jedinstvena predstava za jedan broj.

Primer 3.3.

37.145 se može predstaviti kao 0.0037145×103 ili kao 3714.5×10-2. Ovi brojevi se zovu nenormalizovani. Normalizovani su oni brojevi kod kojih mantisa zadovoljava uslov:

1>F≥1/R

Primer 3.4.

U normalizovanoj formi broj 37.145, za R=10, se predstavlja kao 0.37145E+2 Naglasimo da normalizovana notacija ne obezbe|uje predstavljanje odre|enih brojeva blizu nule. Na slici 3.9 prikazani su normalizovani brojevi 0.3E-n, 0.2E-n, 0.19E-n, 0.11E-n i 0.1E-n gde zadnji predstavlja najmanji normalizovan broj. Brojevi manji od normalizovanog broja zovu se denormalizovani brojevi i ne zadovoljavaju uslov 1>F≥1/R. Denormalizovani brojevi kao što su 0.04E-n, 0.01E-n i 0.001E-n se mogu tada predstaviti. 0 0.100 0.200 0.300 0.11 0.19

denormalizovan broj 0.01×10-n

denormalizovan broj 0.04×10-n

najmanji normalizovan broj koji se mo`e predstaviti je 0.100×10-n

Sl. 3.9. Normalizovani i denormalizovani brojevi.

Page 15: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

3. Predstavljanje brojeva u računaru 31

3.8.2. Opseg broja u pokretnom zarezu Opseg zavisi od broja bitova koji su dostupni eksponentu i brojnoj osnovi. Opseg je ograničen sa jedne strane najmanjim brojem, a sa druge strane najvećim brojem koji se može predstaviti. Shodno tome, u jednom slučaju kažemo da kada radimo sa malim brojevima imamo podbačaj (underflow), a u drugom, kada radimo sa velikim može se javiti premašaj (overflow). Obično se premašaj signalizira, a podbačaj konvertuje u nulu.

3.8.3. Preciznost broja u pokretnom zarezu Postoji i drugi skup brojeva koji se ne može predstaviti, jer se ti brojevi nalaze između brojeva koji se mogu predstaviti. Na primer, ako mantisa sadrži tri cifre, tada se 0.3114×10-2 ne može predstaviti i aproksimira se sa 0.311×10-2. Preciznost zavisi od broja dostupnih bitova mantise.

3.8.4. Brojna osnova Najveći broj računara koristi brojnu osnovu 2. Kod IBM/370 koristi se brojna osnova 16 iz razloga efikasnosti - smanjuje se broj operacija pomeranja, tj. normalizacija se vrši samo ako su sva četiri MS bita frakcije jednaki nuli.

3.8.5. Struktura FP formata Format FP broja prikazan na slici 3.10 usvojen je od najvećeg broja arhitektura

mantisa S eksponent

Sl. 3.10. Format FP broja.

gde je S - znak broja (S=0 pozitivan, S=1 negativan). Eksponent može biti zadat u modifikovanoj i nemodifikovanoj notaciji. Kod nemodifikovane notacije (unbiased notation) vrednost eksponenta je u opsegu od -128...0...+127 (za 8-bitni eksponent). Kod modifikovane notacije (biased notation ili exess notation) vrednost eksponenta je u opsegu 0...+128...+255.

3.8.6. Predstavljanje broja nula Predstavljanje nule u FP notaciji može biti problem. Može se reći da se bilo koja prezentacija kod koje mantisa na svim cifarskim pozicijama ima nulu interpretira kao nula. Poželjno je takođe da u tom slučaju i polje eksponent bude nula.

3.8.7. Nevidljivi bit Kada je osnova 2, a brojevi su uvek normalizovani, MS bit mantise će uvek biti jedan (sa izuzetkom kada je vrednost nula). Ovo znači da prva jedinica ne nosi bilo kakvu informaciju i zbog toga ne mora da se pamti, što omogućava da se mantisi može dodeliti još jedan dodatni bit. Kada se vrši izračunavanje o ovom bitu treba voditi računa i imati u vidu da on postoji, a kada se rezultat želi sačuvati (memorisati) njega ne treba upisivati. Ovaj bit se zove nevidljivi bit (hidden bit). Tehnika rada sa nevidljivim bitom se često koristi kod velikog broja arhitektura, kod kojih specijalni hardver (FP procesor) mora da uzme u obzir nevidljivi bit kada interno obavlja konverziju podataka.

3.8.8. Standardi za FP Postoji veći broj standarda za FP od kojih su najpoznatiji IEEE Standard 754, IBM-ov standard korišćen kod mašine IBM/370 i DEC-ov standar korišćen kod mašine PDP-11. IEEE Standard 754 je važeći kako za hardversku, tako i za softversku implementaciju FP operacija. Standardom se razmatraju problemi koji su u vezi sa zaokruživanjem (rounding), premašajem, podbačajem i drugim rezultatima koji se javljaju kao izuzetak u toku izračunavanja. Kod IEEE 754 postoje četiri osnovna formata:

• jednostruka preciznost E=8 bitova, F=23 bita, • dvostruka preciznost E=11 bitova, F=52 bita, • jednostruka preciznost - prošireni format E≥11 bitova, F≥31 bita, • dvostruka preciznost - prošireni format E≥15 bitova, F≥63 bita.

Tačne vrednosti za polja E i F zavise od implementacije. IEEE FP formati su prikazani na slici 3.11.

Page 16: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

RAČUNARSKI SISTEMI: Principi digitalnih sistema 32

bitovi 1 8 23 jednostruka preciznost mantisa eksponent znak bitovi 1 11 52

mantisa eksponent znak dvostruka preciznost

Sl. 3.11. IEEE FP formati za jednostruku i dvostruku preciznost.

Numeričke karakteristike IEEE FP standarda date su Tabeli 3.4.

Tab. 3.4. Numeričke karakteristike IEEE FP standarda.

stavka jednostruka preciznost dvostruka preciznost bit znaka 1 1 bitovi eksponenta 8 11 bitovi mantise 23 52 ukupno bitova 32 64 sistem eksponenta modifikovan za 127 modifikovan za 1023 opseg eksponenta -126 do + 127 -1022 do + 1023 najmanji normalizovani 2-126 2-1022 najveći normalizovani aproksimativno 2+128 aproksimativno 2+1024 decimalni opseg aproksimativno od 10-38 do 10+38 aproksimativno od 10-308 do 10+308 najmanji denormalizovani aproksimativno 10-45 aproksimativno 10-324

Pregled numeričkih tipova podataka kod IEEE standarda prikazan je na slici 3.12.

bilo koji bit oblik različit od nule

bilo koji bit oblik različit od nule

bilo koji bit oblik

0

0

11..............................1

11..............................1

0

0

0<Exp<Max

±

±

±

±

± normalizovani

denormalizovani

nula

beskonačno

NaN (nije broj)

Sl. 3.12. Numerički tipovi podataka kod IEEE standarda.

NaN se javlja kada se beskonačnost deli sa beskonačnošću. Da bi se obradio ovaj slučaj usvaja se poseban format NaN (Not a Number). Brojna linija na kojoj se vrši prezentacija realnog broja u duploj preciznosti se može predstaviti u sedam oblasti (slika 3.13). 1 2 3 4 5 6 7

-10308 -10-308 0 10308 10308 1. negativni premašaj 4. nula 2. negativni brojevi koji se mogu predstaviti 5. pozitivni podbačaj 3. negativni podbačaj 6. pozitivni brojevi koji se mogu predstaviti 7. pozitivni premašaj

Sl. 3.13. Oblasti brojne ose koje se mogu i koje se ne mogu predstaviti.

Page 17: Predstavljanje brojeva u ra~unaru - Elektronski fakultet Nisstarisajt.elfak.ni.ac.rs/phptest/new/html/informacije/vesti/resenja... · 3. PREDSTAVLJANJE BROJEVA U RAČUNARU Sve matematičke

3. Predstavljanje brojeva u računaru 33

3.9. Problemi 1. Odrediti binarne prezentacije za svaki od sledeća dva BCD broja: a) 0011 1001 0111 1000 b) 0100 0110 1001.0111 0101 2. Izvršiti sabiranje sledećih binarnih brojeva:

a) 100011 b) 10110110 c) 10110011 1101 11100011 1101011

3. Oduzmi sledeće binarne brojeve:

a) 101101 b) 1010001 c) 10000110 111110 1001111 1110001

4. Izvrši sabiranje (oduzimanje) sledećih parova heksadecimalnih brojeva.

a) ABCD b) 129A c) EF23 7 5 EF AB22 C89

5. Izvrši sabiranje (oduzimanje) sledećih parova oktalnih brojeva.

a) 7521 b) 62354 c) 3567 4370 3256 2750