Professional Documents
Culture Documents
Binarni Brojevi
Binarni Brojevi
BINARNI BROJEVI
672
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.
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
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.
674
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
Heksadecimalni 7
Oktalni
Heksadecimalni
10
11
100
101
110
111
1000
10
675
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)
676
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
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
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
678
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
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
0
+0
0
+1
1
+0
1
+1
0
0
1
0
1
0
0
1
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
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
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
681
Vebaa
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.