Professional Documents
Culture Documents
GLAVA2
GLAVA2
14
Primer 2.1.
Osnova (base ili radix) brojnog sistema je broj simbola u sistemu. Decimalni brojni sistem ima deset simbola 0, 1, 2, ..., 9, tj. ima 10 cifara. Svaka cifra decimalnog sistema je 10 puta znaajnija od prethodne pozicije. Na primer, 3432
pozicija 100 pozicija 101 pozicija 102 pozicija 103
Uoimo da 3 na poziciji 103 ima razliito znaenje od 3 na poziciji 101. Vrednost decimalnog broja odreuje se mnoenjem svake cifre broja vrednou pozicije na kojoj se javlja cifra, a nakon toga vri se sabiranje proizvoda. Shodno tome, broj 3432 se interpretira kao 3*103+4*102+3*100+2*100=3432 U konkretnom sluaju, krajnja desna cifra je cifra najmanje teine (LSD - least significant digit), a krajnja leva cifra je cifra najvee teine (MSD - most significant digit). Za decimalni razlomak N=0.6341 imamo N=6*10-1+3*10-2+4*10-3+1*10-4. Svaki pozicioni brojni sistem karakterie se osnovom brojnog sistema r (ona se oznaava i sa N ili B). Cifre brojnog sistema sa osnovom r uzimaju vrednosti iz skupa {0, 1, ... , r 1}. Neka je neki broj A predstavljen sledeim nizom od n cifara: (2.1) A = an-1an-2...a1a0, gde je ai{0, 1, ... , r 1}, 0 i n-1, tada se vrednost broja A moe odrediti kao |A| = an-1rn-1 + an-2rn-2 + ... + a1r1 + a0r0, odnosno (2.2)
| A| = ai r i .
i=0
n1
(2.3)
Osim za cele brojeve, ovo se moe primeniti i za razlomljene brojeve, tj. |A| = an-1rn-1 + an-2rn-2 + ... + a1r1 + a0r0 + a-1r-1 + a-2r-2 + ... + a-mr-m =
i = m
a r .
i i
n1
(2.4)
U raunarskim sistemima se, osim decimalnog brojnog sistema, najee koristi binarni brojni sistem (r = 2), oktalni (r = 8) ili heksadecimalni (r = 16) brojni sistem. U principu, osnova brojnog sistema moe biti bilo koja; 7, 11, -3, ili ak iracionalan broj kakav je ili e. Ipak, obino se za brojnu osnovu sistema uzima pozitivna celobrojna vrednost. Praksa je da se, kada se broj napie u sistemu sa brojnom osnovom razliitom od 10, posebno naglasi o kojoj se brojnoj osnovi radi. Standardno se to oznaava tako to se broj stavlja u zagrade, a nakon desne zagrade pridruuje se indeks koji ukazuje na bazu, kao na primer (1230)4 = 1*43 + 2*42 + 3*41 + 0*40 to je ekvivalentno broju 108, ili (364.213)7 = 3*72 + 6*71 + 4*70 + 2*7-1 + 1*7-2 + 3*7-3 = (193.314868...)10.
15
2.2.1. Prevoenje brojeva kod koga se operacije izvravaju u brojnom sistemu sa osnovom r2
Ovaj postupak se odvija sasvim jednostavno, prema ve opisanom postupku (na primeru konverzije broja (1230)4 u decimalni) za odreivanje vrednosti broja na osnovu zadatog niza cifara.
X=
i = m
x r
n1
i i 1
(2.5)
Izraunavanje ovog izraza odvija se u brojnom sistemu sa osnovom r2. Kako smo navikli da radimo u dekadnom brojnom sistemu, jasno je da se ovaj postupak koristi kada se broj iz nekog drugog brojnog sistema prevodi u dekadni brojni sistem.
2.2.2. Prevoenje brojeva kod koga se operacije izvravaju u brojnom sistemu sa osnovom r1
Ovde je situacija komplikovanija, pa se na razliite naine vri prevoenje celih i razlomljenih brojeva.
( X ) r1 = x n x n1 K x1 x 0 = xi r1i .
i=0 r
(2.6)
Neka se taj isti broj u brojnom sistemu sa osnovom r2 predstavlja na sledei nain:
( X ) r2 = y p y p1 K y1 y0 = yi r2i .
i=0
(2.7)
Ako poslednji izraz podelimo osnovom r2 dobijamo sledee: y X = y p r2p 1 + y p 1 r2p 2 + K + y 2 r21 + y1 r20 + 0 . (2.8) r2 r2 Primetimo da su svi sabirci sa leve strane izraza celobrojni, osim poslednjeg koji je sigurno razlomljen, jer je svaka cifra brojnog sistema manja od osnove brojnog sistema. Drugim reima, cifra najmanje teine u prezentaciji broja X u sistemu sa osnovom r2 pojavljuje se kao ostatak pri ovakvom deljenju. Ostale cifre se dobijaju iterativnim ponavljanjem postupka nad celobrojnim delom kolinika. Algoritam se zavrava kada taj celobrojni deo postane jednak nuli. Da bi ukazali na ovaj postupak neto detaljnije, analiziraemo sledei primer. Neka B10 bude decimalan broj koji se konvertuje u broj A osnove r, tj. (2.9) B10 = Ar = (anan-1...a1a0)r
16
ili
(2.10) B10 = anrn + an-1rn-1 + ... + a1r1 + a0r0. Sada, ako B10 podelimo sa r, dobiemo B10 a0 = (an r n1 +K+a2 r + a1 ) + r r (2.11) B10 B10 = Int ( ) + Frac( ) r r gde Int i Frac ukazuju na celobrojni i razlomljeni deo B10/r. Na osnovu jednaine (2.11) imamo da je B10 (2.12) a0 = Rem ( ) r gde Rem oznaava ostatak od B10/r. Ako se ovaj proces sada ponovi poev sa Int(B10/r), naredni ostatak bie a1 a naredni celobrojni deo bie anrn-2 + an-1rn-3 + ... + a2. Proces se produava dok se ne generie cifra ar. Analizirajmo sluaj kada je potrebno odrediti broj u bazi 3 ekvivalentan broju (278)10. Proces konverzije je sledei:
kolinik 3 3 3 3 3 3 278 92 30 10 3 1 2 = a0 2 = a1 0 = a2 1 = a3 0 = a4 1 = a5 ostatak
0 Zaustavi
Prema tome, (278)10 = (101022)3 Da bi proverili da li smo izvrili konverziju korektno, izvrimo ponovo konverziju broja (101022)3 u decimalni broj. (101022)3 = 1*35 + 0*34 + 1*33 + 0*32 + 2*31 + 2*30 = (278)10
( X ) r1 = 0. x 1 x 2 K x m+1 x m = x i r1i ,
i =1
(2.13)
y
i =1
i i 1
(2.14)
Ako ovaj izraz pomnoimo osnovom brojnog sistema r2, tada dobijamo Xr2 = y1 + y2r21 + y3r22 +K y q r2 q +1 .
(2.15)
17
Prvi sabirak je sigurno celobrojni deo proizvoda (to je cifra brojnog sistema) dok ostali sabirci predstavljaju razlomljeni deo (cifre podeljene osnovom brojnog sistema). U stvari, celobrojni deo proizvoda predstavlja prvu cifru posle take osnove. Ako postupak nastavimo sa razlomljenim delom proizvoda dobiemo i ostale cifre. Kraj algoritma je kada razlomljeni deo proizvoda postane jednak nuli. Treba napomenuti da se ovde ne dobija uvek apsolutna tanost, jer neki racionalni brojevi prilikom prevoenja postaju iracionalni. Generalno, s obzirom da se kod ovog postupka prevoenja, kako celih tako i razlomljenih brojeva, operacije izvravaju u brojnom sistemu sa osnovom r1 (tj. u sistemu iz koga se prevodi), moemo rei da je pogodno da se ovaj postupak primeni kada se brojevi prevode iz dekadnog u neki drugi brojni sistem.
Primer 2.2. Brojevi u optem sluaju imaju razlomljeni deo i celobrojni deo. Konverzija razlomljenog dela u ekvivalentnu prezentaciju osnove r izvodi se na ve prikazani nain, slino konverziji celobrojnog dela. Neka B10 predstavlja razlomljeni decimalni broj ekvivalentan razlomljenom broj Ar u sistemu sa brojnom osnovom r, tj. B10 = Ar = (0.a-1a-2 ... a-m) = a-1r-1 + a-2r-2 + ... a-mr-m (2.16) Mnoenjem jednaine (2.16) sa r dobijamo rB10 = a-1 + (a-2r-1 + ... a-mr-m+1) (2.17) odakle vidimo da je celobrojna vrednost a-1. Ako se sada razlomljeni deo (a-2r-1 + ... a-mrm+1 ) pomnoi sa r, dobiemo a-2, itd. To znai da se repetitivnim mnoenjem sa r dobijaju sukcesivne cifre razlomljenog broja B10 u prezentaciji osnove r. Izvriti konverziju (0.27)10 = (?)4. Odgovor: Proces konverzije se obavlja na sledei nain
celobrojna vrednost a-1 = 1 a-2 = 0 a-3 = 1 a-4 = 1 razlomljeni deo .27*4 .08*4 .32*4 .28*4 .012 . . .
Prema tome (0.27)10 = (0.1011...)4, a sprovedenom proverom emo dobiti (0.1011...)4 = 1*4-1 + 0*4-2 + 1*4-3 + 1*4-4 + ... = (0.2695...)10 Na osnovu dobijenog rezultata vidimo da se procesom konverzije generie ekvivalent koji nije identian. Ova injenica mora da se uzme u obzir kada se izraunavanje vri od strane raunara koji ne koristi decimalni brojni sistem.
18
Primer 2.3.
U optem sluaju, konverzija decimalnih brojeva koji imaju celobrojni i razlomljeni deo se moe izvesti tako to se posebno vri konverijza svakog dela a zatim kombinuju rezultati. Na primer, konverzija (123.56)10 = (?)7 se vri na sledei nain. Prvo se vri konvezija celobrojne vrednosti 7 7 7 123 17 2 0 .56*7 3 6 3 0 .92*7 .44*7 .08*7 .56
. . .
4 3 2
Za rezultat dobijamo (123.56)10 = (234.3460...)7 pri emu '...' ukazuje da rezultat nije taan. Primer 2.4. Na koji nain se najlake vri konverzija izmeu dva nedecimalna sistema? Odgovor: Konverzija izmeu dva nedecimalna sistema se najlake sprovodi ako se kao meukorak koristi decimalni sistem. Na primer, konverzija (1354.24)6 = (?)4 sprovodi se najpre konverzijom iz baze 6 u bazu 10, a zatim konverzijom baze 10 u bazu 4, tj. (1354.24)6 = (358.4444...)10 = (11212.1301...)4
19
r=16 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 . . .
r=2 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 . . .
r=3 0 1 2 10 11 12 20 21 22 100 101 102 110 111 112 120 121 122 . . .
r=8 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 . . .
Sl. 2.1. Brojanje kod razliitih sistema osnove r (Napomena: brojna osnova r=3 skoro da se i ne koristi kod raunara). Kada je r>10 javlja se problem kod prezentacije onih cifara x koje se nalaze u opsegu 9 < x < r, s obzirom da ne postoje standardni simboli za ove brojeve. Dogovorno, za prezentaciju ovih cifara se koriste velika slova. Tako, na primer, za r=16 (heksadecimali sistem) brojaka sekvenca e biti 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, ..., gde je (A)16 = (10)10, (B)16 = (11)10, itd.
20
Na primer, decimalni ekvivalent binarnog broja 101010 je N = 101010 = 1*25+0*24+1*23+0*22+1*21+0*20 = 32+0+8+0+2+0 = 42 Ovaj nain konverzije je pogodan za oveka, ali ne i za mainsku implementaciju, jer zahteva relativno sloenu (sa aspekta ugraenog hardvera ili vremena izraunavanja) operaciju stepenovanja da bi se izraunao svaki stepen dvojke. Stepenovanje se moe izbei korienjem viestrukog mnoenja sa dva. To znai
n 1
(2.19)
21
i=0 N10 = 2*50 + b0 = 101 Zakljuujemo da je N10 = 10110. Konverzija decimalnog broja u binarni se izvodi na sledei nain. Decimalni broj se razlae na dva dela - jedan deo odgovara maksimalnoj potenciji broja 2 koja nije vea od datog broja a drugi deo ostatku. Nakon toga se, ponovo, ostatak razlae na dva dela: na maksimalnu potenciju broja dva koja nije vea od broja i na ostatak. Proces se ponavlja sve dok se ne dobije ostatak koji je jednak nuli. Binarana vrednost se dobija zapisivanjem 1 na bit pozicijama ije teine odgovaraju potencijama dvojke dobijenim tokom konverzije. Primera radi analizirajmo konverziju decimalnog broja 426 u binarni. 426 = 256 + 170 = 256 + 128 + 42 = 256 + 128 + 32 + 10 = 256 + 128 + 32 + 8 + 2 28 27 25 23 21
Prema tome, 42610=11010101102. Altrenativni metod konverzije decimalnog broja u binarni zasniva se na sukcesivnom deljenju decimalnog broja brojnom osnovom 2. Ostaci deljenja, napisani u obrnutom redosledu daju binarni ekvivalent decimalnog broja. Proces konverzije broja 35310 u binarni je sledei: 353 : 2 = 176 176 : 2 = 88 88 : 2 = 44 44 : 2 = 22 22 : 2 = 11 11 : 2 = 5 5:2= 2 2:2= 1 1:2= 0 Shodno prethodnom, 35310=1011000012 Konverzija razlomljenog broja se vri na slian nain. Primera radi, posmatrajmo konverziju binarnog broja 0.101011 u decimalni. N = 0.101011 = 1*2-1+0*2-2+1*2-3+0*2-4+1*2-5+1*2-6 gde su a-1=1, a-2=0, a-3=1, a-4=0, a-5=1 i a-6=1. Prema tome, N = 0.101011 = 1/2 + 1/8 + 1/32 + 1/64 = 0.671875 Decimalni razlomljeni broj se moe konvertovati u binarni, sukcesivnim mnoenjem sa 2. Ceo deo svakog proizvoda, 0 ili 1, se pamti i na taj nain se formira , ostatak 1 , ostatak 0 , ostatak 0 , ostatak 0 , ostatak 0 , ostatak 1 , ostatak 1 , ostatak 0 , ostatak 1
22
razlomljeni broj. Primera radi, binarni ekvivalent decimalnog razlomka 0.203125 se dobija sukcesivnim mnoenjem razlomka sa dva, na sledei nain 0.203125 2 0.206250 2 0.812500 2 0.625000 2 0.250000 2 0.500000 2 0.000000
Binarni ekvivalent broja 0.20312510 je 0.0011012 Ukaimo da decimalnom broju sa konanim brojem cifara iza decimalne take moe da odgovara binarni broj sa beskonano mnogo binarnih cifara u razlomljenom broju. U takvim sluajevima mnoenje sa dva se produava sve dok se decimalni broj ne potroi ili se ne postigne eljena tanost. Uticaj na tanost ima trenutak zaustavljanja procesa konverzije. Na primer, ako stanemo nakon etvrtog koraka, tada usvajamo da je 0.0011 aproksimativno jednak 0.20315, dok je ustvari taj broj jednak 0.1875, a greka iznosi oko 7.7%. U principu, rad sa binarnim brojevima je zaista zametan, zbog toga to se, ak i za prezentaciju malih decimalnih vrednosti, zahteva veliki broj bitova. Iz ovog razloga se za prezentaciju binarnih brojeva ee koriste oktalni i heksadecimalni brojevi. Da bi ukazali na odnos izmeu binarnih, oktalnih i heksadecimalnih brojeva razmotriemo sledei binarni broj. 110101011 = 1*28 + 1*27 + 0*26 + 1*25 + 0*24 + 1*23 + 0*22 + 1*21 + 1*20 = (1*22 + 1*21 + 0*20)*26 + (1*22 + 0*21 + 1*20)*23 + (0*22 + 1*21 + 1*20)*20 = 6*(23)2 + 5*(23)1 + 3*(23)0 = 6*82 + 5*81 + 3*80 = (653)8 Ovim primerom je na jedan ekstremni nain prikazan postupak konverzije broja iz binarnog u oktalni sistem. Ipak, konverzija se izvodi jednostavnijim postupkom. Vri se grupisanje bitova u grupe od po tri bita i svakoj grupi se dodeljuje decimalna vrednost. Tako, na primer, (110 101 011)2 = (6 5 3)8 Analognim postupkom se vri konverzija binarnog broja u heksadecimalni. Postupak se sprovodi na taj nain to se bitovi grupiu po etiri, kao na primer (1001 1110 0011 1000)2 = (9 E 3 8)16 Ako je neophodno vriti konverziju broja iz heksadecimalne u oktalnu brojnu prezentaciju, ili obratno, lake je koristiti binarnu decimalnu prezentaciju kao meukorak. Tako, na primer (1A8E)16 = (?)8 = (0001 1010 1000 1110)2 = (001 101 010 001 110)2
23
=(1 5 2 1 6)8 Kao to se moe uoiti, rezultat se ne dobija kao posledica obavljanja neke operacije, ve prepisivanjem heksadecimalnog broja u binarni, a zatim pregrupisanjem bitova sa ciljem da se formira oktalni rezultat.
2.5. Problemi
1. Koji decimalni ekvivalent odgovara najveem binarnom broju koji se moe izraziti sa: a) 8 bitova; b) 16 bitova; c) 32 bita. 2. Izvriti konverziju sledeih binarnih brojeva u decimalne: a) 111010; b) 10101111.101; c) 110110110. 3. Izvriti konverziju sledeih binarnih brojeva u binarne: a) 1946; b) 2005; c) 138; d) 1998. 4. Izvri konverziju sledeih brojeva: a) (764.7)8 u heksadecimalni; b) (F6D.C)16 u oktalni; c) (147.5)8 u sistem sa osnovom 4. 5. Izvriti konverziju sledeih brojeva iz naznaene baze u decimalne: a) (12021)3, b) (4321)5, c) (A98)12. 6. Izvriti konverziju zadatih brojeva iz date baze u ostale tri baze shodno sledeoj tabeli. decimalni 369.3125 ? ? ? binarni ? 1011 1101.101 ? ? oktalni ? ? 326.5 ? heksadecimalni ? ? ? F3C7.A