01_brojni_sistemi

12

Click here to load reader

Upload: -

Post on 24-Oct-2014

32 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 01_Brojni_sistemi

1. Brojni sistemi

Današnji moderni računarski sistemi ne predstavljaju numeričke vrijednosti korištenjem decimalnog brojnog sistema. Da bi razumjeli ograničenja računarske aritmetike, moramo najprije razumijeti kako se brojevi predstavljaju u računaru.

1.1. Pregled decimalnog brojnog sistema

Mi koristimo decimalni brojni sistem (sa bazom 10) već mnogo vremena, tako da smo se navikli

koristiti ga ne razmišljajući. Kada vidite broj kao što je 123, ne razmišljate kolika je vrijednost tog broja; već radije, stvarate mentalnu sliku o tome koliko nečega ovaj broj predstavlja. U stvarnosti, međutim, broj 123 predstavlja:

2 1 01 10 2 10 3 10⋅ + ⋅ + ⋅ ili 123320100 =++ . Svaka cifra koja se nalazi na lijevoj strani od decimalnog zareza predstavlja vrijednost između

nula i devet koja se množi sa rastućim stepenom od deset. Cifre koje se nalaze sa desne strane decimalnog zareza predstavljaju vrijednost između nula i devet koja se množi sa rastućim negativnim stepenom od deset. Na primjer, vrijednost 123.456 se može predstaviti:

2 1 0 1 2 31 10 2 10 3 10 4 10 5 10 6 10− − −⋅ + ⋅ + ⋅ + ⋅ + ⋅ + ⋅ ili 100 20 3 0.4 0.05 0.006+ + + + + .

1.2. Binarni brojni sistem

Najmoderniji računarski sistemi (uključujući IBM PC) rade sa binarnom logikom. Računar

predstavlja vrijednosti korišćenjem dva naponska nivoa (obično 0 i +5V). Sa ova dva nivoa možemo prikazati tačno dvije različite vrijednosti. Ovo mogu da budu bilo koje dvije različite vrijednosti, ali po dogovoru koristimo vrijednosti 0 i 1. Ove dvije vrijednosti odgovaraju dvjema ciframa koje se koriste u binarnom brojnom sistemu

Binarni brojni sistem funkcioniše baš kao i decimalni, uz dva izuzetka: binarni sistem sadrži samo dvije cifre 0 i 1 (za razliku od cifara 0-9), i binarni sistem stepen od dva, a ne deset (drugim riječima baza binarnog sistema je 2, a decimalnog 10). Zbog toga je veoma lako pretvarati binarne brojeve u decimalne. Za svaku ″1″ u binarnom nizu, dodajemo 2n, gdje je n pozicija binarne cifre u nizu brojeći od nulte pozicije. Na primjer, binarna vrijednost 11001010 predstavlja:

7 6 5 4 3 2 1 0

101 2 1 2 0 2 0 2 1 2 0 2 1 2 0 2 128 64 8 2 202⋅ + ⋅ + ⋅ + ⋅ + ⋅ + ⋅ + ⋅ + ⋅ = + + + = . Pretvaranje decimalnih brojeva u binarne je nešto komplikovanije. Naime, decimalni broj

dijelimo sa 2, ostatak dijeljenja uzimamo kao cifru binarnog broja na najnižoj poziciji, a rezultat koristimo za sljedeće dijeljenje sa 2. Ostatak sljedećeg dijeljenja uzimamo kao cifru na sljedećoj poziciji. Postupak dijeljenja ponavljamo sve dok rezultat dijeljenja ne postane jednak nuli. Na primjer, izvršićemo pretvaranje broja 345: 345:2 172 (1) 172:2 86 (0) 86:2 43 (0) 43:2 21 (1) 21:2 10 (1) 10:2 5 (0) 5:2 2 (1)

Page 2: 01_Brojni_sistemi

2:2 1 (0) 1:2 0 (1) Binarni broj koji se dobije je 101011001.

1.3. Organizacija podataka U čistoj matematici binarne vrijednosti se mogu sastojati od neograničenog broja bita. Računari,

s druge strane, u opštem slučaju rade sa određenim brojem bita. Uobičajeni skupovi bita su jedan bit, grupa od četiri bita (koji se nazivaju niblovi – nibbles), grupa od osam bita (tzv. bajtovi – bytes), grupa od 16 bita (koja se naziva riječ – words), i tako dalje.

1.3.1. Biti

Predstavljaju najmanju jedinicu podataka u računaru. Kako jednim bitom možemo da

predstavimo samo dvije različite vrijednosti (obično nula i jedinica) dobijamo utisak da se vrlo malo stavki može predstaviti sa jednim bitom. Ovo nije tačno! Postoji neograničeno mnogo stavki koje mogu biti predstavljene upotrebom jednog bita.

Sa jednim bitom možemo prikazati dva različita događaja. Primjeri za ovo su: nula ili jedan, uljučeno ili isključeno stanje, pravilno ili pogrešno, tačno ili netačno itd. Uglavnom, ne postoji ograničenje u smislu upotrebe samo binarnih tipova podataka.

1.3.2. Niblovi

Nibl je skup od četiri bita. Ovakva grupa podataka je posebno zanimljiva pri razmatranju BCD

(Binary Coded Decimal) i heksadecimalnih brojeva. Četiri bita u grupi predstavljaju jednu BCD ili heksadecimalnu cifru. Sa niblom, možemo da predstavimo do 16 različitih vrijednosti.

1.3.3. Bajtovi

Najbitnija struktura podataka u računarskoj tehnici svakako jeste bajt. Bajt se sastoji od osam

bita i to je najmanja jedinica podataka koja se može adresirati kod svih računarskih arhitektura. Kapacitet memorije svakog računara izražava se brojem bajtova. Bitovi u bajtu numerišu se, prema dogovoru, kao na sljedećoj slici.

Bit 0 je bit najnižeg reda ili najmanje značajan bit (LSB – Least Significant Bit), dok je bit 7‚ bit

najvišeg reda ili najviše značajan bit (MSB – Most Significant Bit). Bajt se sastoji od tačno dva nibla, kao na sljedećoj slici.

Biti 0-3 čine nibl nižeg reda (low order nibble), dok biti 4-7 čine nibl višeg reda (high order

nibble). Kako se bajt sastoji od tačno dva nibla, potrebne su dvije heksadecimalne cifre da bi se predstavila vrijednost bajta. O heksadecimalnom brojnom sistemu biće više riječi nešto kasnije.

S obzirom da bajt sadrži osam bita, sa njim se može predstaviti 28, ili 256, različitih vrijednosti. U opštem slučaju, mi ćemo koristiti bajt za predstavljanje numeričkih vrijednosti u opsegu 0 do

Page 3: 01_Brojni_sistemi

255, označenih brojeva u opsegu –128 do 127, za prikaz ASCII/IBM alfanumeričkih znakova, i za druge strukture podataka koje ne zahtijevaju više od 256 različitih vrijednosti. 1.3.4. Riječ i dupla riječ

Riječ (word) je grupa od 16 bita i čini je grupa od dva bajta, kao na sljedećoj slici.

Dupla riječ (double word), kao što samo ime kaže, ima 32 bita, i čine je dvije riječi od po 16

bita. Njena struktura prikazana je na slici.

1.4. Heksadecimalni brojni sistem Veliki problem pri upotrebi binarnog brojnog sistema je njegova nepreglednost. Da bi

predstavili broj 202 (decimalno) u binarnom obliku potrebno nam je osam binarnih cifara. U decimalnom sistemu ovaj broj je predstavljen sa samo tri decimalne cifre. Kada radimo sa veoma velikim vrijednostima, binarni brojevi brzo postaju preveliki. Nažalost, računar radi sa binarnim brojevima, tako da je pogodnije koristiti binarni brojni sistem. Iako mi možemo vršiti pretvaranje brojeva iz decimalnog u binarni sistem i obrnuto, ovakvo pretvaranje ne predstavlja trivijalan zadatak. Heksadecimalni brojni sistem (sa bazom 16) rješava opisane probleme. Heksadecimalni brojevi omogućavaju dvije karakteristike koje su nama značajne: veoma su kompaktni, i lako ih je pretvarati u binarne brojeve i obrnuto. Zbog toga, većina današnjih računarskih sistema koristi heksadecimalni brojni sistem za prikazivanje podataka. Kako je baza heksadecimalnog broja 16, svaka heksadecimalna cifra lijevo od heksadecimalnog zareza predstavlja vrijednost koja se množi sa rastućim stepenima od 16. Na primjer, broj 1234 (heksadecimalno) je jednako:

3 2 1 01 16 2 16 3 16 4 16⋅ + ⋅ + ⋅ + ⋅ ili 46604485124096 =+++ (decimalno).

Svaka heksadecimalna cifra može predstavljati jednu od 16 vrijednosti između 0 i 15. S obzirom

da postoji samo deset decimalnih cifara, potrebno je uvesti dodatnih šest cifara koje će predstavljati vrijednosti u opsegu od 10 do 15. Da ne bi morali izmišljati nove simbole za ove cifre, dogovoreno je da se koriste slova A do F.

Heksadecimalni brojevi se često koriste u računarskoj tehnici pa je potrebno posebno označiti ove brojeve da znamo da se radi o heksadecimalnim brojevima. Heksadecimalne cifre se označavaju sa slovom h ili H u indeksu broja koji pišemo (npr. 1234H, 5afe4H, 64d54H itd.). Decimalni brojevi obično nemaju nikakvu posebnu oznaku ili se u indeksu piše 10 (npr. 256, 1810, 7863 itd.), dok se za oktalne brojeve (o njima više u sljedećem odjeljku) u indeksu piše broj 8 (npr. 458, 678, 1238 itd.).

Kao što se može vidjeti, heksadecimalni brojevi su kompaktni i laki za čitanje. Takođe, pretvaranje između binarnih i heksadecimalnih brojeva je jednostavno.

Binarni Heksadecimalni

0000 0 0001 1 0010 2

Page 4: 01_Brojni_sistemi

0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B1100 C 1101 D 1110 E 1111 F

U prikazanoj tabeli date su sve informacije koje su potrebne da bi pretvorili bilo koji

heksadecimalni u binarni broj i obrnuto. Da bi pretvorili heksadecimalni u binarni broj, prosto izvršimo zamjenu odgovarajuća četiri bita

iz tabele za svaku heksadecimalnu cifru u broju. Na primjer, da bi pretvorili 0ABCDH u binarnu vrijednost, prosto pretvorimo svaku heksadecimalnu cifru prema tabeli koja je prikazana.

0 A B C D heksadecimalno

0000 1010 1011 1100 1101 Binarno Pretvaranje binarnog broja u heksadecimalni format je takođe lako. Prvi korak sastoji se u

dodavanju potrebnog broja nula binarnom broju na strani MSB-a, tako da se obezbjedi da broj bita predstavlja umnožak broja četiri. Sljedeći korak je razdvajanje binarne vrijednosti u grupe od po četiri bita. Konačno, gledajući za ove binarne vrijednosti ekvivalentne heksidecimalne cifre dobijamo heksadecimalni ekvivalent binarnog broja.

1) 1011001010 2) 001011001010 3) 0010 1100 1010 4) 2CAH

1.5. Oktalni brojni sistem Oktalni brojni sistem je po svemu sličan heksadecimalnom. Čak je i pretvaranje iz oktalnog u

binarni i obrnuto potpuno analogno pretvaranju kod heksadecimalnog brojnog sistema. Razlika je u tome što kod oktalnog brojnog sistema baza nije 16 već 8. Cifre kod oktalnog brojnog sistema uzimaju vrijednost 0-7. Na primjer, pogledajmo koju decimalnu vrijednost ima oktalni broj 4568.

2 1 04 8 5 8 6 8⋅ + ⋅ + ⋅ ili 302640256 =++ (decimalno).

Pretvaranje iz oktalnog u binarni i obrnuto se vrši slično kao kod heksadecimalnog sistema,

samo što se biti grupišu u skupove od tri bita i koristi se sljedeća tabela za konverziju.

Binarni Oktalni 000 0 001 1 010 2 011 3

Page 5: 01_Brojni_sistemi

100 4 101 5 110 6 111 7

Oktalni brojevi se takođe često koriste za predstavljanje podataka u računarskom sistemu. Oni

su pogodniji za korišćenje u određenim situacijama u odnosu na heksadecimalne, iako se heksadecimalni brojevi daleko češće koriste.

Konverzija između oktalnog i heksadecimalnog brojnog sistema vrši se pretvaranjem prvo u binarni brojni sistem, a zatim u potreban brojni sistem, dakle posrednim putem.

1.6. Označeni i neoznačeni brojevi

Dosada smo tretirali binarne brojeve kao neoznačene vrijednosti. Binarni broj ...00000

predstavlja nulu, ...00001 predstavlja jedan, ...00010 predstavlja dva, i tako do beskonačnosti. Postavlja se pitanje: Šta je sa negativnim brojevima? Da bi mogli predstaviti označene brojeve korištenjem binarnog brojnog sistema moramo uvesti ograničenje u već postojeće brojeve: oni moraju imati konačan i nepromjenljiv broj bita. Najčešće se koriste podaci dužine 8, 16 ili 32 bita.

Sa nepromjenljivim brojem bita možemo da predstavimo samo određeni broj objekata. Na primjer, sa osam bita možemo predstaviti samo 256 različitih objekata. Negativne vrijednosti su objekti kao i pozitivne vrijednosti. Zbog toga moramo da koristimo neke od ovih 256 vrijednosti da bi predstavili negativne brojeve. Drugim riječima, moramo da koristimo neke od pozitivnih brojeva da bi predstavili negativne brojeve. Najbolji pristup je da se pola mogućih kombinacija dodijeli pozitivnim, a drugih pola negativnim brojevima. Na taj način možemo da predstavimo negativne vrijednosti u opsegu -128 do -1 i pozitivne vrijednosti u opsegu 0 do 127 sa jednim podatkom veličine osam bita. Sa 16-bitnom riječi možemo predstaviti vrijednosti u opsegu -32768 do +32767. Sa 32-bitnom duplom riječi možemo da predstavimo vrijednosti u opsegu -2147483648 do +2147483647. U opštem slučaju, sa n bita možemo da predstavimo označene vrijednosti u opsegu

12n−− do 12 1n− − . Za predstavljanje negativnih brojeva postoji mnogo načina, ali većina današnjih računarskih

sistema koristi notaciju u drugom komplementu. Primjenom sistema drugom komplementa, bit najvećeg značaja (MSB) ze naziva bit znaka. Ako je ovaj bit nula, broj je pozitivan, a ako je jedan, onda je broj negativan.

Decimalna vrijednost broja predstavljenog u formi drugog komplementa može se, u opštem slučaju, odrediti prema sljedećoj formuli (pretpostavka je da se za predstavljanje broja koristi n bita):

2

11

0

2 2n

n kn k

k

b b−

−−

=

− +∑

gdje je bk – vrijednost bita na k-toj poziciji i n – ukupan broj bita. Primjer 1: 8000H je negativan zato što mu je MSB jednak jedinici. 100H je pozitivan jer je MSB nula. 7FFFH je pozitivan.

Ukoliko je MSB nula, onda je broj pozitivan i smješta se kao standardna binarna vrijednost. Međutim, ako je MSB jednak jedinici, onda je broj negativan i smješta se u formi drugog komplementa. Da bi pretvorili pozitivan broj u negativan, u drugom komplementu, koristimo sljedeći algoritam. 1) Invertujemo sve bite u broju (zamijenimo jedinice nulama i nule jedinicama). 2) Dodamo jedinicu invertovanom rezultatu.

Page 6: 01_Brojni_sistemi

Primjer 2: Izračunajmo osmobitni ekvivalent od -5. 0000 0101 Pet (binarno). 1111 1010 Svi biti invertovani (prvi komplement). 1111 1011 Dodata jedinica. Sada ćemo izvršiti konverziju u drugi komplement 16-bitnih označenih vrijednosti. 7FFFH: 0111 1111 1111 1111 +32767 1000 0000 0000 0000 Invertujemo sve bite (8000H) 1000 0000 0000 0001 Dodajemo 1 (8001H ili -32767) 8000H: 1000 0000 0000 0000 -32768 0111 1111 1111 1111 Invertujemo sve bite (7FFFH) 1000 0000 0000 0000 Dodajemo 1 (8000H ili -32768) 4000H: 0100 0000 0000 0000 16384 1011 1111 1111 1111 Invertujemo sve bite (BFFFH) 1100 0000 0000 0000 Dodajemo 1 (C000H ili -16384)

Odavde vidimo da vrijednost 8000H invertovana postaje 7FFFH. Poslije dodavanja jedinice dobijamo 8000H! Odavde izlazi da je -(-32768) jednako -32768!!! To naravno nije tačno. Ali vrijednost +32768 se ne može predstaviti sa 16-bitnim označenim brojem, tako da ne možemo da obavimo negaciju najmanje negativne vrijednosti.

Postavlja se pitanje zašto se mučiti sa ovako komplikovanim načinom prikazivanja označenih brojeva? Zašto ne bi koristili MSB bit za određivanje znaka, smještajući pozitivan ekvivalent u ostale bite? Odgovor je u jednostavnosti projektovanja hardvera. Korištenjem sistema drugog komplementa, većina drugih operacija u binarnom sistemu je laka. Na primjer, pretpostavimo da želimo da obavimo sabiranje 5+(-5). Rezultat treba da bude nula. Razmotrimo šta se dešava kada izvršimo sabiranje ove dvije vrijednosti u sistemu drugog komplementa:

0000 0101 1111 1011 ------------- 1 0000 0000 Ako ignorišemo vrijednost koja se dobija u bitu prenosa dobijamo korektan rezultat. Ovo znači

da možemo da koristimo isti hardver za sabiranje i za oduzimanje upotrebom drugog komplementa. Ovo ne bi bio slučaj sa nekim drugim brojnim sistemima.

1.7. Znakovno i proširenje nulama

Kako cjelobrojni format u drugom komplementu ima nepromjenljiv broj bita dolazi do malog

problema. Šta ukoliko mi želimo da pretvorimo cjelobrojnu vrijednost u drugom komplementu dužine osam bita u podatak dužine 16 bita? Ovaj problem se može riješiti pomoću operacije znakovnog proširivanja. Slično, proširenje nulama omogućava pretvaranje 8-bitnog u 16-bitni neoznačeni podatak.

Razmotrićemo vrijednost -64. Osmobitna vrijednost drugog komplementa za ovaj broj je C0H. Šesnaestobitni ekvivalent ovog broja je FFC0H. Sada posmatrajmo vrijednost +64. Osam i 16-bitne verzije ove vrijednosti su 40H i 0040H. Konverzija 8-bitnog u 16-bitni podatak može se opisati

Page 7: 01_Brojni_sistemi

sljedećim pravilom: "Ako je broj negativan, bajt višeg reda 16-bitnog broja sadrži FFH; ako je broj pozitivan, bajt višeg reda 16-bitnog broja je nula".

Znakovno proširivanje neke vrijednosti sa manjeg broja bita na veći je lako, samo izvršimo kopiranje bita znaka u sve dodatne bite kod novog formata. Na primjer, da bi znakovno proširili podatak sa osam na 16 bita, potrebno je prosto kopirati sedmi bit osmobitnog broja u bite 8-15 16-bitnog broja.

Znakovno proširivanje potrebno je pri manipulaciji sa označenim veličinama promjenljive dužine. Često je potrebno sabrati podatak tipa bajt sa podatkom tipa riječ. Da bi ovo ostvarili potrebno je najprije znakovno proširiti manji podatak, pa tek onda izvršiti naznačenu operaciju. Druge operacije (posebno množenje i dijeljenje) mogu čak zahtijevati znakovno proširivanje na 32-bitne vrijednosti. Neoznačene vrijednosti se ne smiju znakovno proširivati.

Primjer 3: 8-bitni 16-bitni 32-bitni 80H FF80H FFFFFF80H 28H 0028H 00000028H 9AH FF9AH FFFFFF9AH 7FH 007FH 0000007FH --- 1020H 00001020H --- 8088H FFFF8088H

Da bi proširili neoznačene vrijednosti, potrebno je izvršiti proširivanje nulama. Proširivanje nulama je veoma lako – potrebno je samo smjestiti nule u bajtove višeg reda manjeg podatka. Na primjer, da bi proširili nulama vrijednost 82H na 16-bitnu vrijednost, prosto dodajemo nule u bajt višeg reda što daje 0082H. Primjer 4: 8-bitni 16-bitni 32-bitni 80H 0080H 00000080H 28H 0028H 00000028H 9AH 009AH 0000009AH 7FH 007FH 0000007FH --- 1020H 00001020H --- 8088H 00008088H

Page 8: 01_Brojni_sistemi

1.8. Zadaci Zadatak 1. Konvertovati sljedeće decimalne brojeve u binarne: 256.75, 0.4475 i 43.15. Rješenje: Postupak konverzije vršimo tako što posebno izvršimo konverziju cjelobrojnog a posebno razlomljenog dijela broja, a zatim izvršimo spajanje rezultata dobijenih konverzija u jedinstven broj: 256:2 128 (0) 128:2 64 (0)

64:2 32 (0) 32:2 16 (0) 16:2 8 (0) 8:2 4 (0) 4:2 2 (0) 2:2 1 (0) 1:2 0 (1)

Očitavanjem binarnih brojeva dobijenih konverzijom dobija se da je: 256.75=100000000.112 U slučaju drugog broja dobijamo:

0.4475·2 0.895 (0) 0.895·2 1.79 (1) 0.79·2 1.58 (1) 0.58·2 1.16 (1) 0.16·2 0.32 (0) 0.32·2 0.64 (0) 0.64·2 1.28 (1) 0.28·2 0.56 (0) 0.56·2 1.12 (1) 0.12·2 0.24 (0) 0.24·2 0.48 (0) 0.48·2 0.96 (0) 0.96·2 1.92 (1) 0.92·2 1.84 (1) 0.84·2 1.68 (1) 0.68·2 1.36 (1) 0.36·2 0.72 (0) 0.72·2 1.44 (1) 0.44·2 0.88 (0) 0.88·2 1.76 (1) 0.76·2 1.52 (1) 0.52·2 1.04 (1) 0.04·2 0.08 (0) 0.08·2 0.16 (0) 0.16·2 0.32 (0)

0.75·2 1.5 (1) 0.5·2 1.0 (1)

Page 9: 01_Brojni_sistemi

0.4475=0.0111001010001111010111000... Za treći broj dobija se sljedeća konverzija:

43:2 21 (1) 21:2 10 (1) 10:2 5 (0) 5:2 2 (1) 2:2 1 (0) 1:2 0 (1)

43.15=101011.0010011... Zadatak 2. Konvertovati sljedeće oktalne brojeve u heksadecimalne: 4237.0218, 63271.1178 i 572.22048. Rješenje: Konverziju brojeva iz oktalnog u heksadecimalni brojni sistem izvršićemo posredno, preko binarnog brojnog sistema. 4237.0218=1000|1001|1111.0000|1000|10002=89F.088H 63271.1178=0110|0110|1011|1001.0010|0111|10002=66B9.278H 572.22048=0001|0111|1010.0100|1000|01002=17A.484H Zadatak 3. Pretvoriti sljedeće oktalne i heksadecimalne brojeve u decimalne: 17FF.01DH, BCD.EFH i 12478. Rješenje:

3 2 1 0 2 3 1 1317 .01 1 16 7 16 15 16 15 16 1 16 13 16 4096 1792 240 15 6143.00708256 4096HFF D − −= ⋅ + ⋅ + ⋅ + ⋅ + ⋅ + ⋅ = + + + + + =

2 1 0 1 2 14 15. 11 16 12 16 13 16 14 16 15 16 2816 192 13 3021.93359416 256HBCD EF − −= ⋅ + ⋅ + ⋅ + ⋅ + ⋅ = + + + + =

3 2 1 081247 1 8 2 8 4 8 7 8 512 128 32 7 679= ⋅ + ⋅ + ⋅ + ⋅ = + + + =

0.15·2 0.3 (0) 0.3·2 0.6 (0) 0.6·2 1.2 (1) 0.2·2 0.4 (0) 0.4·2 0.8 (0) 0.8·2 1.6 (1) 0.6·2 1.2 (1)

ponavlja se

ponavlja se

Page 10: 01_Brojni_sistemi

Zadatak 4. Predstaviti decimalni broj 115.23 binarno, oktalno i heksadecimalno. Rješenje: 115.23=115+0.23

15:2 57 (1) 57:2 28 (1) 28:2 14 (0) 14:2 7 (0) 7:2 3 (1) 3:2 1 (1) 1:2 0 (1)

Odavde možemo zaključiti da se kao rezultat dobija binarni broj: 115.23=1110011.001110101110... Sada je još potrebno dobijeni binarni broj konvetovati u oktalni i heksadecimalni brojni sistem. 001|110|011.001|110|101|1102…=163.16568… 0111|0011.0011|1010|11102…=73.3AEH… Zadatak 5. Naći sume sljedećih binarnih brojeva 10110111+1011 i 11110000+1101100. Rješenje:

111111 111 10110111 11110000 + 1011 + 1101100 ---------------------- ---------------------- 11000010 101011100

U prethodnom sabiranju crvenom bojom označeni su biti prenosa pri sabiranju. Zadatak 6. Naći razliku binarnih brojeva 10111-1010 i 11001000-111010. Rješenje:

10111 11001000 - 1010 - 111010 ------------------ ---------------------- 1101 10001110

0.23·2 0.46 (0) 0.46·2 0.92 (0) 0.92·2 1.84 (1) 0.84·2 1.68 (1) 0.68·2 1.36 (1) 0.36·2 0.72 (0) 0.72·2 1.44 (1) 0.44·2 0.88 (0) 0.88·2 1.76 (1) 0.76·2 1.52 (1) 0.52·2 1.04 (1) 0.04·2 0.08 (0)

Page 11: 01_Brojni_sistemi

Zadatak 7. Brojeve 1011011 i 1010 pomnožiti i podijeliti u binarnom brojnom sistemu. Rješenje:

1011011·1010 1011011:1010=1001 0000000 1010 1011011 ------ 0000000 10 ---------------- 101 1110001110 1011 1010 ------ (1) ostatak

Zadatak 8. Koliki je minimalan broj bita potreban za predstavljanje sljedećih decimalnih brojeva: 49, 68, 114 i 271? Rješenje: Prilikom rješavanja ovog zadatka koristimo formulu 2n-1 (gdje je n broj bita za predstavljanje broja). Za predstavljanje broja 49 minimalan potreban broj bita je 6. S obzirom da je najveći broj koji se može predstaviti sa 6 bita broj 64, zaključujemo da je za predstavljanje broja 68 potrebno najmanje 7 bita. Sa 7 bita možemo predstaviti i broj 114, jer je 127 najveći broj koji možemo predstaviti sa ovim brojem bita. I na kraju, za predstavljenje broja 271 nam je potrebno najmanje 9 bita. Zadatak 9. Izračunati: A0H+6BH, FFH+BBH i C8H-3AH. Rješenje: Sabiranje i oduzimanje u heksadecimlanom brojnom sistemu je isto kao i sabiranje u decimalnom brojnom sistemu uz napomenu da je baza sistema 16, a ne 10. Prema tome, težine pozicija pojedinih cifara sada su drugačije u odnosu na decimalni brojni sistem (npr. 10H odgovara 16 ili 18H je jednako 16+8=24).

A0H FFH C8H + 6BH + BBH - 3AH --------------- --------------- --------------- 10BH 1BAH 8EH

Page 12: 01_Brojni_sistemi

Zadatak 10. Predstaviti sljedeće decimalne brojeve kao binarne u formi drugog komplementa. Za predstavljanje brojeva koristiti ukupno 8 bita uključujući i bit znaka.

+32; -14; +63; -104; -1 Rješenje: (+32) → 00100000 (+63) → 00111111 00001110 (14) 01101000 (104) 11110001 10010111 + 1 + 1 ------------------------ ------------------------ (-14) → 11110010 (-104) → 10011000 00000001 (1) 11111110 + 1 ------------------------ (-1) → 11111111 Zadatak 11. Izvršiti sljedeće operacije u binarnom sistemu sa drugim komplementom. Brojevi su predstavljeni sa 8 bita uključujući i bit znaka.

(+9) + (-16); (+14) – (+17); (+21) – (-13). Rješenje:

00001001 (+9) 00001110 (+14) + 11110000 (-16) - 00010001 (+17) ---------------------- ---------------------- 11111001 (-7) 11111101 (-3) 00000110 00000010 + 1 + 1 ---------------------- ---------------------- 00000111 00000011

00010101 (+21) - 11110011 (-13) ---------------------- (1)00100010 (+34)

Prilikom obavljanja aritmetičkih operacija u drugom komplementu treba voditi računa da se za predstavljanje podataka (pa i dobijenih rezultata) uvijek koristi konstantan broj bita.