You are on page 1of 11

A

BINARNI BROJEVI

Aritmetika koju koristi raunar u izvesnom pogledu se razlikuje od aritmetike koju


koriste udi. Najvanija razlika je to to raunari rade s brojevima konane i ksne
tanosti. Druga razlika je to to raunari za predstavae brojeva umesto decimalnog
sistema po pravilu koriste binarni brojani sistem. To su teme ovog dodatka.

A.1 BROJEVI KONANE TANOSTI


Dok obavamo neku aritmetiku operaciju, obino malo mislimo na to koliko je
decimalnih mesta potrebno da se broj predstavi. Fiziari mogu da izjave kako u
svemiru ima 1078 elektrona, ne brinui o tome to se taj broj u razvijenom obliku pie
sa 79 decimalnih mesta. Neko ko peice izraunava neku funkciju s tanou od
est znaajnih cifara, meurezultate e izraunavati sa sedam ili sa osam cifara, ili sa
onoliko cifara koliko je potrebno. Nikada se nee pojaviti problem to list hartije nije
dovono irok za zapisivae sedmocifrenih brojeva.
Kod raunara stvari stoje sasvim drugaije. U veini raunara, koliina memorije
raspoloive za smetae brojeva obino se ksira u trenutku projektovaa raunara.
Uz odreen napor, programer moe da prikae dva, tri i vie puta preciznije brojeve
nego to to diktira ta ksna veliina, ali to ne mea prirodu ove tekoe. Konana priroda resursa raunara prisiava nas da radimo samo s brojevima koji se mogu predstaviti ksnim brojem cifara. Takve brojeve zovemo brojevi konane tanosti (engl.
nite-precision numbers).
671

672

Dodatak A: Binarni brojevi

Da bismo prouili svojstva brojeva konane tanosti, ispitajmo skup pozitivnih celih brojeva koji se mogu predstaviti s tri decimalne cifre, dakle, bez decimalnog zareza
i bez znaka. Ovaj skup ima tano 1000 lanova: 000, 001, 002, 003, ..., 999. U emu
je nemogue izraziti odreene vrste brojeva, na primer:
1.
2.
3.
4.
5.

Brojeve vee od 999.


Negativne brojeve.
Razlomke.
Iracionalne brojeve.
Kompleksne brojeve.

Vano aritmetiko svojstvo skupa svih celih brojeva jeste zatvorenost u odnosu na
operacije sabiraa, oduzimaa i mnoea. Drugim reima, za svaki par celih brojeva i i j, i + j, i - j i i j takoe su celi brojevi. Skup celih brojeva nije zatvoren u odnosu na deee jer postoje vrednosti i i j za koje se i/j ne moe izraziti celim brojem
(npr. 7/2 i 1/0).
Brojevi konane tanosti nisu zatvoreni ni za jednu od etiri osnovne operacije,
kao to se vidi iz sledeeg primera s trocifrenim brojevima:
600 + 600 = 1200 (prevelik)
003 - 005 = - 2 (negativan)
050 050 = 2500 (prevelik)
007 / 002 = 3,5 (nije ceo broj)
Neodgovarajui rezultati mogu se svrstati u dve klase koje se meusobno iskuuju: rezultat je vei od najveeg broja iz skupa (greka prekoraea gore granice) ili
je mai od najmaeg broja iz skupa (greka prekoraea doe granice), ili rezultat
nije ni jedno ni drugo, ve jednostavno ne spada u skup. U etiri gora primera, prva
tri rezultata spadaju u prvu klasu, a posledi u drugu.
Poto raunari imaju konane memorije i stoga moraju raditi s brojevima konane
tanosti, rezultati odreenih izraunavaa bie pogreni, s take gledita klasinog
matematiara. Ureaj za raunae koji daje pogrean odgovor, a tehniki je u savrenom stau, moe na prvi pogled izgledati besmisleno, ali je greka logina posledica
egove konane prirode. Neki raunari imaju specijalan hardver koji otkriva greke
prekoraea.
Algebra brojeva konane tanosti razlikuje se od uobiajene algebre. Kao primer,
razmotrite pravilo asocijativnosti:
a + (b - c) = (a + b) - c
Izraunajmo obe strane jednaine za a = 700, b = 400, c = 300. Da biste izraunali
levu stranu jednaine, najpre izraunajte (b - c), to daje 100, a zatim to dodajte vrednosti a, da biste dobili 800. Da biste izraunali desnu stranu jednaine, prvo izraunajte (a + b), to daje prekoraee u konanoj aritmetici trocifrenih celih brojeva.
Rezultat moe zavisiti od korienog raunara, ali nee biti 1100. Oduzimae 300 od
broja koji nije 1100 nee dati 800. Prema tome, pravilo asocijativnosti ne vai, ve je
vaan redosled operacija.

673

A.2 Brojani sistemi date osnove

Kao drugi primer, razmotrite pravilo distributivnosti:


a (b - c) = a b - a c
Izraunajmo obe strane jednaine za a = 5, b = 210, c = 195. Leva strana e dati 5
15, dakle, 75. Desna strana nee dati 75 jer operacija a b izaziva prekoraee.
Sudei po ovim primerima, moglo bi se zakuiti da raunari, kao ureaji opte
namene, nisu ba pogodni za aritmetike operacije. Ovakav zakuak je, naravno, pogrean, ali smo ga namerno izveli da pokaemo koliko je vano razumeti kako raunar radi i koja su mu ograniea.

A.2 BROJANI SISTEMI DATE OSNOVE


Obian decimalan broj koji svi poznajemo sastoji se od niza decimalnih cifara i
(moda) decimalnog zareza. Njegov opti oblik i uobiajeno tumaee prikazani su
na slici A-1. Broj 10 izabran je kao osnova (engl. radix) za stepenovae zato to mi
koristimo decimalne brojeve sa osnovom 10. U raunarima je esto pogodnije koristiti
drugaiju osnovu. Najvanije takve osnove su 2, 8 i 16. Brojani sistemi na tim osnovama su binarni, oktalni i heksadecimalni.
Stotine Desetice Jedinice

dn

d2

d1

d0

Deseti
delovi

Stoti
delovi

Hiaditi
delovi

d1

d2

d3

dk

Broj =

di 10i

i = k
Slika A-1. Opti oblik decimalnog broja.

Brojani sistem osnove k mora imati k razliitih simbola za predstavae cifara


od 0 do k - 1. Decimalni brojevi su sastaveni od 10 decimalnih cifara
0123456789
Za razliku od toga, u binarnim brojevima se ne pojavuje ovih deset cifara. Svi su
oni sastaveni samo od dve binarne cifre
01
Oktalni brojevi su sastaveni od osam oktalnih cifara
01234567

674

Dodatak A: Binarni brojevi

Za heksadecimalne brojeve potrebno je esnaest cifara. Znai, treba nam est dodatnih simbola. Obino se za est cifara koje dolaze posle cifre 9 koriste velika slova
od A do F. Prema tome, heksadecimalni brojevi su sastaveni od cifara
0123456789ABCDEF
Binarna cifra (dakle, 1 ili 0) obino se naziva bit. Na slici A-2, decimalan broj
2001 izraen je u binarnom, oktalnom, decimalnom i heksadecimalnom obliku. Broj
7B9 je oigledno heksadecimalan jer se simbol B moe pojaviti samo meu heksadecimalnim brojevima. Meutim, broj 111 moe poticati iz bilo kog od etiri pomiana
sistema. Da bi se izbegla dvosmislenost kada brojani sistem nije jasan iz konteksta,
u indeks se stavaju osnove: 2, 8, 10 ili 16.
Binarni

1 210 + 1 29 + 1 28 + 1 27 + 1 26 + 0 25 + 1 24 + 0 23 + 0 22 + 0 21 + 1 20
+0
+ 16
+0
+0
+0
+1
1024 + 512 + 256 + 128 + 64

Oktalni

3 83 + 7 82 + 2 81 + 1 80
1536 + 448 + 16 + 1

Decimalni

2 103 + 0 102 + 0 101 + 1 100


2000 + 0
+0
+1

Heksadecimalni 7

7 162 + 13 161 + 1 160


1792 + 208
+1

Slika A-2. Broj 2001 u binarnom, oktalnom, decimalnom i heksadecimalnom obliku.

Kao primer binarnog, oktalnog, decimalnog i heksadecimalnog oznaavaa,


pogledajte sliku A-3, gde su odabrani nenegativni brojevi prikazani u svakom od etiri sistema. Moda e neki budui arheolozi jednom naleteti na u i postupati s om
kao s trojezinom stelom iz Rozete da bi saznali kakvi su se to brojani sistemi koristili na prelazu iz drugog u trei milenijum.
Decimalni Binarni
0

Oktalni

Heksadecimalni

10

11

100

101

110

111

1000

10

Slika A-3. Decimalni brojevi i ihovi binarni, oktalni i heksadecimalni ekvivalenti.

675

A.3 Pretvarae brojeva iz jednog brojanog sistema u drugi

Decimalni Binarni

Oktalni

Heksadecimalni

1001

11

10

1010

12

11

1011

13

12

1100

14

13

1101

15

14

1110

16

15

1111

17

16

10000

20

10

20

10100

24

14

30

11110

36

1E

40

101000

50

28

50

110010

62

32

60

111100

74

3C

70

1000110

106

46

80

1010000

120

50

90

1011010

132

5A

100

11001000

144

64

1000

1111101000

1750

3E8

2989

101110101101

5655

BAD

Slika A-3. Decimalni brojevi i ihovi binarni, oktalni i heksadecimalni ekvivalenti. (nastavak)

A.3 PRETVARAE BROJEVA IZ JEDNOG BROJANOG


SISTEMA U DRUGI
Nije teko pretvoriti brojeve iz oktalnog ili heksadecimalnog sistema u binarni i
obrnuto. Da biste binarni broj preveli u oktalni, podelite ga u grupe od po 3 bita prvu
grupu ine 3 bita levo (ili desno) od decimalnog zareza (esto zvanog binarni zarez),
a drugu grupu 3 levo od e. Svaka grupa od po 3 bita moe se direktno prevesti u jednu oktalnu cifru (od 0 do 7), prema primerima iz prvih redova sa slike A-3. Pri podeli
na grupe moda e biti potrebno da se neke od ih dopune vodeim ili dodatnim nulama do 3 cifre. Pretvarae oktalnog broja u binarni isto je tako jednostavno. Svaku
oktalnu cifru treba zameniti ekvivalentnim trocifrenim binarnim brojem. Pretvarae
heksadecimalnih brojeva u binarne sutinski je isto kao i pretvarae oktalnih u binarne, s tim to se svaka heksadecimalna cifra zameuje grupom od po 4 bita. Na slici
A-4 su neki primeri.
Pretvarae decimalnih brojeva u binarne moe se obaviti na dva naina. Prvi nain
sledi direktno iz denicije binarnih brojeva. Od broja se oduzme najvei stepen dvojke
koji je mai od broja. Postupak se zatim ponava nad razlikom. Kada se broj rastavi na
stepene dvojke, binarni broj se sklapa tako to se cifra 1 stava na pozicije bitova koji
odgovaraju stepenima dvojke iskorienim za razlagae a cifra 0 na ostala mesta.

676

Dodatak A: Binarni brojevi

Primer 1
Heksadecimalan
Binaran
Oktalan

. B
6
0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0. 1 0 1 1 0 1 1 0 0
1
4
5
1
0 . 5
5
4
1

Primer 2
Heksadecimalan
Binaran
Oktalan

C
4
. B
0 1 1 1 1 0 1 1 1 0 1 0 0 0 1 1. 1 0 1 1 1 1 0 0 0 1 0 0
7
5
6
4
3 . 5
7
0
4
7

Slika A-4. Primeri pretvaraa brojeva iz oktalnog i heksadecimalnog sistema u binarni.

Drugi nain (vai samo za cele brojeve) svodi se na deee broja sa 2. Kolinik se
upisuje direktno ispod originalnog broja, a ostatak (0 ili 1) pored kolinika. Postupak
se ponava sve dok se na kraju ne dobije 0. Rezultat ovog postupka su dve kolone brojeva kolinika i ostataka. Binaran broj se sada direktno moe oitati iz kolone sa ostacima, itajui odozdo. Slika A-5 je primer pretvaraa decimalnog broja u binarni.
Kolinici

Ostaci

1492
746

373

186

93

46

23

11

1 0 1 1 1 0 1 0 1 0 0 = 149210

Slika A-5. Pretvarae decimalnog broja 1492 u binaran uzastopnim deeem, poiui od vrha
i idui ka dnu. Na primer, 93 podeeno sa 2 daje 46 uz ostatak 1, to se upisuje u red ispod.

677

A.4 Negativni binarni brojevi

Binarni celi brojevi mogu se pretvarati u decimalne na dva naina. Jedan nain je
sabirae stepena dvojke koji odgovaraju bitovima 1 u broju. Na primer,
10110 = 24 + 22 + 21 = 16 + 4 + 2 = 22
Prema drugom nainu, binarni broj se pie vertikalno, po jedan bit u svakom redu,
s krajim levim bitom u dnu stupca. Najnii red je prvi, onaj iznad ega drugi itd. Decimalni broj se gradi u paralelnom stupcu. Poie se upisivaem cifre 1 u prvi red.
Upis u red n sastoji se od dva upisa iz reda n - 1 i bita iz reda n (0 ili 1). Upis u najvii
red daje odgovor. Slika A-6 prikazuje primer pretvaraa binarnog broja u decimalan
na ovaj nain.
1

1
1 + 2 1499 = 2999

Rezultat

1 + 2 749 = 1499
1 + 2 374 = 749
0 + 2 187 = 374
1 + 2 93 = 187
1 + 2 46 = 93
0 + 2 23 = 46
1 + 2 11 = 23
1 + 2 5 = 11
1+22=5
0+21=2
1+20=1

Poeti odavde

Slika A-6. Pretvarae binarnog broja 101110110111 u decimalan uzastopnim udvostruavaem,


poevi od dna. Svaki red se dobija tako to se onaj ispod ega udvostrui i na to doda odgovarajui bit. Na primer, 749 je dva puta 374 plus bit 1 u istom redu gde je i 749.

Pretvarae iz decimalnog u oktalni ili iz decimalnog u heksadecimalni sistem


moe se izvesti tako to se broj pretvori prvo u binarni, a zatim u broj eenog sistema
ili tako to se oduzimaju stepeni broja 8, odnosno 16.

A.4 NEGATIVNI BINARNI BROJEVI


Tokom istorije digitalnih raunara, u ima su koriena etiri razliita sistema za
predstavae negativnih brojeva. Prvo su bili oznaeni moduli (engl. signed magnitude). U ovom sistemu kraji levi bit bio je bit znaka (0 je znailo +, a 1 je znailo -),
dok su ostali bitovi sadrali apsolutnu vrednost (modul) broja.

678

Dodatak A: Binarni brojevi

Drugi sistem, zvan komplement jedinice (engl. ones complement), takoe je imao
bit za znak, gde je 0 znailo plus, a 1 minus. Kada od pozitivnog elite da napravite negativan broj, samo jedinice zamenite nulama, a nule jedinicama, to vai i za bit znaka.
Sistem s komplementom jedinice je zastareo.
Trei sistem, zvan komplement dvojke (engl. twos complement), takoe ima bit
za znak, gde 0 stoji za plus, a jedan za minus. Pretvarae pozitivnog u negativan broj
ovde je dvostepen postupak. Prvo se svaka jedinica zameni nulom, a svaka nula jedinicom, kao u sistemu komplementa jedinice. Zatim se rezultatu doda 1. Binarni brojevi se sabiraju isto kao i decimalni, s tim to se prenos na vie mesto dogaa kada zbir
premai 1, a ne 9, to bi bilo u decimalnom sistemu. Na primer, pretvarae broja 6 u
-6 u komplementu dvojke obava se u dva koraka:
00000110 (+6)
11111001 (- 6 u komplementu jedinice)
11111010 (- 6 u komplementu dvojke)
Ako se operacijom na krajem levom bitu stvore uslovi za prenos, on se zanemaruje.
U etvrtom sistemu, koji se za m-bitne brojeve zove viak 2m-1 (engl. excess 2m-1),
broj se uva kao zbir dobijen egovim uveaem za 2m-1. Na primer, za 8-bitne brojeve (m = 8), sistem se zove viak 128 i brojevi se uvaju uveani za 128. Prema tome,
- 3 postaje - 3 + 128 = 125, a - 3 se predstava 8-bitnim binarnim ekvivalentom broja
125 (01111101). Brojevi izmeu - 128 i +127 preslikavaju se u interval od 0 do 255 i
svi se mogu izraziti kao 8-bitni pozitivni brojevi. Zanimivo je da je ovaj sistem identian sistemu komplementa dvojke kod koga je bit znaka invertovan. Slika A-7 prikazuje primere negativnih brojeva u sva etiri sistema.
Sistem oznaenog modula i sistem komplementa jedinice predstavaju nulu na
dva naina: kao pozitivnu nulu i kao negativnu nulu. Takvo stae nije poeno. Sistem komplementa dvojke nema taj nedostatak jer je u emu pozitivna nula u komplementu dvojke takoe pozitivna nula. Sistem komplementa dvojke, meutim, ima
drugu jedinstvenu osobinu. Niz bitova koji poie jedinicom, a iza e su nule, predstava svoj sopstveni komplement. Zbog toga opsezi pozitivnih i negativnih brojeva
nisu simetrini; postoji negativan broj koji nema svog pozitivnog paraka.
Nije teko pronai otkud ovakvi problemi: elimo da napravimo sistem kodiraa
koji ima sledea dva svojstva:
1. Predstavae nule na samo jedan nain.
2. Tano isti broj pozitivnih i negativnih brojeva.
Problem nastaje zato to svaki skup sa istim brojem pozitivnih i negativnih brojeva
i samo jednom nulom ima neparan broj lanova, dok m bitova omoguava paran broj
rasporeda bitova. Uvek e jedan specian raspored bitova biti viak ili e nedostajati, bez obzira na nain prikazivaa. Taj jedan suvian raspored bitova moe se upotrebiti za predstavae - 0 ili velikog negativnog broja (ili neega sasvim drugog) ali
e uvek zadavati glavoboe.

679

A.5 Binarna aritmetika

N
decimalno

-N
oznaeni
modul

N
binarno

-N
-N
komplement komplement
dvojke
jedinice

10000001

11111110

1111111 1

-N
viak 128

00000001

01111111

00000010

10000010

11111101

1111111 0

01111110

00000011

10000011

11111100

1111110 1

01111101

00000100

10000100

11111011

1111110 0

01111100

00000101

10000101

11111010

1111101 1

01111011

00000110

10000110

11111001

1111101 0

01111010

00000111

10000111

11111000

1111100 1

01111001

00001000

10001000

11110111

1111100 0

01111000

00001001

10001001

11110110

1111011 1

01110111

10

00001010

10001010

11110101

1111011 0

01110110

20

00010100

10010100

11101011

1110110 0

01101100

30

00011110

10011110

11100001

1110001 0

01100010

40

00101000

10101000

11010111

1101100 0

01011000

50

00110010

10110010

11001101

1100111 0

01001110

60

00111100

10111100

11000011

11000100

01000100

70

01000110

11000110

10111001

1011101 0

00111010

80

01010000

11010000

10101111

10110000

00110000

90

01011010

11011010

10100101

10100110

00100110

100

01100100

11100100

10011011

1001110 0

00011100

127

011111111

111111111

10000000

10000001

00000001

128

Ne postoji

Ne postoji

Ne postoji

10000000

00000000

Slika A-7. Negativni 8-bitni brojevi u etiri sistema.

A.5 BINARNA ARITMETIKA


Tabela za sabirae binarnih brojeva prikazana je na slici A-8.
Prvi sabirak
Drugi sabirak
Zbir
Prenos

0
+0

0
+1

1
+0

1
+1

0
0

1
0

1
0

0
1

Slika A-8. Tabela binarnog sabiraa.

Dva binarna broja se sabiraju tako to se poevi od krajeg desnog bita sabiraju odgovarajui bitovi dva sabirka. Eventualni viak se prenosi jedno mesto ulevo,
kao u aritmetici decimalnih brojeva. U aritmetici komplementa jedinice, viak stvoren
pri sabirau krajih levih bitova prenosi se u kraji desni bit. Ovaj postupak se zove

680

Dodatak A: Binarni brojevi

cirkularni prenos. U aritmetici komplementa dvojke, zanemaruje se viak stvoren sabiraem dva kraja leva bita. Primeri binarne aritmetike prikazani su na slici A-9.
Decimalni sistem

Komplement jedinice

Komplement dvojke

10
+ (-3)

00001010
11111100

00001010
11111101

+7

1 00000110

1 00000111

prenos 1

odbaeno

00000111

Slika A-9. Sabirae u sistemu komplementa jedinice i u sistemu komplementa dvojke.

Kad su dva sabirka razliitog znaka, ne nastaje prekoraee. Ako su oni istog znaka,
a rezultat je suprotnog znaka, nastaje prekoraee i dobija se pogrean odgovor. U sistemu komplementa jedinice i u sistemu komplementa dvojke, prekoraee se java
samo ako se prenos u bit znaka razlikuje od prenosa iz bita znaka. Veina raunara uva
prenos generisan iz bita za znak, ali se prenos u bit znaka ne vidi iz rezultata. Stoga se
obino koristi i specijalan bit prekoraea.

VEBAA
1. Napiite binarne ekvivalente sledeih decimalnih brojeva: 1984, 4000, 8192.
2. Koji je decimalni ekvivalent binarnog broja 1001101001, a koji su egovi oktalni i
heksadecimalni ekvivalenti?
3. Koji su od ovih zapisa punovani heksadecimalni brojevi? BED, CAB, DEAD, DECADE, ACCEDED, BAG, DAD.
4. Decimalni broj 100 izrazite u brojanim sistemima sa osnovama od 2 do 9.
5. Koliko se razliitih pozitivnih brojeva moe izraziti pomou k cifara u brojanom sistemu osnove r?
6. Veina udi ume da rauna do 10 na prste; meutim, kompjuterai umeju i vie. Ako
svaki prst posmatrate kao jedan binarni bit, pa ispruen prst znai 1, a savijen prst
znai 0, do koliko moete brojati sa obe ruke? A sa obe ruke i obe noge? Sada upotrebite obe ruke i obe noge, a palac vae leve noge neka bude bit za znak u komplementu dvojke. Koliko brojeva moete na taj nain predstaviti?
7. Izvrite sledea izraunavaa sa 8-bitnim brojevima u komplementu dvojke.
00101101
+ 01101111

11111111
+ 11111111

00000000
- 11111111

11110111
- 11110111

8. Ponovite raunicu iz prethodnog vebaa, ali sada u komplementu jedinice.

681

Vebaa

9. Razmotrite sledea sabiraa 3-bitnih binarnih brojeva u komplementu dvojke. Za


svaki zbir navedite
a. Da li je bit znaka u rezultatu jednak 1.
b. Da li su najmae znaajna tri bita 0.
c. Da li je nastalo prekoraee.
000
+ 001

000
+ 111

111
+ 110

100
+ 111

100
+ 100

10. Oznaeni decimalni brojevi sa n cifara mogu se predstaviti sa n + 1 cifara bez znaka.
Kraja leva cifra pozitivnih brojeva je 0. Negativni brojevi se formiraju tako to se
svaka cifra oduzme od 9. Tako se od broja 014725 dobija egov negativni parak
985274. Takvi brojevi su komplementi devetke i analogni su binarnim brojevima
u komplementu jedinice. Izrazite sledee brojeve kao trocifrene komplemente devetke: 6, - 2, 100, - 14, - 1, 0.
11. Formuliite pravilo za sabirae brojeva u komplementu devetke a zatim obavite sledea sabiraa.
0001
+ 9999

0001
+ 9998

9997
+ 9996

9241
+ 0802

12. Komplement desetke analogan je komplementu dvojke. Negativan broj u komplementu desetke formira se dodavaem jedinice na odgovarajui broj u komplementu
desetke, uz zanemarivae eventualnog prenosa. Kako glasi pravilo za sabirae komplemenata desetke?
13. Konstruiite tablice mnoea brojeva sa osnovom 3.
14. Pomnoite binarno 0111 i 0011.
15. Napiite program koji prihvata oznaen decimalni broj kao znakovni ASCII niz i
tampa binarni broj u komplementu dvojke, kao oktalan i kao heksadecimalan broj.
16. Napiite program koji preuzima dva ASCII niza od po 32 znaka koji sadre nule i jedinice (svaki predstava 32-bitni binarni broj u komplementu dvojke). Program treba da odtampa ihov zbir kao znakovni ASCII niz sa 32 nule i(ili) jedinice.

You might also like