26
3 PRIMENA RAČUNARA – I (II godina) UVOD U ORGANIZACIJU RAČUNARA Prvi digitalni računari su se pojavili početkom 50-tih godina sa zadatkom da ubrzaju i olakšaju kompleksne proračune u tehnici i nauci i obradu velike količine podataka u biznisu i administraciji. Po dimenzijama bili su ogromni a u pogledu mogućnosti skromni. Zahvaljujući pojavi mikroprocesora početkom 70-ih godina započela je ”računarska revolucija” tj. veoma brz napredak u tehnologiji proizvodnje računarskih elemenata, arhitekturi i performansama računara kao i njihovoj primeni. Jednostavno rečeno računari su sve manji, a istovremeno “moćniji” a oblast primene se od proračuna i obrade podataka proširila na analizu i projektovanje procesa u tehnici, računarsku grafiku, akviziciju (prikupljanje) i obradu merenja, upravljanje aparatima i procesima, veštačku inteligenciju itd. Klasična organizacija računara prikazana je na slici 1. Osnovni funkcionalni delovi jednog računara predviđenog za proračune ili obradu podataka su: ulazna i izlazna jedinica, centralna i periferna memorija, kontrolna (upravljačka) i aritmetičko-logička jedinica koje zajedno čine centralnu procesnu jedinicu (CPU). Mikroračunar ili personalni računar se karakteriše malom veličinom i niskom cenom, a kao centralnu procesorsku jedinicu ima mikroprocesor (µP). IZLAZNA JEDINICA KONTROLNA JEDINICA (CU) CENTRALNA MEMORIJA (CM) PERIFERNA MEMORIJA (PM) podaci program rezultati CENTRALNA PROCESNA JEDINICA (CPU) ULAZNA JEDINICA ARTMETIČKO LOGIČKA JEDINICA (ALU) Sl.1.1. Organizacija računara za obradu podataka Fizičke komponente računara (oprema) čine hardver (hardware). Sama oprema bi bila beskorisna bez instrukcija ili naredbi (komandi) koje iz memorije pribavlja, a zatim aktivirajući određene hardverske elemente, izvršava centralna procesna jedinica. Niz instrukcija čini program koji se pre izvršenja mora nalaziti u memoriji računara. Program omogućuje na primer, izvođenje nekog kompleksnog proračuna na računaru. U programu se manipuliše

PRIMENA RAČUNARA – I · Ulazno-izlazne jedinice (I/O) predstavljaju kao i periferna memorija periferne jedinice. One su veza računara sa spoljnim svetom pri čemu binarno kodiraju

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

3

PRIMENA RAČUNARA – I (II godina)

UVOD U ORGANIZACIJU RAČUNARA Prvi digitalni računari su se pojavili početkom 50-tih godina sa zadatkom da ubrzaju i olakšaju kompleksne proračune u tehnici i nauci i obradu velike količine podataka u biznisu i administraciji. Po dimenzijama bili su ogromni a u pogledu mogućnosti skromni. Zahvaljujući pojavi mikroprocesora početkom 70-ih godina započela je ”računarska revolucija” tj. veoma brz napredak u tehnologiji proizvodnje računarskih elemenata, arhitekturi i performansama računara kao i njihovoj primeni. Jednostavno rečeno računari su sve manji, a istovremeno “moćniji” a oblast primene se od proračuna i obrade podataka proširila na analizu i projektovanje procesa u tehnici, računarsku grafiku, akviziciju (prikupljanje) i obradu merenja, upravljanje aparatima i procesima, veštačku inteligenciju itd. Klasična organizacija računara prikazana je na slici 1. Osnovni funkcionalni delovi jednog računara predviđenog za proračune ili obradu podataka su: ulazna i izlazna jedinica, centralna i periferna memorija, kontrolna (upravljačka) i aritmetičko-logička jedinica koje zajedno čine centralnu procesnu jedinicu (CPU). Mikroračunar ili personalni računar se karakteriše malom veličinom i niskom cenom, a kao centralnu procesorsku jedinicu ima mikroprocesor (µP).

IZLAZNAJEDINICA

KONTROLNAJEDINICA (CU)

CENTRALNAMEMORIJA (CM)

PERIFERNAMEMORIJA (PM)

podaciprogram

rezultatiCENTRALNA PROCESNA

JEDINICA (CPU)

ULAZNAJEDINICA

ARTMETIČKOLOGIČKA JEDINICA (ALU)

Sl.1.1. Organizacija računara za obradu podataka

Fizičke komponente računara (oprema) čine hardver (hardware). Sama oprema bi bila beskorisna bez instrukcija ili naredbi (komandi) koje iz memorije pribavlja, a zatim aktivirajući određene hardverske elemente, izvršava centralna procesna jedinica. Niz instrukcija čini program koji se pre izvršenja mora nalaziti u memoriji računara. Program omogućuje na primer, izvođenje nekog kompleksnog proračuna na računaru. U programu se manipuliše

4

informacijama koje nazivamo podaci. U nekom inženjerskom proračunu na primer, to su neophodni brojni podaci. Različiti programi čine programsku podršku ili softver (software). Instrukcije koje CPU “prepoznaje” zovu se mašinske instrukcije i deo su nekog mašinskog programa. Mašinski program je teško razumljiv za korisnika i pravljenjem mašinskih programa sistemskim mašinskim programiranjem bavi se samo mali deo korisnika koji su stručnjaci za bazni softver. Da bi se olakšao problem programiranja pri rešavanju različitih praktičnih problema na računaru odnosno formiranju aplikativnog softvera, formulisani su viši programski jezici kao što su danas BASIC, FORTRAN, PASCAL, C, C++ itd. koji su mnogo bliži čoveku ali ih ne razume računar. Zato je neophodan poseban softver-prevodilac (compiler) koji prevodi program koga je korisnik napisao u višem programskom jeziku u računaru blizak mašinski program. Iz jedne instrukcije u višem programskom jeziku pri prevođenju (compiling) nastaje čitav niz mašinskih instrukcija. Svoj program i podatke korisnik unosi u računar preko ulazne jedinice ili uređaja∗ (input unit, input device) kao što je tastatura. Instrukcije i podatke iz ulazne jedinice prihvata CPU i šalje ih u određene memorijske lokacije. Kontrolna jedinica (CU) koja kontroliše i sinhronizuje rad svih ostalih delova računara uzima jednu po jednu instrukciju iz memorije i pošto je prepozna ili dekodira (dešifruje) izvršava je. Primeri instrukcija su: sabiranje dva broja, unos podataka preko ulazne jedinice, izlaz rezultata za korisnika preko izlazne jedinice ili uređaja (output unit, output device). U toku izvršavanja instrukcije, CU generiše niz upravljačkih naponskih signala - kontrolni signali koje šalje odgovarajućim hardverskim elementima (pune linije na sl.1.).

Kodiranje i dekodiranje informacija Informacije koje računar pamti i obrađuje (podaci i instrukcije) su interno u binarnom obliku tj. matematički posmatrano, u obliku nizova nula i jedinica. Tako je najmanja jedinica informacije u računaru jedna nula ili jedna jedinica i naziva se bit. Fizički, bit se u računaru realizuje preko dva različita električna stanja pomoću odgovarajućih hardverskih elemenata (diode, tranzistori, magnetska jezgra). Tako ako je neki element na višem od dva nivoa napona on realizuje binarno 1, a ako je na nižem nivou napona onda realizuje binarno 0, ili magnetski tok u jednom smeru realizuje 1, a u suprotnom smeru 0. Kažemo da su informacije u računaru binarno kodirane pa su neophodni odgovarajući hardverski elementi i softver za prevođenje-kodiranje ulaznih informacija iz izvornog (source) oblika ili koda u binarni ili mašinski oblik ili kod (binary code, mashine code), koga razume računar. Naime, korisnik unosi svoj program i podatke u obliku teksta i dekadnih brojeva (izvorni oblik) koji se radi smeštanja u memoriju moraju binarno kodirati. Hardver za binarno kodiranje ulaznih informacija je u sklopu ulazne jedinice. Da bi izlazne informacije (napr. rezultati) bile razumljive za korisnika, neophodan je obrnut proces - dekodiranje internih binarnih informacija (u tekst i dekadne brojeve). Hardver za dekodiranje obezbeđuju izlazne jedinice.

Memorija Instrukcije i podaci se čuvaju u centralnoj ili operativnoj memoriji (CM) koja prestavlja niz lokacija za pamćenje jednake veličine. Memorijskim lokacijama se pristupa tj. one se nalaze pomoću adrese, kažemo da je centralna memorija adresibilna. Grupa bitova koja se čuva u jednoj lokaciji predstavlja jednu celinu (podatak ili deo podatka, instrukcija ili deo instrukcije). Kod mikroračunara, to je grupa od 8 bitova i ona se naziva bajt (byte). I adrese memorijskih lokacija je neophodno pamtiti. Prostor za pamćenje adrese, tj. dužina adrese (broj bitova u adresi) definiše maksimalnu adresibilnu memoriju ili adresni prostor tj. maksimalnu

∗ alternativno, program i podaci se unose iz periferne memorije o kojoj će biti kasnije reči

5

centralnu memoriju računara. Na primer, kod najmanjih mikroračunara - 8 bitni mikroračunari - dužina adrese je dva bajta, tj. 16 bitova pa najveća moguća adresa predstavlja najveći 16-to cifreni binarni broj

( )1111111111111111 2 1 65535216= − =

odnosno maksimalan broj adresa (adresni prostor) s obzirom da on uključuje i nultu adresu je:

( )2 1 1 2 6553616 16− + = = Jedinica memorije 1KB (kilobajt) prestavlja 210=1024 bajtova pa se umesto 65536 lokacija odnosno bajtova kaže 64KB. Dakle maksimalna centralna memorija 8-bitnih računara je po pravilu 64KB. Tačnije rečeno, može se instalirati i veća memorija ali pri izvođenju nekog programa na raspolaganju je ne više od 64KB (od toga još treba oduzeti deo koji pripada ROM memoriji, što se vidi u daljem tekstu). Veće jedinice kapaciteta memorije su megabajt (MB) i gigabajt (GB):

1 2 21 2 2

10 20

10 20

MB KB BGB MB KB

= =

= =

Centralna memorija je podeljena na ROM (Read Only Memory) u kojoj se trajno čuvaju neophodni programi za startovanje i osnovne funkcije računara i u koju korisnik ne može da upisuje svoje podatke ili programe i na RAM (Random Access Memory) koja je namenjena pamćenju korisnikovih podataka i programa. RAM i ROM se razlikuju po izvedbi i RAM je izbrisiv (briše se sadržaj memorije posle isključenja napoja) a ROM permanentan ili neizbrisiv. Za trajno čuvanje korisnikovih programa i podaka koristi se periferna memorija (PM). Slično ROM-u, permanentna je, ali se hardverski razlikuje od ROM-a i predstavlja magnetski medijum nanet na odgovarajuću podlogu. Primeri periferne memorije su: disketa (floppy - disk) i fiksni disk (hard - disk). Za razliku od centralne memorije, periferna memorija nije direktno adresibilna tj. CPU ne može na osnovu adrese da pristupi pojedinom podatku. Zato je neophodno da se iz periferne memorije podaci i program pre obrade prenesu u centralnu memoriju. S obzirom da nije adresibilna, periferna memorija može u principu da bude neograničena. Danas se već koriste hard diskovi sa više gigabajta memorija.

Centralna procesna jedinica Centralnu procesnu jedinicu (CPU) čine aritmetičko logička jedinica (ALU) i kontrolna jedinica (CU). Kod mikroračunara ta dva dela su hardverski objedinjena u mikroprocesor. U ALU se izvode elementarne aritmetičke i logičke operacije. Za prihvatanje operanada i rezultata operacije služi u ALU specijalni registar koji se zove akumulator (ACC). Termin registar označava lokaciju koja ima posebnu namenu, pa za razliku od obične memorijske lokacije može da ima i dodatne mogućnosti kao što su pomeranja svih bitova u registru u levo ili u desno, povećanje ili smanjenje sadržaja registra za 1 itd. Po pravilu, u akumulatoru se pre izvršenja neke binarne operacije nalazi prvi operand, a po izvršenju operacije rezultat. Pored toga ACC služi i kao prihvatni registar pri unošenju podataka (podaci u užem smislu i programi) preko ulazne jedinice. Naime prenos podataka do CM ide preko ALU tj. akumulatora; (mada postoji i direktan prenos bez učešća µP (DMA-Direct Memory Assess), kada se podaci unose sa periferne memorije. Kapacitet akumulatora određuje dužinu podatka (broj bitova) koji se može obraditi u jednom koraku (izvršavanjem jedne instrukcije) u ALU. Grupa bitova koja se kao celina obrađuje u ALU pri izvršenju neke elementarne aritmetičke ili logičke operacije (tj. koje može da stane odjednom u ACC) naziva se računarska reč. Kod 8-bitnih računara ACC je 8-bitni registar pa je računarska reč=1B.

6

Računarska reč, tj kapacitet ACC može da bude 2B tj. 16 bita i za takav računar tj. mikroprocesor kažemo da je 16-bitni. Kod 32-bitnog računara, kapacitet ACC je 4B Kontrolna jedinica (CU) upravlja izvršenjem programa. Instrukcije programa (mašinske instrukcije) su smeštene u centralnoj memoriji u nizu susednih lokacija. CU pribavlja instrukcije na osnovu adresa, pa je neophodan registar u kome će biti generisana adresa na kojoj se nalazi sledeća instrukcija koju treba pribaviti. To je programski brojač (PC) u kome pre startovanja programa treba da se nađe adresa na kojoj je zapamćena prva instrukcija u mašinskom programu - početna adresa. Prihvatni registar za instrukciju u CU naziva se instrukcijski registar (IR). Svaki put kada pribavi sadržaj nove memorijske lokacije, tj. novu instrukciju ili deo instrukcije (pošto, kao što ćemo kasnije videti instrukcija može da zahteva za memorisanje više od jedne lokacije) sadržaj PC registra se automatski povećava za 1 (inkrementira) tako da u njemu bude adresa sledeće lokacije. Kažemo da se program izvršava sekvencijalno, tj. jedna po jedna naredba u redosledu u kome su smeštene u memoriji. Izuzetak od ovog pravila je slučaj kada u toku izvršavanje neke instrukcije skoka. Tada, ako je zadovoljen zadati uslov, akciju treba preneti ne na sledeću nego na neku drugu naredbu u programu i sadržaj PC se ne inkrementira već se u njega unosi adresa lokacije u kojoj se nalazi instrukcija na koju treba “skočiti”. Da bi je CU mogla “razumeti” tj. dešifrovati, mašinska instrukcija mora imati strogo određenu formu. Ona se u opštem slučaju sastoji iz dva dela: kod instrukcije ili operacija i adresni deo ili operand. Kod instrukcije zahteva 1 bajt, a adresni deo jedan ili više bajtova. Na primer, instrukciju za storiranje u memoriju tj. preslikavanje sadržaja ACC u određenu memorijsku lokaciju, CU će je prepoznati po prvom bajtu-kodu. Neophodna informacija o tome gde treba storirati sadržaj ACC, sadržana je u vidu 16-bitne adrese u sledeća dva bajta instrukcije koji čine adresni deo. Tako, za storiranje može da izgleda kao:

1001101100000010kod instrukcije

1.bajt adrese

2.bajt adrese6 74 84

1 24 34

6 74 8400000001

U toku izvršavanja posmatrane instrukcije CU aktivira pomoću kontrolnih signala ALU i RAM, a rezultat je da će se tekući sadržaj akumulatora naći u memorijskoj lokaciji sa adresom:

( ) ( )1000000001 2 10513=

Generator taktnog signala Pri vođenju izvršavanja programa CU mora da vremenski sinhronizuje rad pojedinih delova računara. Zato je neophodan pravilan periodičan naponski signal - taktni signal. U sklopu CU ili kao posebna jedinica instaliran je generator takta (timer, clock) koji generiše taktni signal. Idealizovano, vremenski dijagram taktnog signala izgleda kao na sl.2.

logička vrednost 1

logička vrednost 0

Sl.1.2. Taktni signal Dužina periode taktnog signala kod različitih mikroprocesora iznosi od nekoliko stotih delova jedne µs do stotinak ns i manje. Izvršavanje neke mašinske instrukcije (pribavljanje iz memorije, dekodiranje i samo izvršavanje) zahteva u opštem slučaju nekoliko perioda i taj vremenski period se naziva mašinski ciklus. Recipročna vrednost periode taktnog signala predstavlja frekvenciju na kojoj radi mikroprocesor. Manja perioda taktnog signala znači višu frekvenciju, tj. brži rad mikroprocesora.

7

Ulazno-izlazne (I/O) jedinice

Ulazno-izlazne jedinice (I/O) predstavljaju kao i periferna memorija periferne jedinice. One su veza računara sa spoljnim svetom pri čemu binarno kodiraju ulaznu informaciju (ulazna jedinica) a dekodiraju interni kod na izlazu (izlazna jedinica). Primer ulazne jedinice je tastatura. Tipične izlazne jedinice kod jednog mikro računara su monitor i štampač (printer) Periferne jedinice nisu neposredno povezane sa CPU nego posredstvom međusklopa (interface) pomoću koga se rešava problem različite brzine rada CPU i I/O jedinice, kao i problem komuniciranja sa CPU (prepoznavanje adresa, prijem i interpretacija kontrolnih signala). Tako je značajna funkcija interfejsa prihvatanje podataka ili baferovanje (buffer) pa interfejs po pravilu ima više prihvatnih registara koji čine bafer posmatrane I/O jedinice. Tipičan primer je printer kao spora I/O jedinica. Pojedinim I/O jedinicama, CU se obraća pomoću njene adrese, odnosno tačnije, adrese porta koji predstavlja registar (“vrata”) kroz koga podaci ulaze u međusklop neke izlazne jedinice ili izlaze iz međusklopa neke ulazne jedinice. Naime, u opštem slučaju međusklop I/O jedinice ima više portova.

Organizacija mikroračunara Kao što smo videli, mikroračunar sadrži svih šest osnovnih delova digitalnog računara, pri čemu CPU predstavlja mikroprocesor. Sve komponete mikroračunara predstavljaju integrisana logička kola (IC) velikog (LSI) ili vrlo velikog (VLSI) stepena integracije (large scale integration, very large scale integration) te imaju male dimenzije. Integrisano logičko kolo je specijalnom tehnologijom izrađeno iz malog poluprovodničkog kristala. Naziv integrisano označava da pojedine elektronske komponente u logičkom kolu (otpornici, kondenzatori,diode, tranzistori) nisu fizički razdvojene već predstavljaju sićušne delove jedinstvenog kristala. Stepen integracije je utoliko veći ukoliko poluprovodnički kristal datih dimenzija sadrži veći broj elektronskih komponenata tj. ima složeniju funkciju. Računarske komponente su ugrađene u vidu čipova. Čip predstavlja poluprovodničku pločicu smeštenu u kućište sa izvodima (priključcima). Tako mikroprocesor predstavlja jedno VLSI logičko kolo izrađeno na jednom čipu. Pojedini blokovi mikroračunara nisu, kako je to prikazano na sl.1.1. povezani međusobno posebnim vezama (svako sa svakim) već ih povezuju sabirnice ili magistrale (bus). Sabirnica predstavlja skup linija kojima se prenose informacije između pojedinih delova računara, a to su: adrese, podaci (u širem smislu, znači i instrukcije takođe) i kontrolni signali. Tipičan način povezivanja delova kod mikroračunara dat je na sl.1.3. U stvari postoje tri, po funkciji, različite sabirnice: sabirnica podataka (data bus), adresna sabirnica (adress bus) i upravljačka sabirnica (control bus).

8

Sl. 1.3. Šema veza pojedinih delova mikroračunara Adresna sabirnica je jednosmerna i služi za slanje adresa memoriji ili perifernim jedinicama od strane µP. Jedna od jedinica “prepoznaje” svoju adresu i stupa u komunikaciju sa µP. Adresna sabirnica ima onoliko linija koliko bitova ima adresa, na primer 16 kod 8-bitnih računara. Sabirnica podataka je dvosmerna i služi za prenos podataka u oba smera (od µP memoriji ili izlaznoj jedinici i od memorije ili izlazne jedinice u µP). Broj linija na sabirnici podataka je obično jednak broju bitova u računarskoj reči. Tako je data bus 8-bitnog računara 8-linijski. Upravljačka sabirnica služi za prenos upravljačkih signala od µP drugim delovima. Primer upravljačkog signala je R/W (read, write) signal čija jedinična vrednost znači da µP želi podatak od memorije (read), a nulta vrednost znači da µP želi da upiše (write) podatak u memoriju. Taktni signal koji obezbeđuje vremensku sinhronizaciju takođe je upravljački signal. Mikroprocesor mora da dobije povratnu informaciju od dela ili sklopa kome se obratio, da li je trenutno u stanju da izvrši nalog ili je još zauzet izvršavanjem prethodnog zadatka. Zato upravljačka sabirnica obuhvata i status signale ili signale stanja kojima pojedini sklopovi šalju informacije mikroprocesoru da li su spremni (logička vrednost 1) ili ne (logička vrednost 0). Pojedinim sklopovima (tastatura na primer) data je mogućnost da prekinu µP u njegovoj tekućoj aktivnosti pomoću signala zahteva za prekid, pa upravljačka sabirnica uključuje i liniju zahteva za prekid. Dakle neke linije upravljačke sabirnice imaju smer od µP ka ostalim delovima a neke suprotan smer (linija stanja i linija zahteva za prekid).

Pitanja Osnovni funkcionalni delovi digitalnog računara. Šta čini hardver, a šta softver Bit i bajt Šta je RAM i ROM Razlika između centralne (operativne) i periferne memorije Šta je uloga ALU (aritmetičko logičke jedinice) Šta je uloga CU (upravljačka jedinica) Šta je uloga sabirnica

9

ELEMENTI RAČUNARSKE ARITMETIKE Digitalni računar pamti i računa sa brojevima u binarnom brojnom sistemu. Binarni brojni sistem je, kao i nama najbliži dekadni, jedan pozicioni brojni sistem s tim što za razliku od dekadnog sistema u kome je osnova deset, u binarnom sistemu osnova je dva. Pozicioni označava da vrednost neke cifre zavisi od njenog položaja u broju, na primer u decimalnom broju 345.23 prva trojka vredi tri stotine, a druga tri stota dela. Naime 345.23 predstavlja u stvari skraćeni zapis sume

3 10 4 10 5 10 2 10 3 102 1 0 1 2⋅ + ⋅ + ⋅ + ⋅ + ⋅− −

Za neki pozitivan broj: anan-1an-2 . . . a2a1a0.a-1a-2 (1) decimalna tačka u pozicionom brojnom sistemu sa osnovom B (B ≥ 2) gde ai označava cifru, važi: { }a Bi ∈ −0 1 1, , ,L (2)

a a a a a a a B a B a B

a B a B a Bn n n

nn

n− − − −

−−

−−

= ⋅ + ⋅ + + ⋅ +

+ ⋅ + ⋅ + ⋅1 1 0 1 2 1

11

1

00

11

22

L K L

K

. (3)

Za dati primer dekadnog broja imaćemo: B a a a a a= = = = = =− −10 3 4 5 2 32 1 0 1 2; ; ; ; ; Prvo cifarsko mesto sleva (cifra an) najviše vredi i nazvaćemo je najznačajnijom, a poslednja cifra je najmanje značajna.

Binarni, oktalni i heksadekadni brojni sistem Za računarsku aritmetiku, od interesa je binarni brojni sistem. Pri programiranju u mašinskom jeziku i u računarskoj literaturi često se koriste i oktalni (osnova je osam) i heksadekadni brojni sistem (osnova je šesnaest) pomoću kojih se, kao što ćemo videti, u stvari skraćeno prikazuju binarni kodovi. Za binarni brojni sistem imamo: { }B ai= ∈2; ,01 (4a) Za oktalni brojni sistem { }B ai= ∈8 0 1 2 7; , , , ,L (4b) Za heksadekadni brojni sistem { }B a A B C D E Fi= ∈16 0 1 2 9; , , , , , , , , , ,L (4c) Slova A-F iz praktičnih razloga zamenjuju cifre: 10-15

10

Bazu brojnog sistema naznačavaćemo uz pomoć indeksa, na primer: 102510 - dekadni broj 503.278 - oktalni broj A01.B16 - heksadekadni broj Kako prevesti neki broj u nekom drugom brojnom sistemu u dekadni oblik? Postupak se sastoji u primeni jednačine (3) i izračunavanju vrednosti sume u dekadnom brojnom sistemu. PRIMER Prevesti sledeće brojeve u dekadni oblik: a) 1100100.012 b) 317.58 c) 20AB.416 a) 1100100.012 = 1⋅26 + 1⋅25 + 0⋅24 + 0⋅23 + 1⋅22 + 0⋅21 + 0⋅20 + 0⋅2-1 + 1⋅2-2

= 64 + 32 + 4 + 0.25 = 100.2510 b) 317.58 = 3⋅82 + 1⋅81 + 7 + 5⋅8-1 = 207.62510 c) 20AB.416 = 2⋅163+10⋅16+11+4⋅16-1 = 8363.2510 Kako rešiti obrnut problem- iz dekadnog preći u neki drugi brojni sistem? Kao ideja se nemeće obrnut postupak tj. primena jedn. (3) zdesna ulevo. Na primer: 32710 = 5⋅64+7 = 5⋅82+0⋅81+7⋅80 = 5078 Taj postupak je međutim težak za primenu na velike decimalne brojeve pa se koriste sledeći algoritmi:

Prevođenje celih brojeva iz dekadnog u drugi brojni sistem Postupak se sastoji u uzastopnom deljenju polaznog broja a, osnovom B sistema u koji se broj prevodi. Kada se a podeli sa B dobija se celobrojni rezultat a1 i ostatak r1, koji predstavlja najmanje značajnu cifru p1. Deljenjem rezultata a1 sa B dobija se a2 i ostatak r2 koji predstavlja drugu cifru zdesna ulevo. Postupak se ponavlja sve dok rezultat deljenja ne postane manji od B, i on predstavlja najznačajniju cifru pn. Kao rezultat dobijamo a10→(pn,...,p2p1)B PRIMER Broj 33510 prevesti u binarni, oktalni i heksadekadni oblik. 335:2 167 i ostatak 1 83 “ ” 1

11

41 “ ” 1 20 “ ” 1 10 “ ” 0 33510 = 1010011112 5 “ ” 0 2 “ ” 1 1 “ ” 0 335:8 41 7 5 1 33510 = 5178 335:16 20 15 1 4 33510 = 14F16

Prevođenje decimalnih brojeva iz dekadnog u neki drugi brojni sistem Prevođenje decimalnih brojeva sastoji se u posebnom prevođenju celobrojnog i decimalnog dela broja. Zato ćemo dati metod za prevođenje pravih razlomaka (decimalan deo nekog broja). Postupak se sastoji u uzastopnom množenju decimalnog dela prethodnog rezultata osnovom novog brojnog sistema B. Množenje se prekida kada se pojavi nula kao rezultat ili kada se postigne željena tačnost. Celobrojni delovi dobijenih proizvoda biće redom cifre broja u novom brojnom sistemu. PRIMER Broj 0.687510 prevesti u binarni oblik: 0. 6875 0.10112 1. 375 x2= 0. 75 x2= 1. 5 x2= 1. 0 x2= Neki pravi razlomak, koji u obliku decimalnog broja ima u nekom brojnom sistemu konačan broj cifara, u nekom drugom brojnom sistemu može biti beskonačan periodičan decimalan broj. Prevedimo, na primer, dekadni broj 0.1 u binarni sistem:

0. 1 ( )0.000110011678678

K 2 0. 2 0. 4 0. 8 Vidimo da je rezultat beskonačan periodičan 1. 6 decimalan broj. 1. 2 0. 4 0. 8 1. 6

12

1. 2 . U ovakvim slučajevima nemoguć je tačan prelaz iz jednog u drugi brojni sistem već se unapred definiše tačnost, tj. broj decimala rezultata. Pri tom se, radi smenjenja greške, poslednja tražena decimala povećava za jedan, ukoliko je sledeća jednaka ili veća od polovine osnove B - pravilo zaokruživanja. PRIMER Broj 0.9310 prevesti u oktalni sa tačnošću od 4 decimale: 0. 93 x8 0.73418 7. 44 3. 52 4. 16 1. 28 2. 24 Neki decimalni broj koji je veći od 1 tj. ima i celobrojni deo, prevodi se u drugi brojni sistem tako što se posebno prevodi celobrojni deo a posebno decimalni, opisanim postupcima. PRIMER Broj 173.9310 prevesti u oktalni sistem sa tačnošću od četiri decimale. 173:8 21 5 2 5 17310 = 2558 U prethodnom primeru smo izračunali 0.9310 ≈ 0.73418 pa konačno imamo 173.9310 ≈ 255.73418

Prevođenje između binarnog, oktalnog i heksadekadnog brojnog sistema Između binarnog i oktalnog brojnog sistema postoji specijalan odnos jer je: 8 = 23

Slično, za osnove heksadekadnog i binarnog sistema važi:

Pošto je peta decimala (2) manja od 4, po pravilu zaokruživanja četvrta poslednja tražena decimala rezultata ostaje nepromenjena.

13

16 = 24 Osobina, da je osnova jednog brojnog sistema jednaka celobrojnom stepenu osnove drugog brojnog sistema omogućuje brz prelaz iz jednog u drugi sistem. Neka, na primer, treba oktalni broj 3178 prevesti u binarni. Počećemo od jednačine (3): 3178 = 3⋅82 + 1⋅81 + 7⋅80 Svaku od cifara oktalnog broja možemo da prevedemo u trocifreni binarni broj (najveća cifra zahteva tri binarne cifre). U posmatranom primeru: 38→0112 ; 18→0012 ; 78→1112 Ako u sumu na desnoj strani oktalne cifre zamenimo ekvivalentnim trocifrenim binarnim brojevima i smenimo 8 = 23, 3178 = (011)⋅26 + (001)⋅23 + (111)⋅20 = = (0⋅22 + 1⋅2 + 1)⋅26 +(0⋅22 + 0⋅2 + 1)⋅23 + (1⋅22 + 1⋅2 + 1)⋅20 = = 0⋅28 + 1⋅27+1⋅26+0⋅25+0⋅24+1⋅23+1⋅22+1⋅21+1⋅20 = ={{{011001111

3 1 72 = 110011112

Zapažamo da se iz oktalnog prelazi u binarni broj jednostavnom zamenom svake oktalne cifre ekvivalentnim trocifrenim binarnim brojem. Uopšte nije teško izvesti sledeće pravilo: Ako između dva brojna sistema B1 i B2 postoji veza: B B n En

1 2= ∈; 10 Iz sistema sa osnovom B1 se prelazi u sistem sa osnovom B2 tako što se svaka cifra u prvom sistemu prevede u n-to cifreni broj u sistemu B2. 20 Iz sistema sa osnovom B2 u sistem sa osnovom B1 tako što se levo i desno od decimalne tačke u broju sa osnovom B2 formiraju grupe od po n cifara i zamene izračunatim vrednostima koje predstavljaju cifre u sistemu B1 PRIMER Prevesti binarni broj 1011010.00012 u oktalni i heksadekadni oblik: {{{ {{1011010 000100

1 3 2 0 48132 04. → .

{1011010.0001

5 1165 1

A123 123→ A.

Uočavamo da oktalni i heksadekadni oblik mogu da posluže za sažeto prikazivanje binarnih brojeva. Tako umesto datog binarnog broja možemo skraćeno da pišemo 5A.116, što je oko četiri puta kraće. Binarni kod je lako reprodukovati:

}

}

}0101

1010

00011011010.00015 1A →

14

Preostaje problem prevođenja između oktalnog i heksadekadnog sistema. Kao ideja se nameće prelaz preko binarnog sistema kao intermedijalnog. PRIMER Prevesti broj 5043.128 u heksadekadni oblik 504312 23 288

2 3 2 816. . .→ →1011000100011 00101000

A

A123123123 123123

Binarno kodirani dekadni brojevi Dok je prelaz iz binarnog u oktalni ili heksadekalni oblik ili kod jednostavan to nije slučaj sa konverzijom između binarnog i dekadnog brojnog sistema. Da bi se ubrzalo binarno kodiranje pri unošenju brojeva i dekodiranje (konverzija binarnog u dekadni oblik) pri izlazu rezultata , u džepnim kalkulatorima i kod digitalnih instrumenata često se dekadni brojevi umesto da se prevedu u binarne samo binarno kodiraju. Rezultat je BCD (Bynary Coded Decimal) dekadnog broja. Postoji više načina kodiranja ili više BCD kodova i najpoznatiji je 8421 BCD kod. Analogno binarnom kodiranju oktalnih i heksadekadnih brojeva, 8421 BCD kod nekog dekadnog broja se dobija jednostavno zamenom svake od cifara u dekadnom broju četvorocifrenom binarnom vrednošću. PRIMER 2.8. Formiraj 8421 BCD kod broja 809210

}{}{

1000

0000

1001

001010000000100100108 0 9 2 →

PRIMER 2.9. Dekodiraj BCD broj 10101111000

}}}010101111000 578

5 7 8

10→

Osnovne računske operacije u pozicionom brojnom sistemu U pozicionom brojnom sistemu sa bilo kojom osnovom B osnovne računske radnje se obavljaju potpuno analogno kao u dekadnom brojnom sistemu (B=10). Naime, umesto da se manipuliše sa desetkama pri "pamćenju" i "pozajmljivanju" u toku sabiranja i oduzimanja, manipuliše se osnovom B. Uočimo analogiju kod sabiranja na sledećim primerima: 11 11 1 111 58610 5768 1101112 + 17510 + 1738 + 101112

15

76110 7718 10011102 Jedinice iznad cifara prvog sabirka označavaju prenos (carry) iz prethodnog sabiranja. Pri oduzimanju u brojnom sistemu sa osnovom B≠10 ne pozajmljuje se sa prvog značajnijeg cifarskog mesta desetka, već osnova B. Primer: 7 2 516 11012 - 3 C D16 - 1102 3 5 816 1112 Izvršimo sledeće množenje paralelno u dekadnom i oktalnom brojnom sistemu: 4610 x 3710 568 x 458 322 346 4610 = 568 +138 +270 3710 = 458 170210 32468 Provera: 32468=3⋅83+2⋅82+4⋅8+6=170210 Kako smo računali: 568 x 58=3468 , 6 x 5=30=3⋅8+6 Znači 6 pišem a 3 osmice pamtim tj. prenosim 3 na rezultat sledećeg množenja: 5 x 5=25 ; 25+3=28=3⋅8+4 Dakle, 4 pišem a 3 prenosim. Za računarsku aritmetiku od interesa je množenje u binarnom sistemu. Na primer: 11011 x 1011 11011 11011 11011 100101001 S obzirom da su cifre binarnog sistema 0 i 1 množenje se svodi na pravilno “potpisivanje” prvog činioca (množenje nulom znači pomeranje dva mesta ulevo) i sabiranje, drugim rečima u binarnom brojnom sistemu množenje se svodi na sabiranje. Deljenje u binarnom brojnom sistemu se svodi na uzastopno oduzimanje delioca.

16

Uočimo to na primeru: 100101001 : 11011 = 1011 -11011 101000 -11011 11011 -11011

Svođenje oduzimanja na sabiranje uz pomoć komplementa Komplement se koristi u kompjuterskoj aritmetici za koju je karakteristično da svi brojevi imaju jednaku dužinu (isti broj cifara) jer se pamte u jednakim memorijskim lokacijama. Poćićemo dakle od pretpostavke da svi brojevi imaju isti broj cifara, koji je uz to bar za jedan veći od broja cifara u najvećem po apsolutnoj vrednosti broja. Neka na primer posmatramo u dekadnom brojnom sistemu skup pozitivnih celih brojeva koji su najviše četvorocifreni. U skladu sa postavljenim uslovom sve brojeve ćemo posmatrati kao petocifrene. Tako će oni kao najznačajniju cifru imati nulu koja, kao što ćemo kasnije videti, u stvari predstavlja znak “+”. Na primer brojeve 128010 i 45210 ćemo posmatrati u obliku: 01280 ; 00452 U brojnom sistemu sa osnovom B definiše se B i (B-1) komplement nekog broja. (B-1) komplement nekog broja se dobija kada se svaka od cifara u datom broju zameni njenom dopunom do B-1. Na primer 9 komplement broja 0045210 biće: 99547 B komplement nekog broja, koga ćemo označavatii malim slovom c u indeksu dobija se kada se na najmanje značajnu cifru (B-1) komplementa doda jedinica. Na primer: (00452)c=99547=99548 +1 Pokazaćemo sada da se problem oduzimanja: 01280-00452 može rešiti sabiranjem 01280+(00452)c Zaista: 01280 01280 -00452 +99548 00828 100828 Dobijamo korektan rezultat ako ignorišemo prenos sa najznačajnijeg cifarskog mesta.

17

Uopšte, važi da se oduzimanje pozitivnog broja y od pozitivnog broja x u brojnom sistemu sa osnovom B može zameniti sabirnajem broja x i komplementa broja y (uz ignorisanje konačnog prenosa). Formalno ćemo pisati x - y = x + (-y) = x + yc (5) Iz (5) sledi važna relacija: -y → yc (6) gde operator → znači ono na levoj strani zamenjujemo onim sa desne strane. Negativni brojevi se zamenjuju (prikazuju) B-komplementom odgovarajućeg pozitivnog broja. Dakle u aritmetici sa komplementima, negativni brojevi se prikazuju preko B-komplemeta. Kao rezultat, na najznačajnijem cifarskom mestu figuriše cifra (B-1) koja tako prestavlja u stvari znak “-”. Na primer: - 00452 → 99548 Rešimo sada u aritmetici sa komplementima problem: 452-1280 U skladu sa (5): 00452 - 01280 → 00452 + (01280)c (01280)c = 98719 = 98720 + 1 00452 +98720 99172 Rezultat je negativan! Kao negativan, rezultat u stvari predstavlja komplement odgovarajućeg pozitivnog broja. Koji je to broj? -y →yc = 99172 ; y=? Ako relaciju (6) formalno primenimo na (-y): -(-y) → (-y)c → (yc)c Kako je -(-y) = y, sledi: y→(yc)c (7) Dakle, ako imamo (yc) onda broj y dobijamo kao komplement komplementa. U našem primeru: 99172c = 00827 = 00828 +1 Dakle 99172 predstavlja u stvari broj -00828 što je tačan rezultat.

18

U kompjuterskoj aritmetici se koristi opisan postupak zamene oduzimanja sabiranjem tj. negativni brojevi u računaru su prikazani u obliku 2 komplementa odgovarajućih pozitivnih brojeva. Kako se radi o binarnom brojnom sistemu, znači da se sve binarne računske operacije u računaru svode na sabiranje!. To u mnogome pojednostavljuje hardversko rešavanje aritmetičkih operacija-neophodan je samo digitalni elektronski sklop (logičko kolo) za sabiranje. Da budemo precizniji, neophodna su i jednostavna kola za komplementiranje i pomeranje svih bitova u broju za jedno mesto ulevo ili udesno (shift operacija). PRIMER Kako izgledaju operacije e=a+b ; g=a-b ; i=e-g u računaru gde su : a=2410 ; b=4910, ako se za pamćenje celih brojeva koriste lokacije dužine 1 bajta? 2410= 110002 ; 4910= 1100012 Tako će u računaru biti: a= 0 0011000 ; b=0 0110001 Nule na mestu najznačajnijeg bita govore o tome da su brojevi pozitivni. e= a+b = 00011000 + 00110001 e = 01001001 (e>0) g=a-b = a+bc bc = (00110001)c=11001110 bc = 11001111 +1 g=00011000 +11001111 g=11100111 (g<0) -g=(11100111)c= 00011000 = 00011001 +1 g=-(24+23+1) = -2510 i= e-g = e+gc gc=(11100111)c= 00011000 = 00011001 +1 i= 01001001 +00011001 i= 01100010 (i>0) i= 26+25+2 = 9810

19

Celi brojevi u računarima i računske operacije sa njima Za pamćenje označenih celih brojeva (integer) u mikroračunarima u normalnom radu se angažuju (pri obradi programa napisanih u višim programskim jezicima) dva bajta odnosno dve memorijske lokacije.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

znak broja

Sl.2.1 Registrovanje celih brojeva Bitove u dvobajtnom broju označavaćemo sa b0 - b15. Pri tome, bitovi b0 - b7 pripadaju manje značajnom bajtu (Low byte), a bitovi b8 - b15 značajnijem bajtu (High byte). Najznačajniji bit b15 čuva informaciju o znaku broja:

b za znak za znak

15

0

1=

-+

Tako se označeni celi celi brojevi (integer) pamte (kodiraju) u vidu 2 - komplementa. PRIMER Prikaži sadržaj memorijskih lokacija u kojima su smešteni brojevi x = 128510 ; y=-128510 = -x. Postupkom datim u pogl. 2.1.1. dobijamo binarni oblik broja x: 128510 = 101000001012 U dva bajta memorije: x=0000010100000101 ili skraćeno uz pomoć heksadekadnog prikaza (pogl. 2.1.3.): x=050516 Za y=-x imamo: y=(0000010100000101)c y=1111101011111010=1111101011111011 +1 Rezultat je praktičnije tražiti u heksadekadnom sistemu: y=(050516)c=FAFA = FAFB16

20

+1 Kako je kapacitet memorijske lokacije ograničen, postavlja se pitanje koliki je najveći, a koliki najmanji ceo broj koji se može zapamtiti (registrovati). Najveći ceo broj xmax biće: xmax=0111111111111111 = 1000000000000000 - 1 xmax= 215 - 1= 32768 - 1 = 32767 To je relativno mali broj i ako se u nekom problemu pojavljuju veći celi brojevi, kako prevazići to ograničenje ? U višim programskim jezicima (BASIC, FORTRAN, PASCAL, C) postoje komande koje kao rezultat imaju angažovanje duplo duže lokacije (4 bajta) za registrovanje celih brojeva (long integer). Tada se gornja granica pomera na: xmax= 231 - 1 = 2147480000 što može biti dovoljno. Ukoliko i to ne rešava problem, preostaje da se celi brojevi u računaru obrađuju kao realni, čime se značajno povećava gornja granica. To se međutim, kao što ćemo u narednom poglavlju videti, mora “platiti” gubitkom tačnosti u toku računskih operacija. Najmanji ceo broj koji se može registrovati u dvobajtnoj lokaciji, xmin (veliki po apsolutnoj vrednosti negativan broj ) nije jednak -xmax iz razloga što se negativni brojevi registruju u vidu 2 - komplementa. Tako broj x=1111111111111111=FFFF16 nije, što se može u prvi mah pomisliti, traženi najmanji broj, on ustvari predstavlja broj -1 jer je: (FFFF)c=000116 Najmanji broj u računaru ima oblik: 1000000000000000=800016 pa je: xmin=- (800016)c=-7FFF=-800016 +1 xmin=-8 163 = -23 212 =-215 xmin=-32768 Što se računskih operacija tiče, one se svode na sabiranje kao što smo to u prethodnim poglavljima videli. Deljenje, kao što znamo, nije definisano na skupu celih brojeva i po pravilu se u računaru kao rezultat delenja dva cela broja, tzv. celobrojno deljenje, uzima ceo broj koji predstavlja celobrojni deo tačnog rezultata.

21

PRIMER Šta će se u računaru sa jednobajtnom memorijskom lokacijom dobiti pri izvođenju sledećih operacija: j=a · b ; k=b:a gde su a=2410; b=4910. (vidi primer 2.10) Najveći označen ceo broj u 1 - bajtnoj lokaciji će biti: xmax=27-1 = 127 Kako je: 24 · 49>127 doći će do aritmetičkog prelivanja, odnosno računar neće moći da dobije rezultat, o čemu korisnik dobija odgovarajuće upozorenje (aritmetic overflow). Pri delenju, 00110001:00011000 postupak se prekida, pošto se dobija celobrojni deo rezultata: 110001 : 11000 = 10 - 11000 000001 Dakle rezultat će biti: k=102 = 210 što predstavlja celobrojni deo tačnog rezultata, 2.041666...

Realni brojevi u računaru Da se podsetimo najpre da se u dekadnom sistemu realni brojevi mogu zapisati u dva oblika: oblik sa nepokretnom decimalnom tačkom (fixed point number) i eksponencijalni oblik ili oblik sa pokretnom decimalnom tačkom (floating point number). Na primer: 0 0257 2 57 10 0 0257 10 0 00257 102 0 1. . . . ...

oblik sa fiksnom dec. tackom

oblik sa pokretnom dec. tackom

123 1 24 34= ⋅ = ⋅ = ⋅ =−

Jedan od bekonačno mnogo oblika sa pokretnom decimalnom tačkom, usvojen je kao standardni i zove se normalizovani eksponencijalni oblik. U posmatrnom primeru to je: 0.257 - 10-1 gde se predeksponencijalni faktor 0.257, koji predstavlja pravi razlomak čija je prva decimala različita od nule, naziva mantisa, a stepen osnove, -1 naziva se eksponent.

22

Uopšte, u nekom pozicionom brojnom sistemu sa osnovom B, normalizovana eksponencijalna forma broja x je: x x Bm

xe= ± ⋅ (8) 0.1≤ xm <1 (8a) gde xm označava mantisu, a xe eksponent. Na primer: -1011.012=-0.1011012 2100 ; xm=0.1011012; xe=1002 0.007318=0.7318 8-2 ; xm=0.7318; xe=-28 U oba primera smo baze sistema 2 i 8 ostavili u dekadnom obliku umesto da ih prikažemo u odgovarajućem brojnom sistemu: 2=102 ; 8=108 da bi bilo uočljivije o kojoj se osnovi radi. Naime, u bilo kom brojnom sistemu, osnova sistema kao broj, ima isti kod: B=10B 10=1010; 2=102; 8=108; 16=1016 . . . Važan pojam vezan za realne brojeve je broj značajnih cifara u broju, i on je u direktnoj vezi sa tačnošću informacije koju sadrži posmatrani broj. Neka smo, na primer, na analitičkoj vagi, za koju znamo da ne može da registruje mase manje od 10-4 g, izmerili 1 g neke supstance. Za masu supstance x pisaćemo: x=1.0000 g, a ne x=1 g, da bi naglasili tačnost informacije koju vaga daje. Ako smo pak izmerili 0.0205 g, nećemo to pisati kao 0.02050, već samo sa četiri decimale, y=0.0205 g jer nula na petoj decimali nije rezultat merenja. Sve cifre u broju x su značajne cifre (ukupno 5), dok broj y ima samo 3 značajne cifre, poslednje tri. Naime, nule na početku broja (“leve“ nule) ne predstavljaju značajne cifre, dok su nule na kraju broja (“desne” nule) značajne, kao i sve nule izme|u dve značajne cifre. Zašto “leve“ nule nisu značajne biće jasno ako masu 0.0205 g prikažemo u različitim jedinicama: 0.0205 g=20.5 mg=0.0000205 kg . . . Očigledno, njihov broj varira zavisno od odabrane jedinice mere, te ne predstavlja informaciju o tačnosti merenja (koja je nezavisna od odabrane jedinice mere). Treba zapaziti da prema datom pravilu, u normalizovanom eksponencijalnom broju, sve cifre decimalnog dela mantise predstavljaju značajne cifre. Na primer: y=0.205 10-1 g=0.205 102 mg=0.205 10-4 kg U kompjuterskoj aritmetici, broj značajnih cifara daje informaciju o tačnosti sa kojom je neki realan broj registrovan u memoriji. Realni brojevi se u memoriji računara čuvaju u normalizovanom eksponencijalnom binarnom obliku. Dakle memorijski prostor za neki realan broj ima dva dela: deo za mantisu i deo za eksponent. Standardna organizacija registrovanja realnog broja data je na sl.2.1.

23

Znak eksponenta 1.bajt

Znak broja 2.bajt 3.bajt 4.bajt

xe xm

Sl.2.2. Registrovanje realnih brojeva

Realan broj u memoriji zauzima četiri bajta, odnosno kod mikroračunara to su četiri memorijske lokacije. Prvi bajt služi za pamćenje eksponenata i za njega važe pravila za pamćenje celih brojeva: Najznačajniji bit predstavlja znak eksponenta, a negativni eksponenti se čuvaju u obliku 2 - komplementa. Prvi (najznačajniji), od ukupno 24 bita koliko je rezervisano za mantisu, čuva informaciju o znaku broja, a ostali predstavljaju decimale mantise. Pri tome treba imati u vidu na osnovu definicije normalizovane eksponencijalne forme (8, 8a) da ako je najznačajniji bit jednak nuli (pozitivna mantisa), onda bit iza najznačajnijeg mora biti jednak jedinici. Za negativne brojeve u prostoru za mantisu smešta se 2 - komplement mantise. Uporedimo sada interne ili mašinske kodove brojeva: -4 , ceo broj -4.0 , realan broj Interni kod ( oblik u kome je broj u memoriji) celog broja -4 dugačak je 16 bitova (2 memorijske lokacije): -4=-1002=-0000000000000100=-000416 -4→(000416)c=FFFC16=1111111111111100 Da bi smo odredili izgled realnog broja -4. u memoriji, prikazaćemo ga u normalizovanom eksponencijalnom binarnom obliku. -4.=-100.=-0.1⋅211 Prvi bajt internog koda je eksponent: xe=00000011=0316 Tri bajta predstavljaju mantisu xm, a pošto je broj negativan:

xm22 nule c

=

0100000...01 24 34 =(40000016)c=BFFFFF=C0000016

Dakle, izgled broja -4. u memoriji je: {− → =4 03 00000 16.

x x x xe m e m

C124 34 1 24 34 124 3400000011110...0

PRIMER a) Brojeve x=-E1C.0716 i y=1287.5910 prevesti u oktalne sa tačnošću od 4 decimale i potom ih sabrati. b) Prikazati izgled rezultata u memoriji računara. a) Prvi broj ćemo prevesti u oktalni posredstvom binarnog oblika:

24

E1C.0716 → 111000011100.000001112 → 7034.0168 x=-7034.0168 Za drugi broj posebno konvertujemo celobrojni, a posebno decimalni deo. 1287:8 128710=24078 160 7 20 0 2 4 0. 59 x 8 Kako je peta decimala 5, veća od polovine osnove, po 4. 72 pravilima zaokruživanja: 5. 76 0.5910=0.45618 6. 08 0. 64 5. 12 y=2407.45618 x+y=-7034.016+2407.4561 Oduzimamo manji od većeg broja 7034.016 - 2407.4561 4424.33778 Rezulatat je: z=x+y=-4424.33778 b) -z=4424.3377=100100010100.011011111111 Broj ima ukupno 8x3=24 binarne značajne cifre. U prostoru od 3 bajta, predviđenom za znak broja (prvi bit) i decimale mantise (preostala 23 bita) ima mesta za 23 binarne značajne cifre, tj. broj z se nemože tačno prikazati u memoriji. Neophodno je zameniti ga 23-bitnim brojem, i to se može izvesti: - odsecanjem, tj. jednostavnim odbacivanjem viška bitova - zaokruživanjem na 23 značajne cifre, čime se smanjuje greška

odsecanjem

zaokruživanjem

-z= 100100010100.01101111111|1 100100010100.01101111111

100100010100.01110000000

Pri zaokruživanju, pošto je najznačajniji odbačeni bit jednak 1, (polovina osnove) na poslednju značajnu cifru dodaje se 1. Iz oblika sa fiksnom decimalnom tačkom prelazimo u normalizovani eksponencijalni oblik, da bi odredili mantisu i eksponent.

25

z =− ⋅

− ⋅

0.100100010100011011111110.10010001010001110000000

1100

110022

( )( )odsecanjezaokruzivanje

ze=1100=00001100=0C16 Pošto je broj negativan, u prostoru za mantisu smešta se 2-komplement mantise, koga možemo odrediti uz pomoć heksadekadnog koda:

( )( ) ( )( ) ( )

z48A37F B75C81 odsecanje48A380 B75C80 zaokruzivanjem c

c

c

16 16

16 16

==

Konačno, izgled broja z u memoriji je u heksadekadnom prikazu:

)njezaokruziva(0CB75C80)odsecanje(0CB75C81

:z

PRIMER Dati su sadržaji memorijskih lokacija u kojima su smešteni realni brojevi x i y. x: 04A16900 y: FE560000 Prikazati brojeve x i y u heksadekadnom brojnom sistemu u obliku sa fiksnom decimalnom tačkom. xe=0416=410 xm : A16900 U pitanju je komplement mantise jer je prvi bit jednak jedinici. Nalazimo mantisu: (A1690016)c=5E96FF=5E970016 +1 xm=0.101111010010111 Pošto je broj negativan: x x B.D2Em

xe= − ⋅ = − = −2 2 161011.11010010111 ye : FE (u pitanju je negativan eksponent, u obliku komplementa) ye=-(FE16)c=-0216=-210 ym : 560000, ym=0.101011 y y 0.2Bm

ye= ⋅ = ⋅ = =−2 2 2160.101011 0.00101011

Ograničenja pri registrovanju realnih brojeva

26

S obzirom na ograničenu dužinu (broj bitova) memorijskog prostora za eksponent, postoji gornja granica veličine realnog broja koji se može registrovati, xmax. Naćićemo je kao: x (x )max m max

(x )e max= ⋅2 Prikaz maksimalne mantise (xm)max u računaru je: 0111...1

23124 34

To je 0.111...1 1 0.00...123 23

231 2124 34 123= − = − −

Maksimalan eksponent je: (xe)max=27-1=127, pa imamo: xmax=(1-2-23) 2127 ≈ 1.708 1038 ≈ 1038 Analognim postupkom za najmanji realan broj, koji se može registrovati, dobijamo: xmin=-xmax ≈ -1.708 1038 ≈ -1038 Interne vrednosti realnih brojeva koje su po apsolutnoj vrednosti veći od granice: x>xmax biće jednake gornjoj granici: x = xmax (aritmetic overflow). Dužina eksponenta uslovljava takođe i donju granicu apsolutne vrednosti broja ispod koje su svi brojevi za računar jednaki nuli. Ovo ograničenje bi mogli nazvati ograničenje preciznosti registrovanja. xmin=( )min

( )minxmxe⋅ 2

(xm)min=0.1 (xe)min=-27=-128 xmin=2-1 2-128=2-129 ≈ 1.46 10-39 ≈ 10-39 Dakle, ako je : x< xmin interna vrednost broja x biće jednaka nuli x=0 (aritmetic underflow). Konačno, treće ograničenje - ograničena tačnost registrovanja, posledica je ograničene dužine mantise u memoriji. Tačnost registrovanja realnih brojeva tražićemo u vidu broja značajnih dekadnih cifara, koje se mogu registrovati. Najpre možemo da odredimo broj značajnih binarnih cifara - on je jednak broju bitova u prikazu decimala mantise: 23. Dakle, vrednost najmanje značajne cifre koja se može registrovati je 2-23 Kako je: 10-7< 2-23 < 10-6 znači da je poslednja dekadna cifra mantise, koja se može tačno registrovati približno 10-7, pa je približno, tačnost prikazivanja realnih brojeva jednaka 7 značajnih cifara.

27

Računske operacije sa realnim brojevima U pitanju su operacije sa brojevima u eksponencijalnom obliku koji se sastoje od odgovarajućih operacija između predeksponencijalnih faktora i eksponenata operanada. Tako se sabiranje dva realna broja obavlja u sledećim koracima: 10 Dovođenje brojeva na isti eksponent denormalizacijom predeksponencijalnog faktora (mantise) manjeg od brojeva 20 Sabiranje predeksponencijalnog faktora jednog i mantise drugog broja 30 Normalizacija, tj. dovođenje predeksponencijalnog faktora zbira u interval [0.1,1), odgovarajućim korigovanjem eksponenta Oduzimanje se svodi na sabiranje, tj. sabira se predeksponencijalni faktor prvog broja sa komplementom predeksponencijalnog faktora drugog broja. Množenje uključuje: 10 Množenje mantisa 20 Sabiranje eksponenata 30 Normalizacija rezultata i definisanje njegovog predznaka Deljenje uključuje: 10 Deljenje mantisa 20 Oduzimanje eksponenata 30 Normalizacija rezultata i definisanjenjegovog predznaka Za realizaciju operacija sa realnom brojevima neophodno je raspolagati sklopovima za operacije sabiranja i komplementiranja celih brojeva, pomeranja (shift) i inkrementiranja i dekrementiranja (povećanja ili smanjenja vrednosti celog broja za 1). Zbog različitog načina registrovanja u memoriji realni i celobrojni operandi su međusobno imkompatibilni, tj. CPU ne može da izvede operaciju između realnog i celobrojnog operanda. Zato u višim programskim jezicima postoje funkcije (grupe instrukcija) za prevođenje celog broja u realan oblik, kojima se aktivira odgovarajući niz mašinskih instrukcija za transformaciju nekog dvobajtnog celobrojnog operanda u četvorobajtni realni.

28

PITANJA Binarni oktalni i heksadekadni brojni sistem Osnovne računske operacije (sabiranje,oduzimanje,množenje i deljenje) u bin. okt., heksadek. brojnom sistemu (B-1) i B Komplement Kodiranje celih brojeva u računaru (2 bajtni) Sabiranje i odizimanje u aritmetici 2 komplementa Kodiranje realnih brojevi u računaru (4 bajtni)