You are on page 1of 12

Skripte iz predmeta “Računarsvo i informatika”

Specijalno matematičko odeljenje, I razred


Sveska 1

Kako to izgleda iznutra

1 Brojni sistemi
Pozicioni brojni sistemi. Mi koristimo pozicioni decimalni brojni sistem. To znači da
za osnovu računanja uzimamo broj 10, a kao cifre koristimo brojeve {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.
Niz cifara 12573 shvatamo kao broj

1 · 104 + 2 · 103 + 5 · 102 7 · 101 + 3 · 100 .

Decimalni brojni sistem nije ni bolji ni lošiji od nekog drugog pozicionog brojnog sistema.
Koristimo ga iz istorijskih razloga, a u upotrebu je ušao veoma davno, najverovatnije zbog
deset prstiju na rukama. (Postoje zabeleške i o brojnim sistemima sa osnovom 20; mora da
su se sjajno zabavljali kada su računali na prste. Kako su se, recimo u Mezopotamiji, dosetili
da koriste sistem sa osnovom 60 ne mogu ni da pretpostavim.)
Uopšteno, ako radimo sa brojnim sitemom sa osnovom b, onda se kao “cifre” koriste
brojevi iz skupa {0, 1, . . . , b − 1}, a nizom “cifara” ak ak−1 ak−2 . . . a1 a0 sistema sa osnovom b
predstavljan je sledeći broj:

ak · bk + ak−1 · bk−1 + . . . + a1 · b1 + a0 · b0 .

Prvi elektronski računar, ENIAC, (koji je proradio na Univerzitetu Ilinois, SAD, u julu
1946.) je takodje koristio decimalni brojni sistem. Za pamćenje jedne cifre bilo mu je
potrebno 10 elektronskih cevi, od kojih je samo jedna radila u jednom trenutku. Na primer,
da bi zapamtio četvorocifreni broj 2940 morao je da angažuje 40 elektronskih cevi i to ovako:

0123456789
2 ◦◦•◦◦◦◦◦◦◦
4 ◦◦◦◦•◦◦◦◦◦
9 ◦◦◦◦◦◦◦◦◦•
0 •◦◦◦◦◦◦◦◦◦

ENIAC je i po drugim osnovama bio veoma glupava mašina, a ostao je zapamćen samo zato
što je bio prva elektronska računska mašina koja je proradila.

Zadaci.
1. Sledeći brojevi su dati u raznim osnovama. Osnova je naznačena u zagradi u donjem
indeksu nakon broja. Prevesti ih u decimalni sistem: 2102(3) , 2102(4) , 310(7) .

[Sveska 1] 1 (12)
2. Sven Svenson, kapetan intergalaktičkog broda, je tokom svoje poslednje posete planeti
Xūç upoznao glavnog inspektora kanala, generala Nepa koji ga je pozvao na večeru.
Tom prilikom je Svenson sreo gospodju Nepo i njihova tri sina: Lu, Ku i Bu. Nakon
ozbiljne diskusije tokom koje su se obojica složili da se moderna civilizacija na planeti
Xūç razvijala na potpuno isti način kao i moderna civilizacija na Zemlji, kapetan
Svenson je svojim novim prijateljima pokazao fotografiju svoje male plavokose kćeri
Stine i rekao da ima 3 godine. Svi su se slatko nasmejali kada su Nepo, njegova supruga
i njihovi sinovi počeli da se zabavljaju pokazujući svojim troprstim rukama da Stina
ima tri godine.
Tokom večere im se pridružio i ministar saobraćaja planete Xūç, dr Baluk, kako bi se
upoznao sa kapetanom Svensonom. Kad je dr Baluk upitao generala Nepa koliko su
stara njegova deca, ovaj je, u duhu pravog matematičara-amatera, odgovorio: “Otkrio
sam neke vrlo interesantne činjenice o starosti naše dece. Proizvod broja godina koje
imaju Lu, Ku i Bu je 3520. Zbir ta tri broja je 14 puta veći od broja godina koje
ima ćerka kapetana Svensona. Razume se, ne pravim razliku izmedju dužine godine na
Zemlji i na Xūçu. Takodje, starost dece izražavam celim brojevima, da bi se računanje
pojednostavilo.”
Nakon kraćeg računanja, ministar je odvratio “Na žalost, još uvek nemam dovoljno
podataka da bih mogao izračunati odgovor na moje pitanje”.
“Izvinite, molim vas”, rekao je Nepo na to. “Zaboravio sam da napomenem da moj
najstariji sin ima onoliko godina koliko dva mladja imaju zajedno.”
“E, sada je sve jasno!” odgovori ministar, “Štaviše, veoma jednostavno!”
Koliko godina imaju Lu, Ku i Bu?

Konverzija u decimalni i iz decimalnog brojnog sistema. Broj, naravno, ne zavisi od


toga u kom sistemu je zapisan. Na primer, 10, 1010(2) , 13(7) su samo različiti zapisi jednog
istog broja – broja prstiju na obe ruke prosečnog homo sapiensa. Zato što je zapisivanje
brojeva stvar konvencije, sasvim je prirodno da je moguće prelaziti sa jednog zapisa na drugi.
Sada ćemo na nekoliko primera pokazati kako se dati broj konvertuje iz proizvoljnog sistema
u sistem sa osnovom 10, i kako se konvertuje broj iz sistema sa osnovom 10 u proizvoljan
sistem.
Pogledajmo prvo kako dati broj u nekoj osnovi da konvertujemo u sistem sa osnovom 10.
Svaka cifra ima svoju težinu, koja je zapravo neki stepen osnove. Recimo, za broj 23014(6)
težine cifara su:
64 63 62 61 60
2 3 0 1 4 (6)
pa je
23014(6) = 2 · 64 + 3 · 63 + 0 · 62 + 1 · 61 + 4 · 60
= 2592 + 648 + 0 + 6 + 4
= 3250.
Zato je 23014(6) = 3250.
Konverzija iz decimalnog sistema u sistem sa osnovom b je takodje jednostavna: broj
delimo sa b sve dok se to može i beležimo ostatke, koje posle pročitamo od kraja ka početku.
Na primer, odredimo zapis broja 9012 u sistemu sa osnovom 7:

[Sveska 1] 2 (12)
količnik ostatak

9012
1287 3 6
183 6
26 1
3 5
0 3

Tako, 9012 = 35163(7) .

Zadaci.

1. Konvertovati sledeće brojeve u decimalni sistem: 563(11) , 101101(2) , 23022(4) , 670(8) .

2. Izvršiti naznačene konverzije:


12312 = (3)

9999 = (9)

32768 = (2)

3. Izvršiti naznačene konverzije:


1209(11) = (8)

32334(5) = (6)

4. (a) Odrediti sve brojeve b ≥ 3 takve da je broj 121(b) kvadrat nekog broja.
(b) Odrediti sve brojeve b ∈ {3, 4, . . . , 100} takve da je broj 2101(b) kvadrat nekog
broja.
(c) Odrediti sve brojeve b ≥ 8 takve da je broj 374(b) kvadrat nekog broja.

5. Naći sve prirodne brojeve n sa sledećom osobinom: kada se broj n zapiše u osnovi 13
dobije se trocifreni broj p0q(13) , a kada se zapiše u osnovi 15 dobije se trocifreni broj
q0p(15) .

6. Naći sve prirodne brojeve n sa sledećom osobinom: kada se broj n zapiše u osnovi 5
dobije se trocifreni broj abc(5) , a kada se broj 2n zapiše u osnovi 5 dobije se trocifreni
broj cba(5) .

7. Naći sve brojeve iz skupa {1, 2, 3, . . . , 200} koji imaju sledeću osobinu: kada se broj
zapiše u osnovi 3, poslednja cifra mu je 0; kada se broj zapiše u osnovi 5, poslednja
cifra mu je 0; kada se broj zapiše u osnovi 7, poslednja cifra mu je ponovo 0.

8. Odrediti najmanji prirodan broj b ≥ 10 takav da je broj 792(b) deljiv brojem 297(b) .

[Sveska 1] 3 (12)
9. Izabrane su tri dekadne cifre različite od nule i ispisani su svi jednocifreni, dvocifreni i
trocifreni brojevi u kojima se pojavljuju samo izabrane cifre, i to svaka najviše jednom.
Može li zbir tih brojeva biti jednak
(a) 1995; (b) 2000; (c) 1960?

Brojni sistemi koji nisu pozicioni. Brojni sistemi koji nisu pozicioni mnogo su stariji
od pozicionih sistema. Nama najbliži je verovatno rimski brojni sistem. Iako on ima neke
sitne elemente pozicionih brojnih sistema (recimo, cifra X se u broju LXV računa kao 10,
dok se u broju XLVI računa kao −10) ipak po svim svojim karakteristikama pripada grupi
nepozicionih brojnih sistema. Ovakvi brojni sistemi nisu loši kada treba zapisati neki broj,
ali prave teškoće sa njima počinju kada poželimo da malko i računamo sa tako zapisanim
brojevima. Kao primer, izračunajte (bez konvertovanja u decimalni zapis!) vrednost sledećeg
izraza:
XLV II · MCMCLV + MMDCCXXXIV

2 Binarni i heksadecimalni brojni sistem


Binarni brojni sistem. Negde početkom 1944. se timu inženjera koji je projektovao
ENIAC pridružio čuveni matematičar Džon fon Nojman (John von Neumann), kome je
odmah bilo jasno da je desetični pristup neefikasan. Kako elektronske komponente, grubo
govoreći, rade po principu “ima struje – nema struje”, binarni brojni sistem je upravo savršen
za projektovanje računara.
Binarni brojni sistem je pozicioni sistem sa osnovom 2, a kao cifre se koriste samo 0 i 1.
Tako, niz cifara 101101(2) u binarnom sistemu predstavlja sledeći decimalni broj

101101(2) = 1 · 25 + 0 · 24 + 1 · 23 + 1 · 22 + 0 · 21 + 1 · 20
= 32 + 8 + 4 + 1
= 45

Fraza “binarna cifra” se veoma često javlja u priči o pogledu na računar iznutra. Zato su
inženjeri smislili sada već standardnu skraćenicu kojom zovu binarne cifre: bit. Skraćenica je
nastala od engleskog binary digit. Inače, bit je reč književnog engleskog jezika i znači delić,
parčence.

Zadaci.

1. Zapisati sledeće decimalne brojeve u binarnom sistemu: 0, 1, 10, 2, 4, 8, 128, 255,


32768, 1129.

2. Zapisati sledeće binarne brojeve u decimalnom sistemu: 110110, 1010, 0, 1, 101010,


10101.

3. Za broj zapisan u decimalnom sistemu znamo da je paran ako i samo ako se završava
cifrom 0, 2, 4, 6, ili 8. Da li postoji slično pravilo koje se odnosi na brojeve zapisane u
binarnom sistemu? A da li postoji pravilo koje nam pomaže da brzo utvrdimo da li je
broj zapisan u binarnom sistemu deljiv sa 4?

[Sveska 1] 4 (12)
4. Koliko je bitova potrebno da bi se zapisao broj 254? A broj 1129?

5. (a) Konvertovati broj 72364723642703243423045(8) iz osnove 8 u osnovu 16.


(b) Konvertovati broj f 36d2a2c652bf 45095f f(16) iz osnove 16 u osnovu 8.

Heksadecimalni brojni sistem. Heksadecimalni brojni sistem je sistem sa osnovom 16.


Kao cifre u ovom sistemu se, prema tome, koriste brojevi iz skupa {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15}. Postojanje “dvocifrenih cifara” stvara mali tehnički problem, jer se,
na primer, iz zapisa 911(16) ne vidi da li se radi o dvocifrenom broju 9 11(16) ili o trocifrenom
broju 9 1 1(16) . Zato je uvedena konvencija da se cifre 10, 11, 12, 13, 14 i 15 označe slovima
a, b, c, d, e i f , redom. Tako, kao skup cifara dobijamo {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d,
e, f }.

Zadaci.

1. Konvertovati u decimalni sistem sledeće heksadecimalne brojeve: 1, 10, 1a, f f , 10d,


f ad4.

2. Konvertovati u heksadecimalni sistem sledeće decimalne brojeve: 65312, 4832, 33261,


415, 22, 65535.

Veza ova dva brojna sistema. Binarni i heksadecimalni brojni sistem su veoma bliski,
i postoji lep način da se brojevi konvertuju iz jednog u drugi direktno. Cifre binarnog broja
podelimo u grupe od po 4, počevši zdesna, i onda svaku grupu pročitamo kao heksadecimalnu
cifru. Evo primera.

11010111011111 → 11|0101|1101|1111 → 11|0101|1101|1111 → 35df.


3 5 d f

Direktna konverzija iz heksadecimalnog u binarni sistem se takodje može obaviti brzo i


efikasno: svaku cifru heksadecimalnog broja zapišemo pomoću četiri binarne cifre i pročitamo
kao jedan binarni broj. Primer:

2 c a d 3
2cad3 → 10 1100 1010 1101 0011 → 101100101011010011.

Zadaci.

1. Konvertovati sledeće binarne brojeve u heksadecimalni sistem: 1101001010111,


1000100010001000, 10010101110

2. Konvertovati sledeće heksadecimalne brojeve u binarni sistem: adf f c1, 19a0c, 101010,
ffff

3. Oktalni sistem je sistem sa osnovom 8.

• Koje cifre se koriste u oktalnom sistemu?

[Sveska 1] 5 (12)
• Opisati kako se neki broj brzo konvertuje iz binarnog u oktalni sistem i iz oktalnog
u binarni sistem. Koliko bita treba da ima jedna grupa? (Napomena: 8 = 23 .)

Etida. Svaku od heksadecimalnih cifara zapisati pomoću tačno četiri bita (uz dopisivanje
nula na početku ako je to neophodno). Na osnovu toga dokazati da je postupak konverzije
heksadecimalno zapisanih brojeva u binarni zapis koga smo opisali dobar:
• Uzeti proizvoljan binarni broj bk−1 bk−2 . . . b1 b0 i pretpostaviti da je k deljivo sa četiri
(ako nije, uvek se na početak može dopisati nekoliko nula kako bi se dobio binarni broj
kome je broj cifara deljiv sa 4).
• Podeliti cifre ovog broja na grupe od po 4 bita i formirati odgovarajući heksadecimalni
broj cm−1 . . . c1 c0 , gde je m = k/4. Zaključiti da su ci elementi skupa {0, 1, . . . , 15}.
Koristiti prvi deo, kao i to da je 16 = 24 .

3 Bulove operacije

Bulova operacija je svako preslikavanje f : {0, 1}n → x y z f (x, y, z)


{0, 1}. Ovaj zapis znači da operacija f uzima n brojeva 0 0 0 0
iz skupa {0, 1} i kao rezultat vraća neki broj ponovo iz 0 0 1 1
skupa {0, 1}. Jedna Bulova operacija sa tri argumenta 0 1 0 0
je data tabelom pored. Na primer, f (1, 0, 1) = 1, dok 0 1 1 0
je f (0, 1, 0) = 0. Bulove operacije su dobile ime po bri- 1 0 0 1
tanskom matematičaru Džordžu Bulu (George Boole) i 1 0 1 1
pokazale su se kao veoma korisne u razvoju hardvera 1 1 0 0
računara. 1 1 1 1
Posebno su interesantne sledeće tri Bulove operacije, koje zovemo osnovne Bulove operacije,
ili logičke operacije, a koje su definisane sa:

x y x∧y x y x∨y x ¬x
0 0 0 0 0 0 0 1
0 1 0 0 1 1 1 0
1 0 0 1 0 1
1 1 1 1 1 1
Prva se zove konjunkcija – logičko “i”, druga se zove disjunkcija – logičko “ili”, a treća
negacija – logičko “ne”.
Od Bulovih operacija možemo praviti nove operacije i sa njima možemo računati na
uobičajeni način.

Zadaci.
1. Neka je f (x, y, z) = (x∧y)∨(x∧¬z). Izračunati vrednost operacije f za sve mogućnosti
argumenata x, y i z. (Napraviti tabelu; koliko različitih redova, osim zaglavlja, treba
da ima ova tabela?)

[Sveska 1] 6 (12)
2. Za Bulovu operaciju f (x, y, z) = (x ∧ y ∧ z) ∨ ¬(x ∨ y ∨ z) napraviti odgovarajuću
tabelu.

3. Za Bulovu operaciju f (x, y, z, u) = ((x∨y)∧¬z)∨(¬(x∧y)∨u) napraviti odgovarajuću


tabelu. (Za Bulovu operaciju sa četiri argumenta tabela treba da ima 16 redova.)

4. Koliko redova ima tabela za Bulovu operaciju sa n argumenata?

Reprezentacija Bulovih operacija. Osnovne Bulove opracije ∧, ∨ i ¬ imaju jedno


veoma važno svojstvo: svaka druga Bulova operacija se može predstaviti pomoću ove tri
specijalne Bulove operacije.
Počnimo jednim primerom. Pokazaćemo kako se op-
eracija koja je data u tabeli desno može predstaviti
x y z f (x, y, z)
pomoću tri osnovne Bulove operacije. Recept se sastoji
0 0 0 0
iz tri koraka.
0 0 1 1 ←
1. Posmatramo samo one redove za koje je vrednost
0 1 0 0
operacije jednaka 1 (redovi označeni strelicom).
0 1 1 0
2. Za svaki takav red napravimo po jedan Bulov
1 0 0 1 ←
izraz, ovako: ako je vrednost promenljive 0 uzmemo
1 0 1 1 ←
njenu negaciju, a ako je vrednost promenljive 1 uzmemo
1 1 0 0
promenljivu bez izmena. Onda uzmemo konjunkciju tako
1 1 1 1 ←
pripremljenih promenljivih ili njihovih negacija.
U navedenom primeru imamo četiri reda u kojima se na kraju javlja jedinica. Odgo-
varajuće konjunkcije su prikazane u tabeli ispod:

x y z konjunkcija
0 0 1 ¬x ∧ ¬y ∧ z
1 0 0 x ∧ ¬y ∧ ¬z
1 0 1 x ∧ ¬y ∧ z
1 1 1 x∧y∧z

3. Reprezentacija Bulove operacije date tabelom se tada dobija kada se uzme disjunkcija
svih ovih konjunkcija. Dakle,

f (x, y, z) = (¬x ∧ ¬y ∧ z) ∨ (x ∧ ¬y ∧ ¬z) ∨ (x ∧ ¬y ∧ z) ∨ (x ∧ y ∧ z).

Zašto ovo radi? Nećemo dati dokaz da je opisani recept dobar, već ćemo se ubediti na
par primera. Pogledajmo, prvo, jedan red iz tabele kome je vrednost operacije 0. Recimo,
na osnovu trećeg reda je f (0, 1, 0) = 0. Drugim rečima, kada je x = 0, y = 1 i z = 0, onda je
f = 0. Kada uvrstimo ove vrednosti u izraz na desnoj strani, dobijamo da su svi disjunkti
(tj. “sabirci”) jednaki 0:

¬x ∧ ¬y ∧ z = ¬0 ∧ ¬1 ∧ 0 = 0
x ∧ ¬y ∧ ¬z = 0 ∧ ¬1 ∧ ¬0 = 0
x ∧ ¬y ∧ z = 0 ∧ ¬1 ∧ 0 = 0
x∧y∧z = 0∧1∧0 = 0

[Sveska 1] 7 (12)
pa je vrednost izraza 0 ∨ 0 ∨ 0 ∨ 0 = 0. Ako sada uvrstimo vrednosti promenljivih iz petog
reda, x = 1, y = 0, z = 0, dobijamo da je tačno jedan disjunkt jednak 1, dok su ostali
jednaki 0:
¬x ∧ ¬y ∧ z = ¬1 ∧ ¬0 ∧ 0 = 0
x ∧ ¬y ∧ ¬z = 1 ∧ ¬0 ∧ ¬0 = 1
x ∧ ¬y ∧ z = 1 ∧ ¬0 ∧ 0 = 0
x∧y∧z = 1∧0∧0 = 0
pa je u ovom slučaju vrednost izraza 0 ∨ 1 ∨ 0 ∨ 0 = 1. Primetimo: tačno onaj disjunkt
koji je nastao od petog reda je jednak 1, a svi ostali su jednaki 0!
Da zaključimo: svaki disjunkt može da “prepozna” red od koga je nastao i tada da vrati
vrednot 1. U svim ostalim slučajevima daje vrednost 0. Ako umesto x, y, z zamenimo
vrednosti iz nekog reda kome je na kraju 0, nijedan disjunkt ga ne prepozna, svi daju
vrednost 0, pa je i vrednost celog izraza 0. Medjutim, ako uvrstimo vrednosti promenljivih
iz nekog reda kome je na kraju 1, njegov disjunkt ga prepozna i dā vrednost 1, ostali daju
vrednost 0, pa je vrednost celog izraza = 0 ∨ . . . ∨ 0 ∨ 1 ∨ 0 ∨ . . . ∨ 0 = 1. Tako dobijamo da
je f predstavljena u obliku
f = D1 ∨ D 2 ∨ . . . ∨ D k ,
a svaki Di radi ovako: “ako je stigao red tabele od koga sam nastao, vraćam 1, inače vraćam
0”.

Zadaci. x y z u f (x, y, z, u)
0 0 0 0 1
1. Bulovu operaciju koja je data tabelom pored pred-
0 0 0 1 0
staviti pomoću osnovnih Bulovih operacija.
0 0 1 0 0
2. Odaberite proizvoljnu Bulovu operaciju sa 4 0 0 1 1 0
promenljive koja u koloni ispod f ima tačno 5 je- 0 1 0 0 0
dinica i predstavite je pomoću osnovnih Bulovih 0 1 0 1 1
operacija. 0 1 1 0 1
0 1 1 1 0
3. Uzmite Bulovu operaciju sa dve promenljive kojoj 1 0 0 0 0
su u koloni ispod f sve nule i predstavite je pomoću 1 0 0 1 0
osnovnih Bulovih operacija. (Napomena: ovo je 1 0 1 0 0
jedini slučaj u kome recept ne radi! Budite lukavi!) 1 0 1 1 0
1 1 0 0 0
1 1 0 1 0
1 1 1 0 1
1 1 1 1 0

Etida.

1. Na ulazu u kontrolni uredjaj C nalaze se tri prekidača x, y i z, a na izlazu sijalica S.


Kontrola C pali sijalicu ako su uključena bar dva prekidača (dakle, ili neka dva ili sva
tri).

[Sveska 1] 8 (12)
x

y
C

(a) Predstaviti ponašanje kontrolnog uredjaja C tabelom (1 = struja protiče; 0 = struja


ne protiče);
(b) Dobijenu Bulovu operaciju predstaviti odgovarajućim izrazom.
(c) Skicirati šemu uredjaja.
2. Dokažite da je x ∨ y = ¬(¬x ∧ ¬y). (Direktnom proverom! Ima samo četiri mogućnosti
za vrednosti promenljivih.) Pitanje: Da li se svaka Bulova operacija zadata tabelom
može predstaviti samo pomoću ∧ i ¬?
3. Dokažite da je x ∧ y = ¬(¬x ∨ ¬y). (Opet direktnom proverom.) Pitanje: Da li se
svaka Bulova operacija zadata tabelom može predstaviti samo pomoću ∨ i ¬?
4. Posmatrajmo Bulovu operaciju ↑ koja je definisana sa x ↑ y = ¬(x ∧ y).
• Dokažite da se ¬ i ∧ mogu dobiti samo od ↑. (Pogledajte šta je x ↑ x i primetite
da je x ∧ y = ¬(x ↑ y).)
• Pitanje: Da li se svaka Bulova operacija zadata tabelom može predstaviti samo
pomoću ↑?
5. Posmatrajmo Bulovu operaciju ↓ koja je definisana sa x ↓ y = ¬(x ∨ y).
• Dokažite da se ¬ i ∨ mogu dobiti samo od ↓.
• Pitanje: Da li se svaka Bulova operacija zadata tabelom može predstaviti samo
pomoću ↓?
6. Pitanje: Da li se svaka Bulova operacija zadata tabelom može predstaviti samo pomoću
∧ i ∨? (Uputstvo: Pogledajte izraze 0 ∧ 0 i 0 ∨ 0. Ako je f (x, y, . . . , z) izraz sas-
tavljen samo od promenljivih x, y, . . . , z i operacija ∧ i ∨, koliko je vrednost izraza
f (0, 0, . . . , 0)? Da li se g(x, y) = x ⇔ y može predstaviti nekim izrazom ovakvog
oblika?)
7. Naći sve binarne Bulove funkcije f takve da se svaka Bulova operacija zadata tabelom
može predstaviti samo pomoću f . (Uputstvo: Neka je f takva operacija. Dokažite
prvo da mora biti f (0, 0) = 1 i f (1, 1) = 0, tj. da tabela za f mora izgledati ovako:
x y f
0 0 1
0 1 (nešto)
1 0 (nešto)
1 1 0

[Sveska 1] 9 (12)
koristeći se idejom iz prethodnog zadatka. Potom razmotrite sve četiri mogućnosti za
f (0, 1) i f (1, 0).)

4 Logičke operacije – osnova hardvera


Prvi elektronski računari su imali posebne uredjaje za svaku operaciju koju su umeli da
izvrše, i zbog toga su umeli da izvrše samo one operacije za koje su imali odgovarajuće
uredjaje. Na primer, ENIAC je imao uredjaj za numeričku integraciju (štagod to bilo) pa
je približne vrednosti integrala računao tako što bi uposlio taj uredjaj. Medjutim, ako je
za rešavanje nekog problema bilo neophodno i numeričko diferenciranje morao mu se dodati
novi uredjaj.
Britanski matematičar Alan Tjuring (Alan Turing) je oštro kritikovao takav pristup grad-
jenju računara (da se za svaki posao koga treba odraditi pravi novi uredjaj koji radi samo
taj posao). On je smatrao da računar treba da bude univerzalna mašina koja ima samo
minimum neophodnih uredjaja koji bi vršili kontrolu toka programa i, eventualno, najos-
novnije aritmetičke operacije, a da se za sve ostale poslove pišu posebni programi koji će
biti pohranjeni u memoriji računara (onako kako se to danas radi). On je bio zagovornik
koncepcije koja je danas u osnovi računarske tehnologije: računar ne treba da bude zbirka
specijalizovanih uredjaja, već univerzalna mašina čije će mogućnosti zavisiti isključivo od
sposobnosti programera.
Grubo govoreći, svi, čak i najmoderniji računari koje danas koristimo, su sagradjeni od
samo tri vrste elektronskih kola (logičkih kapija): “ne”, “i” i “ili”. Milioni ovih kola organi-
zovanih na pravi način osnov su računara kao univerzalne mašine. Ideju ćemo demonstrirati
na primeru hardvera za sabiranje dva binarna broja.
Aritmetičke operacije sa brojevima u binarnom sistemu se izvode na isti način kao odgo-
varajuće operacije u decimalnom sistemu. Binarne brojeve sabiramo “peške” isto kao i
decimalne: potpišemo jedan broj ispod drugog, sabiramo cifru po cifru i vodimo računa o
prenosu. Treba povesti računa samo o tome da je u binarnom sistemu 1 + 1 = 10 (1 + 1 =
“pišem 0, pamtim 1”). Primer:

111 ← prenos
1010
+ 11111
101001

Pretpostavimo sada da su nam data dva binarna broja sa istim brojem cifara (ukoliko
polazni brojevi nemaju isti broj cifara, onom sa manje cifara možemo dopisati nule na
početak). Prilikom sabiranja “peške” osnovni korak se sastoji u tome da saberemo dva bita i
prenos iz prethodnog koraka. Kao rezultat dobijamo jedan bit rezultata i jedan bit prenosa.

[Sveska 1] 10 (12)
x

s(x, y, c)
r(x, y, c)

Slika 1: Polusabirač

Evo slikovitog prikaza ove priče, kao i tablice sabiranja sa prenosom:

zbir novi prenos


x y c s(x, y, c) r(x, y, c)
i-ti korak 0 0 0 0 0
↓ 0 0 1 1 0
prenos → ci+1 ci ci−1 . . . c1 0 1 0 1 0
xn . . . xi+1 xi xi−1 . . . x1 0 1 1 0 1
+ yn . . . yi+1 yi yi−1 . . . y1 1 0 0 1 0
zn . . . zi+1 zi zi−1 . . . z1 1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

Prema priči o predstavljanju Bulovih operacija osnovnim Bulovim operacijama, dobijamo


da se Bulove operacije s(x, y, c) i r(x, y, c) koje su date gornjom tabelom mogu predstaviti
ovako:
s(x, y, c) = (¬x ∧ ¬y ∧ c) ∨ (¬x ∧ y ∧ ¬c) ∨ (x ∧ ¬y ∧ ¬c) ∨ (x ∧ y ∧ c)
r(x, y, c) = (¬x ∧ y ∧ c) ∨ (x ∧ ¬y ∧ c) ∨ (x ∧ y ∧ ¬c) ∨ (x ∧ y ∧ c).

Elektronsko kolo kojim se ove dve Bulove operacije realizuju odjednom se zove polusabirač
i predstavljeno je na Slici 1. Ulaz u polusabirač su tri bita (x, y i c), a izlaz čine dva bita (zbir
s i novi prenos r). Napomenimo da je na Slici 1 prikazana veoma naivna verzija polusabirača.
Stvarni polusabirači u stvari izgledaju drugačije, zato što se pre implementacije u harvderu
vrše razne optimizacije kako bi se uštedelo na komponentama. No, osnovna ideja je ista.
Hardver kojim se realizuje sabiranje binarnih brojeva iste dužine se zove sabirač i sastoji
se od nekoliko polusabirača. Sabirač 4-bitnih binarnih brojeva je prikazan na Slici 2. Ulaz
u sabirač predstavljaju binarni brojevi x3 x2 x1 x0 i y3 y2 y1 y0 , dok se na izlazu dobija rezultat
z3 z2 z1 z0 , i informacija o tome da li je rezultat duži od četiri bita (linija overflow). Overflow

[Sveska 1] 11 (12)
x0
x1
x2
x3
y0
y1
y2
y3
0
x s z0
y P S0 x s z1
c r y P S1 x s z2
c r y P S2 x s z3
c r y P S3 overflow
c r

Slika 2: Sabirač

nije ništa drugo do prenos poslednjeg sabiranja. Polusabirači P S0 , P S1 , P S2 i P S3 su


identični. Označeni su brojevima samo zato da bismo se lakše snašli u nepreglednim šumama
linija.

Etida. Napraviti polusabirač polazeći samo od kola za operacije ∧, ∨ i ⊕, gde je poslednja


operacija data sa
x y x⊕y
0 0 0
0 1 1
1 0 1
1 1 0.
(Uputstvo: s(x, y, c) se realizuje veoma lako, dok je r(x, y, c) = (x ∧ y) ∨ ((x ⊕ y) ∧ c).)

Napraviti polusabirač polazeći samo od kola za operaciju ↑. (Uputstvo: kao u prethodnoj


etidi pokaže se da je ¬x = 1 ↑ x, x ∧ y = 1 ↑ (x ↑ y), i x ∨ y = ((1 ↑ x) ↑ (1 ↑ y)).)

[Sveska 1] 12 (12)

You might also like