Upload
tranlien
View
229
Download
0
Embed Size (px)
Citation preview
Programiranje 2
Milena Vujo�sevi�c Jani�ci�c
Jelena Graovac
www.matf.bg.ac.rs/~milena
www.matf.bg.ac.rs/~jgraovac
Beograd, 23. februar, 2016.
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Pregled
1 O kursu
2 Bitovski operatori
3 Organizacija izvornog koda
4 Organizacija memorije
5 Literatura
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
LiteraturaObaveze studenata
Pregled
1 O kursu
Literatura
Obaveze studenata
2 Bitovski operatori
3 Organizacija izvornog koda
4 Organizacija memorije
5 Literatura
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
LiteraturaObaveze studenata
Programiranje 2
Programiranje 2
Kurs obraduje napredne pojmove proceduralnog programiranja i
osnovne pojmove algoritama i struktura podataka.
Kurs je prirodan nastavak kursa Programiranje 1
6 ESPB bodova
Fond �casova: 2 �casa predavanja, 2 �casa ve�zbi i 1 �cas
praktikuma
Jedinstvena strana kursa
http://www.programiranje2.matf.bg.ac.rs/
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
LiteraturaObaveze studenata
Literatura
Osnovna literatura (dostupna preko web-a)
Predrag Jani�ci�c, Filip Mari�c: Programiranje 2 (PJ-FM-P2)Gordana Pavlovi�c-La�zeti�c: Programiranje 2 (GPL-P2)Filip Mari�c, Predrag Jani�ci�c: Programiranje 1 (FM-PJ-P1)Novo: Programiranje 2, zbirka zadataka sa re�senjima
(naredne nedelje u �stampanom i elektronskom obliku)
Dodatna literatura
Brian Kernighan, Dennis Ritchie: The C ProgrammingLanguageRobert Sedgewick: Algorithms in C
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
LiteraturaObaveze studenata
Literatura
Materijali sa slajdova su uglavnom preuzeti iz knjiga
Predrag Jani�ci�c, Filip Mari�c: Programiranje 2Filip Mari�c, Predrag Jani�ci�c: Programiranje 1
ili sa slajdova prof Pavlovi�c-La�zeti�c.
Za pripremu ispita, nije dovoljno koristiti samo slajdove,
potrebno je u�citi iz knjige!
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
LiteraturaObaveze studenata
Obaveze studenata
Predispitne obaveze:
Aktivnost na praktikumima: 5 poenaKolokvijum u kolokvijumskoj nedelji: 35 poena (20 poenateorija, 15 poena zadaci)
Zavr�sni ispit:
Teorija: 30 poena (prag 30%)Zadaci: 10 poena (kvali�kacioni - prag 50%) + 25 poena(prakti�cni na ra�cunarima - prag 30%)
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Pregled
1 O kursu
2 Bitovski operatori
Operatori i njihove osobine
Maske
3 Organizacija izvornog koda
4 Organizacija memorije
5 Literatura
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Operatori za rad nad bitovima
C podr�zava naredne operatore za rad nad pojedina�cnimbitovima, koji se mogu primenjivati samo na celobrojneargumente
~ bitovska negacija;& bitovska konjunkcija;| bitovska disjunkcija;^ bitovska eksluzivna disjunkcija;<< pomeranje (�siftovanje) bitova ulevo;>> pomeranje (�siftovanje) bitova udesno;&=, |=, ^=, >>=, >>= � bitovske dodele � ovi operatorikombinuju bitovske operatore sa dodelom
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Operatori za rad nad bitovima
C podr�zava naredne operatore za rad nad pojedina�cnimbitovima, koji se mogu primenjivati samo na celobrojneargumente
~ bitovska negacija;& bitovska konjunkcija;| bitovska disjunkcija;^ bitovska eksluzivna disjunkcija;<< pomeranje (�siftovanje) bitova ulevo;>> pomeranje (�siftovanje) bitova udesno;&=, |=, ^=, >>=, >>= � bitovske dodele � ovi operatorikombinuju bitovske operatore sa dodelom
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Prioritet operatora i asocijativnost
1. (), [ ] sleva nadesno
2. !, ~, ++,--, +, �, *, &, (tip) zdesna nalevo
3. *, /, % sleva nadesno
4. +, � sleva nadesno
5. <<, >> sleva nadesno
6. <, <=, >, >= sleva nadesno
7. ==, != sleva nadesno
8. & sleva nadesno
9. ^ sleva nadesno
10. | sleva nadesno
11. && sleva nadesno
12. || sleva nadesno
13. ?: zdesna ulevo
14. =,+=,-=,/=,%=,&=,^=,|=,<<=,>>= zdesna ulevo
15. , sleva nadesnoMilena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Prioritet operatora
Kao unarni operator, operator ~ ima najve�ci prioritet i desno je
asocijativan.
Prioritet operatora pomeranja je najve�ci od svih binarnih
bitovskih operatora � nalazi se izmedu prioriteta aritmeti�ckih i
relacijskih operatora.
Ostali bitovski operatori imaju prioritet izmedu relacijskih i
logi�ckih operatora
& ima ve�ci prioritet od ^ koji ima ve�ci prioritet od |. Ovi
operatori imaju levu asocijativnost.
Operatori dodele imaju skoro najni�zi prioritet i desnu
asocijativnost
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0
0
0 1
0
1 0
0
1 1
1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
0
A ¬ A
0
1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1
0
1 0
0
1 1
1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
0
A ¬ A
0
1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1 0
1 0
0
1 1
1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
0
A ¬ A
0
1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1 0
1 0 0
1 1
1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
0
A ¬ A
0
1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1 0
1 0 0
1 1 1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
0
A ¬ A
0
1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1 0
1 0 0
1 1 1
A B A ∨ B
0 0 0
0 1
1
1 0
1
1 1
1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
0
A ¬ A
0
1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1 0
1 0 0
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0
1
1 1
1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
0
A ¬ A
0
1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1 0
1 0 0
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0 1
1 1
1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
0
A ¬ A
0
1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1 0
1 0 0
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0 1
1 1 1
A B A ∨ B
0 0
0
0 1
1
1 0
1
1 1
0
A ¬ A
0
1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1 0
1 0 0
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0 1
1 1 1
A B A ∨ B
0 0 0
0 1
1
1 0
1
1 1
0
A ¬ A
0
1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1 0
1 0 0
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0 1
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0
1
1 1
0
A ¬ A
0
1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1 0
1 0 0
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0 1
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0 1
1 1
0
A ¬ A
0
1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1 0
1 0 0
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0 1
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0 1
1 1 0
A ¬ A
0
1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1 0
1 0 0
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0 1
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0 1
1 1 0
A ¬ A
0 1
1
0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori
A B A ∧ B
0 0 0
0 1 0
1 0 0
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0 1
1 1 1
A B A ∨ B
0 0 0
0 1 1
1 0 1
1 1 0
A ¬ A
0 1
1 0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovsko i
& � bitovsko i � primenom ovog operatora vr�si se konjunkcija
pojedina�cnih bitova dva argumenta � i-ti bit rezultata
predstavlja konjunkciju i-tih bitova argumenata.
Primer
207 & 63 = 15
00000000000000000000000011001111 <---207
& 00000000000000000000000000111111 <---63
==================================
00000000000000000000000000001111 <---15
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovsko ili
| � bitovsko ili � primenom ovog operatora vr�si se
disjunkcija pojedina�cnih bitova dva argumenta � i-ti bit
rezultata predstavlja disjunkciju i-tih bitova argumenata.
Primer
207 | 63 = 255
00000000000000000000000011001111 <---207
| 00000000000000000000000000111111 <---63
==================================
00000000000000000000000011111111 <---255
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovska negacija
~ � jedini�cni komplement � primenom ovog operatora vr�si se
komplementiranje pojedina�cnih bitova argumenta � i-ti bit
rezultata predstavlja komplement i-tog bita argumenta
Primer
~63 = -64 (jer je u pitanju celobrojna oznacena
konstanta)
00000000000000000000000000111111 <--- 63
==================================
11111111111111111111111111000000 <--- -64
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovsko xor
^ � bitovsko xor � primenom ovog operatora vr�si se
ekskluzivna disjunkcija pojedina�cnih bitova dva argumenta �
i-ti bit rezultata predstavlja ekskluzivna disjunkcija i-tih bitova
argumenata.
Primer
207 ^ 63 = 240
00000000000000000000000011001111 <---207
^ 00000000000000000000000000111111 <---63
==================================
00000000000000000000000011110000 <---240
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
�Siftovanje u levo
<< � levo pomeranje (�siftovanje) � primenom ovog operatora
bitovi prvog argumenta se pomeraju u levo za broj pozicija
naveden kao drugi argument. Po�cetni bitovi prvog argumenta
se zanemaruju, dok se na zavr�sna mesta rezultata upisuju nule.
Primer
63 << 3 = 504
00000000000000000000000000111111 <--- 63
================================ << 3
00000000000000000000000111111000 <--- 504
Levo pomeranje za jednu poziciju odgovara mno�zenju sa dva.
Levo pomeranje za n pozicija odgovara mno�zenju sa n-timstepenom dvojke.
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
�Siftovanje u desno
>> � desno pomeranje (�siftovanje) � primenom ovog
operatora bitovi prvog argumenta se pomeraju u desno za broj
pozicija naveden kao drugi argument.
Krajnji (desni) bitovi prvog argumenta se zanemaruju
Po�cetni (levi) bitovi prvog argumenta:
logi�cko pomeranje � popunjavaju se nulamaaritmeti�cko pomeranje � popunjavanje bitovima znaka
Aritmeti�cko pomeranje za jedno mesto � deljenje sa dva
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
�Siftovanje u desno
Koje pomeranje �ce se vr�siti zavisi od tipa prvog argumenta:
neozna�cen tip � logi�cko pomeranjeozna�cen tip � aritmeti�cko pomeranje
Primer
63 >> 3 = 7
00000000000000000000000000111111 <--- 63
================================ >> 3
00000000000000000000000000000111 <--- 7
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Napomena
Bitovske operatore ne treba me�sati sa logi�ckim operatorima.
Na primer, vrednost izraza 1 && 2 je 1 (ta�cno i ta�cno je
ta�cno) dok je vrednost izraza 1&2 jednaka 0
1 & 2 = 0
00000000000000000000000000000001 <--- 1
& 00000000000000000000000000000010 <--- 2
================================
00000000000000000000000000000000 <--- 0
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskih operatora
Kako bi se postigao �zeljeni efekat nad bitovima nekog broja,
obi�caj je da se vr�si njegovo kombinovanje bitovskim
operatorima sa specijalno pripremljenim konstantama koje se
nazivaju maske.
Za gradenje maski koriste se osobine bitovskih operatora
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog i
Osobina konjunkcije je da je za svaki bit b, vrednost b & 0
jednaka 0, dok je vrednost b & 1 jednaka b.
Ovo zna�ci da se konjunkcijom sa nekom maskom dobija
rezultat koji je jednak broju koji se dobije kada se u broj x
upi�su nule na sve one pozicije na kojima maska ima bit 0, dok
ostali bitovi ostaju neizmenjeni.
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog i
Primer
Napisati naredbu koja na i-to mesto broja n postavlja bit 0, dok
ostali bitovi ostaju nepromenjeni.
Re�senje:
Potrebno je uraditi bitovsko & sa maskom koja se sastoji od svih
jedinica, a jedino na i-tom mestu je bit nula.
Ova maska se dobija
negacijom maske koja sadr�zi sve nule, a na i-tom mestu jedinicu.
Maska koja sadr�zi na i-tom mestu jedinicu mo�ze se dobiti
pomeranjem broja 1 za i mesta u levo.
K�od:
n & (~(1 << i))
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog i
Primer
Napisati naredbu koja na i-to mesto broja n postavlja bit 0, dok
ostali bitovi ostaju nepromenjeni.
Re�senje:
Potrebno je uraditi bitovsko & sa maskom koja se sastoji od svih
jedinica, a jedino na i-tom mestu je bit nula. Ova maska se dobija
negacijom maske koja sadr�zi sve nule, a na i-tom mestu jedinicu.
Maska koja sadr�zi na i-tom mestu jedinicu mo�ze se dobiti
pomeranjem broja 1 za i mesta u levo.
K�od:
n & (~(1 << i))
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog i
Primer
Napisati naredbu koja na i-to mesto broja n postavlja bit 0, dok
ostali bitovi ostaju nepromenjeni.
Re�senje:
Potrebno je uraditi bitovsko & sa maskom koja se sastoji od svih
jedinica, a jedino na i-tom mestu je bit nula. Ova maska se dobija
negacijom maske koja sadr�zi sve nule, a na i-tom mestu jedinicu.
Maska koja sadr�zi na i-tom mestu jedinicu mo�ze se dobiti
pomeranjem broja 1 za i mesta u levo.
K�od:
n & (~(1 << i))
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog i
Primer
Napisati naredbu koja na i-to mesto broja n postavlja bit 0, dok
ostali bitovi ostaju nepromenjeni.
Re�senje:
Potrebno je uraditi bitovsko & sa maskom koja se sastoji od svih
jedinica, a jedino na i-tom mestu je bit nula. Ova maska se dobija
negacijom maske koja sadr�zi sve nule, a na i-tom mestu jedinicu.
Maska koja sadr�zi na i-tom mestu jedinicu mo�ze se dobiti
pomeranjem broja 1 za i mesta u levo.
K�od:
n & (~(1 << i))
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog i
Primer
Napisati naredbu koja na i-to mesto broja n postavlja bit 0, dok
ostali bitovi ostaju nepromenjeni.
Re�senje:
Potrebno je uraditi bitovsko & sa maskom koja se sastoji od svih
jedinica, a jedino na i-tom mestu je bit nula. Ova maska se dobija
negacijom maske koja sadr�zi sve nule, a na i-tom mestu jedinicu.
Maska koja sadr�zi na i-tom mestu jedinicu mo�ze se dobiti
pomeranjem broja 1 za i mesta u levo.
K�od:
n & (~(1 << i))
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog ili
Osobina disjunkcije je da je za svaki bit b, vrednost b | 0
jednaka b, dok je vrednost b | 1 jednaka 1.
Dakle, disjunkcijom broja x sa nekom maskom dobija se
rezultat u kojem su upisane jedinice na sve one pozicije na
kojima maska ima bit 1, dok ostali bitovi ostaju neizmenjeni.
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog ili
Primer
Napisati naredbu koja na i-to mesto broja n postavlja bit 1, dok
ostali bitovi ostaju nepromenjeni.
Re�senje:
Potrebno je uraditi bitovsko | sa maskom koja se sastoji od svih
nula, a jedino na i-tom mestu je bit 1.
Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u
levo.
K�od:
n | (1 << i)
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog ili
Primer
Napisati naredbu koja na i-to mesto broja n postavlja bit 1, dok
ostali bitovi ostaju nepromenjeni.
Re�senje:
Potrebno je uraditi bitovsko | sa maskom koja se sastoji od svih
nula, a jedino na i-tom mestu je bit 1. Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u
levo.
K�od:
n | (1 << i)
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog ili
Primer
Napisati naredbu koja na i-to mesto broja n postavlja bit 1, dok
ostali bitovi ostaju nepromenjeni.
Re�senje:
Potrebno je uraditi bitovsko | sa maskom koja se sastoji od svih
nula, a jedino na i-tom mestu je bit 1. Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u
levo.
K�od:
n | (1 << i)
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog ili
Primer
Napisati naredbu koja na i-to mesto broja n postavlja bit 1, dok
ostali bitovi ostaju nepromenjeni.
Re�senje:
Potrebno je uraditi bitovsko | sa maskom koja se sastoji od svih
nula, a jedino na i-tom mestu je bit 1. Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u
levo.
K�od:
n | (1 << i)
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog xor
Osobina eksluzivne disjunkcije je da za svaki bit b, vrednost
b ^ 0 jednaka b, dok je vrednost b ^ 1 jednaka ~b.
Ovo zna�ci da se eksluzivnom disjunkcijom sa nekom maskom
dobija rezultat koji je jednak broju koji se dobije kada se
invertuju bitovi na onim pozicijama na kojima se u maski
nalazi jedinica.
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog xor
Primer
Napisati naredbu koja invertuje bit na i-tom mestu broja n.
Re�senje:
Potrebno je uraditi bitovsko ^ sa maskom koja se sastoji od svih
nula, a jedino na i-tom mestu je bit 1. Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u
levo.
K�od:
n ^ (1 << i)
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog xor
Primer
Napisati naredbu koja invertuje bit na i-tom mestu broja n.
Re�senje:
Potrebno je uraditi bitovsko ^ sa maskom koja se sastoji od svih
nula, a jedino na i-tom mestu je bit 1. Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u
levo.
K�od:
n ^ (1 << i)
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Primena bitovskog xor
Primer
Napisati naredbu koja invertuje bit na i-tom mestu broja n.
Re�senje:
Potrebno je uraditi bitovsko ^ sa maskom koja se sastoji od svih
nula, a jedino na i-tom mestu je bit 1. Maska koja sadr�zi na i-tommestu jedinicu mo�ze se dobiti pomeranjem broja 1 za i mesta u
levo.
K�od:
n ^ (1 << i)
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Operatori i njihove osobineMaske
Bitovski operatori - osnovna pravila
Ukoliko �zelimo da u okviru broja postavimo nule na neke
izabrane pozicije, radimo bitovsko i sa maskom koja sadr�zi nule
na mestima gde �zelimo da postavimo nulu, a na svim ostalim
mestima maska treba da sadr�zi jedinice
Ukoliko �zelimo da u okviru broja postavimo jedinice na neke
izabrane pozicije, radimo bitovsko ili sa maskom koja sadr�zi
jedinice na mestima gde �zelimo da postavimo jedinice, a na
svim ostalim mestima maska treba da sadr�zi nule
Ukoliko �zelimo da invertujemo bitove na odredenim pozicijama,
radimo bitovsku ekskluzivnu disjunkciju sa maskom koja sadr�zi
jedinice na mestu gde �zelimo da radimo invertovanje, a na
svim ostalim mestima maska treba da sadr�zi nule
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Pregled
1 O kursu
2 Bitovski operatori
3 Organizacija izvornog koda
4 Organizacija memorije
5 Literatura
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Organizacija izvornog koda
Problemi koje ste do sada re�savali obuhvatali su male i
jednostavne programe koji su bili precizno de�nisani
Za organizovanje slo�zenih programa neophodno je
napraviti funkcionalnu dekompoziciju problema, tj. podeluslo�zenih zadataka na jednostavnije poslove i izdvajanje uzasebne funkcijede�nisanje odgovaraju�cih tipova podataka i organizovanjepodataka de�nisanjem odgovaraju�cih promenljivih.
Primer: matemati�cki softver
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Organizacija izvornog koda
Veliki programi se organizuju u vi�se datoteka tj. modula koji
sadr�ze podatke i funkcije koji objedinjavaju odredenufunkcionalnost
Osnovna podela uklju�cuje razdvajanje deklaracija u datoteke
zaglavlja (ekstenzija .h) i de�nicija (ekstenzija .c)
Podela izvornog koda po datotekama omogu�cava
ponovno kori�s�cenje koda � gradenjem bibliotekatimski razvoj softveraprevodenje samo onih delova koda koji su menjani
Primer: matemati�cki softver � kompleksni brojevi, polinomi,
skupovi, razlomci, vektori, matrice, geometrijske �gure u ravni
i prostoru...
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Organizacija izvornog koda
Va�zno je znati mehanizam povezanosti identi�katora da bi se
razdvajanje koda moglo uraditi na ispravan na�cin
Pretprocesor i linker omogu�cavaju spajanje datoteka u
jedinstven izvr�sni program
Postoje alati koji olak�savaju prevodenje koda koji je podeljen
po datotekama, na primer program make
Razumevanje ove podele kao i procesa prevodenja jako je
va�zno za prakti�cni deo ispita
Detaljni primeri � na ve�zbama i praktikumima
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment
Pregled
1 O kursu
2 Bitovski operatori
3 Organizacija izvornog koda
4 Organizacija memorije
Izvr�savanje programa
Organizacija memorije izvr�snog programa
Stek segment
5 Literatura
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment
Izvr�savanje programa
Nakon uspe�snog prevodenja, program se mo�ze izvr�siti
Zahtev za izvr�savanjem programa se izdaje operativnom
sistemu
Program koji treba da bude izvr�sen najpre se u�citava iz spoljne
memorije u radnu memoriju ra�cunara.
U fazi izvr�savanja mogu�ce je da dode do gre�saka koje nije bilo
mogu�ce detektovati u fazi prevodenja i povezivanja.
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment
Izvr�savanje programa
Pre kona�cne distribucije korisnicima, program se obi�cno
intenzivno testira
Testiranjem se pronalaze gre�ske koje je potrebno ispraviti u
izvornom kodu
U pronala�zenju gre�ske mogu pomo�ci programi koji se nazivaju
debageri
Da bi program mogao da bude analiziran primenom debagera,
on mora biti preveden na poseban na�cin, tako da izvr�sna verzija
sadr�zi i informacije o izvornom k�odu (za gcc to je opcija -g).
Takva verzija izvr�snog programa zove se debag verzija, a
verzija koja se isporu�cuje krajnjem korisniku zove se riliz (engl.
release).
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment
Organizacija memorije izvr�snog programa
Na�cin organizovanja i kori�s�cenja memorije u fazi izvr�savanja
programa mo�ze se razlikovati od jednog do drugog operativnog
sistema.
Kada se izvr�sni program u�cita u radnu memoriju ra�cunara, biva
mu dodeljena odredena memorija i zapo�cinje njegovo
izvr�savanje.
Dodeljena memorija organizovana je u nekoliko delova kojezovemo segmenti ili zone:
segment k�oda (engl. code segment ili text segment);segment podataka (engl. data segment);stek segment (engl. stack segment);hip segment (engl. heap segment).
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment
Segmenti u memoriji
Fon Nojmanova arhitektura ra�cunara predvida da se u memoriji
�cuvaju podaci i programi.
Segment k�oda � u ovom segmentu nalazi se s�am izvr�sni k�od
programa, ukoliko se pokrene vi�se instanci jednog programa,
ovaj segment mo�ze da bude zajedni�cki za sve instance (zavisi
od operativnog sistema)
Segment podataka � u ovom segmentu �cuvaju se odredenevrste promenljivih koje su zajedni�cke za ceo program: globalne
promenljive, promenljive koje imaju stati�cki �zivotni vek, kao i
konstantni podaci (naj�ce�s�ce konstantne niske); ukoliko se
pokrene vi�se instanci jednog programa, svaka instanca ima svoj
zaseban segment podataka
Hip segment � u ovom segmentu nalaze se dinami�cki alocirani
podaci
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment
Stek segment
Stek segment ili programski stek poziva (engl. call stack) �cuva
sve podatke koji karakteri�su izvr�savanje funkcija.
Podaci koji odgovaraju jednoj instanci funkcije organizovani su
u takozvani stek okvir (engl. stack frame).
Stek okvir jedne instance funkcije, izmedu ostalog, sadr�zi:
argumente funkcije;lokalne promenljive (promenljive deklarisane unutar funkcije);medurezultate izra�cunavanja;adresu povratka (koja ukazuje na to odakle treba nastavitiizvr�savanje programa nakon povratka iz funkcije);adresu stek okvira funkcije pozivaoca.
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment
Stek segment
Veli�cina stek segmenta obi�cno je ograni�cena.
Zbog toga je po�zeljno izbegavati sme�stanje jako velikih
podataka na segment steka.
Primer
int main() { int a[1000000];
int a[1000000]; int main() {
... ...
} }
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment
Stek segment
Stek poziva je struktura tipa LIFO ("last in - �rst out") �
stek okvir se mo�ze dodati samo na vrh steka i sa steka se mo�ze
ukloniti samo okvir koji je na vrhu
Stek okvir za instancu funkcije se kreira onda kada funkcija
treba da se izvr�si i taj stek okvir se oslobada (preciznije, smatra
se nepostoje�cim) onda kada se zavr�si izvr�savanje funkcije.
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment
Stek segment
Ako izvr�savanje programa po�cinje izvr�savanjem funkcije main,
prvi stek okvir se kreira za ovu funkciju.
Ako funkcija main poziva neku funkciju f, na vrhu steka, iznad
stek okvira funkcije main, kreira se novi stek okvir za ovu
funkciju.
Ukoliko funkcija f poziva neku tre�cu funkciju, onda �ce za nju
biti kreiran stek okvir na novom vrhu steka.
Kada se zavr�si izvr�savanje funkcije f, onda se vrh steka vra�ca
na prethodno stanje i prostor koji je zauzimao stek okvir za f
se smatra slobodnim (iako on ne�ce biti zaista obrisan).
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Izvr�savanje programaOrganizacija memorije izvr�snog programaStek segment
Stek segment
Nacrtati stek okvire za izvr�savanje slede�ceg koda:
Primer
int kub(int a) {
return a*a*a;
}
int suma_kubova_i_uvecanje(int a[], int n) {
int rezultat = 0, i;
for(i=0; i<n; i++)
rezultat += kub(a[i]++);
return rezultat;
}
int main() {
int a[3]={0, 1, 2}, s;
s = suma_kubova_i_uvecanje(a, sizeof(a)/sizeof(int));
printf("Rezultat je %d\n", s);
return 0;
}
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Pregled
1 O kursu
2 Bitovski operatori
3 Organizacija izvornog koda
4 Organizacija memorije
5 Literatura
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2
O kursuBitovski operatori
Organizacija izvornog kodaOrganizacija memorije
Literatura
Literatura
Slajdovi su pripremljeni na osnovu poglavlja 6.4.5 i 9 knjige
Filip Mari�c, Predrag Jani�ci�c: Programiranje 1
i poglavlja 6.5 knjige
Predrag Jani�ci�c, Filip Mari�c: Programiranje 2
Za pripremu ispita, slajdovi nisu dovoljni, neophodno je u�citi iz
knjige!
Milena Vujo�sevi�c Jani�ci�c Jelena Graovac Programiranje 2