Programiranje 1 3. predavanje prošireno Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 3. predava
|
|
- Matjaž Antonijević
- пре 5 година
- Прикази:
Транскрипт
1 Programiranje 1 3. predavanje prošireno Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 3. predavanje prošireno p. 1/120
2 Sadržaj proširenog predavanja Osnovni tipovi podataka u računalu (pregled): Višekratnici byte-a, odn. riječi (bez strukture). Znakovi, logičke vrijednosti. Cijeli brojevi bez predznaka i s predznakom. Realni (floating point) brojevi. Napomena: ovaj dio nije proširen! Prog1 2018, 3. predavanje prošireno p. 2/120
3 Sadržaj proširenog predavanja (nastavak) Cijeli brojevi prikaz i aritmetika (prošireno): Prikaz brojeva bez predznaka. Sustav ostataka, prsten ostataka modulo 2 n. Modularna aritmetika cijelih brojeva. Aritmetika adresa obična aritmetika. Dijeljenje cijelih brojeva Euklidov teorem, cjelobrojni kvocijent i ostatak. Prikaz brojeva s predznakom sustav ostataka. Prikaz negativnih brojeva komplementiraj i dodaj 1. Dijeljenje cijelih brojeva s predznakom. Tipične pogreške u korištenju cijelih brojeva. Prog1 2018, 3. predavanje prošireno p. 3/120
4 Prikaz podataka u računalu Prog1 2018, 3. predavanje prošireno p. 4/120
5 Sadržaj Osnovni tipovi podataka u računalu (pregled): Višekratnici byte-a, odn. riječi (bez strukture). Znakovi, logičke vrijednosti. Cijeli brojevi bez predznaka. Cijeli brojevi s predznakom. Realni (floating point) brojevi. Prog1 2018, 3. predavanje prošireno p. 5/120
6 Osnovni tipovi podataka u računalu Jednostavno rečeno, osnovni ili fundamentalni tipovi podataka u računalu su: one cjeline ili blokovi bitova s kojima računalo zna nešto raditi, i to neovisno o njihovom sadržaju. To znači da postoje instrukcije koje nešto rade s tim cjelinama kao operandima, bez obzira na eventualni dodatni tip operanda. U ovom kontekstu je tip = interpretacija (odnosno, značenje) sadržaja. Tipični primjer takvih instrukcija su instrukcije za transfer tih cjelina izmedu memorije i registara procesora. Prog1 2018, 3. predavanje prošireno p. 6/120
7 Osnovni tipovi podataka (nastavak) Ako se sjetimo pravokutnog izgleda memorije, onda u te tipove sigurno ulaze osnovne cjeline koje možemo adresirati, dakle, ono što smo ranije (u skici memorije) nazvali riječ/byte. Napomena: kasnije smo se dogovorili da pojam riječ znači nešto drugo prostor za spremanje cijelih brojeva. Osim toga, ovisno o veličini osnovne stranice (jedne adrese) memorije, računalo može znati raditi i s manjim cjelinama dijelovima osnovne cjeline, ako je ona dovoljno velika (jedan byte se ne dijeli), većim cjelinama blokovima osnovnih cjelina. Prog1 2018, 3. predavanje prošireno p. 7/120
8 Osnovni tipovi podataka (nastavak) Vidimo da ti osnovni tipovi vrlo ovise o arhitekturi računala. Obzirom na to da sadržaj nije bitan, zapravo, jedino što se može reći o tim cjelinama je njihova duljina u bitovima. Naravno, imena ili nazivi za cjeline istih duljina variraju na raznim arhitekturama. Za nas kao korisnike, ovi tipovi nisu naročito važni, ali zgodno ih je upoznati (navesti njihove duljine i nazive), barem na jednom primjeru. Primjer. Intelova 32-bitna arhitektura procesora (IA 32). Prog1 2018, 3. predavanje prošireno p. 8/120
9 Osnovni tipovi podataka na IA 32 Osnovna cjelina koju možemo adresirati na IA 32 je 1 byte = 8 bitova. To je duljina osnovne stranice (jedne adrese) memorije. Ostali osnovni tipovi podataka na IA 32 su većih duljina: Naziv Duljina Broj (bitova) byteova word 16 2 doubleword 32 4 quadword 64 8 double quadword Prog1 2018, 3. predavanje prošireno p. 9/120
10 Označavanje bitova i adresa Na primjeru osnovnih tipova podataka zgodno je odmah uvesti još dvije stvari: standardne oznake za bitove unutar pojedine cjeline (koriste se općenito, a ne samo na IA 32), način adresiranja pojedinih dijelova cjeline, obzirom na raspored bitova (specifično za pojedinu arhitekturu). Jedan byte, duljine n = 8 bitova, na adresi N, označavamo ovako (svaka kućica je 1 bit): byte N Prog1 2018, 3. predavanje prošireno p. 10/120
11 Označavanje bitova i adresa (nastavak) Objašnjenje oznaka: Uzmimo da neka cjelina (u ovom slučaju, osnovni tip podataka) ima duljinu od n bitova. Tradicionalno se pojedini bitovi u cjelini indeksiraju slično kao i riječi u memoriji, dakle, od 0 do n 1. Medutim, ovdje poredak ide naopako, tako da najdesniji bit ima indeks 0 najniži ili zadnji bit, najljeviji bit ima indeks n 1 najviši ili vodeći bit. Razlog: pozicioni prikaz cijelih brojeva (u bazi 2), u kojem vodeću znamenku (bit) pišemo kao prvu (lijevu), a najnižu znamenku (bit) pišemo kao zadnju (desnu). Osim toga, indeksi bitova odgovaraju pripadnim potencijama baze 2. Detalji malo kasnije! Prog1 2018, 3. predavanje prošireno p. 11/120
12 Označavanje bitova i adresa (nastavak) Ove oznake za bitove katkad pišemo iznad, a katkad ispod skice cjeline (ali značenje je uvijek očito iz slike). Na početku ih pišemo iznad, jer ispod skice pišemo adrese na kojima se nalaze pojedini adresabilni dijelovi cjeline u ovom slučaju, to su byteovi (adresabilne cjeline na IA 32 su byteovi). Na IA 32, najniži byteovi su i na najnižim adresama (tzv. little endian encoding), ali postoje arhitekture računala na kojima je obratno, tj. vodeći dio je na najnižoj adresi (tzv. big endian ). Dogovorno, najniža adresa na kojoj počinje cjelina, je, ujedno, i adresa čitave cjeline (bez obzira na poredak dijelova). Ovo se standardno koristi u C-u. Prog1 2018, 3. predavanje prošireno p. 12/120
13 Osnovni tipovi podataka na IA 32 (nastavak) Osnovni tipovi podataka na IA 32 onda izgledaju ovako: 7 0 byte N 15 8 high byte 7 low byte N + 1 N 0 word high word N + 2 low word N doubleword high doubleword low doubleword quadword N + 4 N 127 high quadword N low quadword N 0 double quadword Prog1 2018, 3. predavanje prošireno p. 13/120
14 Jednostavni tipovi podataka Ponovimo, ovi osnovni tipovi podataka nisu jako korisni, jer s njima ne možemo ništa pametnije raditi, osim transfera. Za stvarno računanje, trebamo dodatnu interpretaciju sadržaja (bitova) cjeline i operacije s takvom vrstom podataka (cjelinom bitova). Skup podataka i operacije na njima čine neku algebarsku strukturu, koju zajedničkim imenom zovemo tip podataka. Oni tipovi podataka za koje računalo zna ili može: prikazati pripadni skup podataka i izvesti pripadne operacije na njima, zovu se jednostavni tipovi podataka. Prog1 2018, 3. predavanje prošireno p. 14/120
15 Jednostavni tipovi podataka (nastavak) Pojam jednostavni znači da su operacije na toj vrsti podataka izravno podržane arhitekturom računala, tj. postoje instrukcije za njih. Dakle, te operacije su elementarne operacije (za računalo kao izvršitelja) i, u principu, su brze. Standardne jednostavne tipove podataka možemo grubo podijeliti u dvije grupe: nenumerički tipovi znakovi, logička algebra, numerički tipovi cijeli i realni brojevi (nekoliko raznih tipova za obje vrste brojeva). Vidjet ćemo da se nenumerički tipovi, zapravo, svode na numeričke. Prog1 2018, 3. predavanje prošireno p. 15/120
16 Nenumerički tipovi podataka (pregled) Ukratko o nenumeričkim tipovima podataka. Znakovi: prikaz je u nekom kôdu (obično, nadskup ASCII kôda), tj. cijelim brojevima, posebnih operacija sa znakovima (osim transfera) nema. Sve funkcije na znakovima svode se na elementarne operacije na cijelim brojevima (vidi C). Dakle, znakovi nisu izravno vezani za arhitekturu računala, ali su jednostavni tip u operacijskim sustavima i programskim alatima. Uglavnom, služe za humani ulaz i izlaz, te kao dijelovi složenijih struktura podataka. Prog1 2018, 3. predavanje prošireno p. 16/120
17 Znakovi (primjer) Znakovni tip u programskom jeziku C zove se char. #include <stdio.h> int main(void) { char c = 1 ; printf("%c\n", c); /* 1 */ printf("%d\n", c); /* 49 */ } return 0; %c piše vrijednost kao znak (char), %d piše vrijednost kao cijeli broj (int), i to decimalno. Prog1 2018, 3. predavanje prošireno p. 17/120
18 Nenumerički tipovi podataka (pregled) Logička ili Booleova algebra: logičke vrijednosti prikazuju se bitovima, laž = 0, istina = 1, koje, opet, možemo uzeti i kao cijele brojeve, osnovne operacije ne, i, ili (engl. not, and, or), svode se na aritmetičke operacije u bazi 2. Logičke operacije mogu se izvesti i bit po bit na čitavim skupinama bitova u nekoj većoj cjelini (vidi C). Za nas kao korisnike, logička algebra služi za formulaciju i kombiniranje uvjeta u uvjetnim naredbama i petljama. Prog1 2018, 3. predavanje prošireno p. 18/120
19 Logičke vrijednosti (primjer) C nema posebni tip za logičke vrijednosti, već izravno koristi cijele brojeve: laž = 0, istina = 1. #include <stdio.h> int main(void) { int i = 10, j = 20; printf("%d\n", i < j); /* 1 */ printf("%d\n", i >= j); /* 0 */ printf("%d\n", i == j); /* 0 */ } return 0; Prog1 2018, 3. predavanje prošireno p. 19/120
20 Numerički tipovi podataka (pregled) Numerički tipovi podataka moraju realizirati četiri osnovne aritmetičke operacije na raznim skupovima brojeva. Osnovni problem: standardni skupovi brojeva u matematici N, Z, Q, R su beskonačni i ne možemo ih prikazati u računalu. Umjesto toga, u računalu možemo prikazati samo neke konačne podskupove odgovarajućeg matematičkog skupa. Drugim riječima, konačni podskup je model beskonačnog skupa. Prog1 2018, 3. predavanje prošireno p. 20/120
21 Numerički tipovi podataka (pregled) Numeričke tipove možemo podijeliti u tri grupe, prema beskonačnom skupu kojeg modeliramo : cijeli brojevi bez predznaka model za N 0 = N {0}, cijeli brojevi s predznakom model za Z, realni brojevi model za R. Navodnici naglašavaju da su pripadni prikazivi skupovi brojeva konačni. Dodatno, svaka grupa ima nekoliko podtipova, ovisno o veličini pripadnog konačnog skupa prikazivih brojeva, tj. ovisno o broju bitova predvidenom za prikaz. Prog1 2018, 3. predavanje prošireno p. 21/120
22 Numerički tipovi podataka (pregled) Osim toga, prijelaz na konačne skupove bitno mijenja realizaciju aritmetike na odgovarajućem skupu. Aritmetika se ne nasljeduje projekcijom s originalnog skupa! Za potpuni opis numeričkih tipova podataka, moramo još opisati: koji konačni skupovi brojeva modeliraju odgovarajuće matematičke skupove, kako se točno prikazuju njihovi elementi u računalu, kako se realizira artimetika na tim skupovima. Detalji u nastavku. Prije toga, za ilustraciju, pogledajmo kako izgledaju ove tri grupe numeričkih tipova podataka (s podtipovima) na IA 32 arhitekturi. Prog1 2018, 3. predavanje prošireno p. 22/120
23 Numerički tipovi podataka na IA 32 Cijeli brojevi bez predznaka (unsigned integer) na IA 32: byte unsigned integer 7 0 word unsigned integer 15 0 doubleword unsigned integer 31 0 quadword unsigned integer 63 0 Prog1 2018, 3. predavanje prošireno p. 23/120
24 Numerički tipovi podataka na IA 32 (nastavak) Cijeli brojevi s predznakom (signed integer) na IA 32: sign byte signed integer sign word signed integer sign doubleword signed integer sign quadword signed integer Prog1 2018, 3. predavanje prošireno p. 24/120
25 Numerički tipovi podataka na IA 32 (nastavak) Realni brojevi u tzv. floating point prikazu (v. kasnije), ne samo na IA 32, već općenito, po IEEE standardu: sign single precision floating point sign double precision floating point sign 7978 integer bit double extended precision floating point 63 Skraćeni nazivi za ove tipove su: single, double i extended. Prog1 2018, 3. predavanje prošireno p. 25/120
26 Prikaz cijelih brojeva u računalu Prog1 2018, 3. predavanje prošireno p. 26/120
27 Sadržaj Cijeli brojevi prikaz i aritmetika: Prikaz brojeva bez predznaka. Sustav ostataka, prsten ostataka modulo 2 n. Modularna aritmetika cijelih brojeva. Aritmetika adresa obična aritmetika. Dijeljenje cijelih brojeva Euklidov teorem, cjelobrojni kvocijent i ostatak. Prikaz brojeva s predznakom sustav ostataka. Prikaz negativnih brojeva komplementiraj i dodaj 1. Dijeljenje cijelih brojeva s predznakom. Tipične pogreške u korištenju cijelih brojeva. Prog1 2018, 3. predavanje prošireno p. 27/120
28 Uvod u prikaz cijelih brojeva Prvo i osnovno što moramo znati je broj bitova predvidenih za prikaz cijelih brojeva (bez predznaka ili s njim). Pretpostavimo da imamo n bitova na raspolaganju za prikaz. Već smo vidjeli da su tipične vrijednosti za n 8, 16, 32, 64, 128. Danas se (još uvijek) najčešće koristi n = 32. U n bitova možemo prikazati točno 2 n različitih podataka, jer svaki bit može biti jednak 0 ili 1, i to nezavisno od ostalih. Dakle, skup brojeva koje možemo prikazati u tih n bitova ima (najviše) 2 n elemenata. Običaj je da se iskoriste sve mogućnosti za prikaz, pa taj skup ima točno 2 n elemenata. Prog1 2018, 3. predavanje prošireno p. 28/120
29 Cijeli brojevi bez predznaka Cijeli brojevi bez predznaka modeliraju skup N 0 = N {0}. Standardni dogovor: u računalu se prikazuje najveći mogući početni komad tog skupa N 0. Ako imamo n bitova na raspolaganju za prikaz, onda skup svih prikazivih brojeva ima 2 n elemenata, pa je on jednak Z 2 n = {0, 1, 2,..., 2 n 2, 2 n 1}. Dakle, najveći prikazivi cijeli broj bez predznaka je 2 n 1. Veće brojeve ne možemo prikazati koristeći samo n bitova. Prog1 2018, 3. predavanje prošireno p. 29/120
30 Cijeli brojevi bez predznaka (nastavak) Tipične vrijednosti za najveći prikazivi cijeli broj bez predznaka su: n 2 n Kako stvarno izgleda prikaz brojeva u tih n bitova? Prikaz pojedinog (prikazivog) broja je doslovna kopija prikaza tog broja u pozicionom zapisu u bazi 2, uz dopunu nulama sprijeda do n bitova. Što to znači? Prog1 2018, 3. predavanje prošireno p. 30/120
31 Prikaz cijelih brojeva bez predznaka Neka je B {0,1,...,2 n 1} neki prikazivi broj i neka je B = (b k b k 1 b 1 b 0 ) 2 = b k 2 k + +b 1 2+b 0, pozicioni zapis tog broja B u bazi 2, gdje su b i {0,1} njegove binarne znamenke (bitovi). Uočiti: B prikaziv k n 1. I točno tako se spremaju bitovi u prikazu, samo treba vodeće bitove dopuniti nulama, od indeksa k +1 do n 1, ako takvih ima, tj. ako je k < n 1. Dakle, prikaz broja B kao cijelog broja bez predznaka ima oblik { b i, za i = 0,...,k, bit i = 0, za i = k +1,...,n 1. Prog1 2018, 3. predavanje prošireno p. 31/120
32 Prikaz cijelih brojeva bez predznaka (precizno) Neka je B {0,1,...,2 n 1} neki prikazivi broj. Ako je B = 0, onda je svih n bitova u prikazu jednako 0, tj. B = 0 bit i = 0, za i = 0,...,n 1. U protivnom, ako je B > 0, onda njegov normalizirani pozicioni prikaz u bazi 2 ima oblik: B = b k 2 k + +b 1 2+b 0, b i {0,1}, b k > 0, gdje su b i binarne znamenke (bitovi) broja B. Ograničenje b k > 0 na vodeću binarnu znamenku samo kaže da je prikaz normaliziran, tj. da nema nul znamenki sprijeda. Prog1 2018, 3. predavanje prošireno p. 32/120
33 Prikaz cijelih brojeva bez predznaka (precizno) Nadalje, znamo da je k n 1, jer je B prikaziv. Ako pišemo samo binarne znamenke (bitove) u nizu, pripadni pozicioni zapis broja B u bazi 2 ima oblik B = (b k b k 1 b 1 b 0 ) 2. I točno tako se spremaju bitovi u prikazu, samo treba vodeće bitove dopuniti nulama, od indeksa k +1 do n 1, ako takvih ima, tj. ako je k < n 1. Dakle, prikaz broja B kao cijelog broja bez predznaka ima oblik { b i, za i = 0,...,k, bit i = 0, za i = k +1,...,n 1. Prog1 2018, 3. predavanje prošireno p. 33/120
34 Prikaz cijelih brojeva bez predznaka (precizno) U računalu će to biti prikazano kao cjelina od n bitova bit n 1 bit n 2... bit 1 bit 0. Ako proširimo zapis broja B u bazi 2 do točno n binarnih znamenki, B = b n 1 2 n 1 + +b 1 2+b 0, b i {0,1}, s tim da vodeće znamenke smiju biti 0, odmah dobivamo prikaz broja B kao cijelog broja bez predznaka bit i = b i, za i = 0,...,n 1, s tim da ovo vrijedi i za B = 0. Prog1 2018, 3. predavanje prošireno p. 34/120
35 Prikaz cijelih brojeva bez predznaka primjer Primjer. Uzmimo da je n = 8 (budimo skromni) i pogledajmo zapis broja 123. Za početak, vrijedi = 2 8 1, pa je 123 prikaziv. Nadalje, njegov prošireni binarni prikaz je 123 = = Binarne znamenke broja 123 su b 7 = 0, b 6 = 1, b 5 = 1, b 4 = 1, b 3 = 1, b 2 = 0, b 1 = 1, b 0 = 1. Prog1 2018, 3. predavanje prošireno p. 35/120
36 Prikaz cijelih brojeva bez predznaka primjer Dakle, broj 123, kao cijeli broj bez predznaka, ima prikaz Katkad je zgodno imati i skraćenu oznaku [ bit n 1 bit n 2 bit n 3... bit 1 bit 0 ] za zapis vrijednosti svih n bitova u prikazu broja. Broj 123, kao cijeli broj bez predznaka, onda ima prikaz 123 [ ]. Napomena. Opći algoritam za nalaženje binarnih znamenki broja napravit ćemo kasnije. Prog1 2018, 3. predavanje prošireno p. 36/120
37 Aritmetika cijelih brojeva bez predznaka Aritmetika cijelih brojeva bez predznaka s n bitova za prikaz brojeva je tzv. modularna aritmetika, ili, preciznije aritmetika ostataka modulo 2 n. To znači da aritmetičke operacije +, i, na skupu Z 2 n cijelih brojeva bez predznaka, daju rezultat koji je jednak ostatku rezultata pripadne cjelobrojne operacije (u skupu Z) pri dijeljenju s 2 n. Drugim riječima, za prikazive operande A i B vrijedi rezultat (A op B) := (A op B) mod 2 n, gdje je op zbrajanje, oduzimanje ili množenje. Oznake za pripadne operacije u matematici su 2 n, 2 n i 2 n. Prog1 2018, 3. predavanje prošireno p. 37/120
38 Aritmetika cijelih brojeva bez predznaka Važna napomena. Ako je pravi cjelobrojni rezultat A op B prevelik (neprikaziv), računalo ne javlja nikakvu grešku, već postavlja tzv. bit prijenosa (engl. carry bit ) na 1 u kontrolnom registru. Što će se dalje dogoditi, ovisi o programu koji se izvršava. Standardno ponašanje programskih alata ovisi o tome koja vrsta podataka se prikazuje cijelim brojevima bez predznaka. A tu postoje dvije mogućnosti. Ako je riječ o korisničkim podacima, tj. o brojevima, prijenos se ignorira, bez ikakve poruke. Normalno se nastavlja rad, s rezultatom po opisanom pravilu. Zato oprez (v. malo kasnije)! Prog1 2018, 3. predavanje prošireno p. 38/120
39 Aritmetika adresa S druge strane, memorijske adrese se, takoder, prikazuju kao cijeli brojevi bez predznaka odredene veličine. Na primjer, obični adresni prostor na IA 32 je 2 32 byte-a, pa se adrese prikazuju kao 32 bitni cijeli brojevi bez predznaka. S adresama se isto tako rade aritmetičke operacije, tzv. aritmetika pokazivača ili pointera u C-u, posebno kod obrade nizova (stiže u Prog2). Dosta je očito da ova aritmetika nije modularna! Tu nema šale, prijenos se ne smije ignorirati i računalo mora javiti grešku ( memory protect violation ili nešto slično). Zato brojevi i adrese pripadaju različitim tipovima podataka! Prog1 2018, 3. predavanje prošireno p. 39/120
40 Aritmetika adresa primjer u Windows XP Nažalost, u praksi postoje razne čarolije na temu adresa, koje je katkad zgodno znati. Primjer. U neko doba, 32-bitni MS Windows XP imao je ograničenje adresa na 2 GB, što je polovina od normalnog adresnog prostora na IA 32 (4 GB). Stvar je išla tako daleko da se XP nije dizao, ako u računalu imate više od 2 GB memorije (probao sam). Sa zadnjim SP3, uz malo truda, može ga se instalirati, ali se instalacija prilično čudno ponaša. Ako naknadno dodate memoriju (onu preko 2 GB), onda i dalje ne vidi više od 3.25 GB! Prog1 2018, 3. predavanje prošireno p. 40/120
41 Modularna aritmetika opravdanje Zašto se aritmetika cijelih brojeva realizira na ovaj način, kao modularna aritmetika? Postoje dva vrlo dobra razloga. Čisto tehnički, ova realizacija je najlakša i brza. Ostaci modulo 2 n (uz ignoriranje prijenosa) znače da stalno uzimamo samo najnižih n bitova rezultata. Drugi razlog je matematičke prirode. U pozadini ove realizacije je klasična algebarska struktura prstena ostataka modulo 2 n. Tu strukturu je korisno detaljnije opisati, jer bitno olakšava razumijevanje cjelobrojne aritmetike (i one s predznakom). Prog1 2018, 3. predavanje prošireno p. 41/120
42 Prsten ostataka modulo 2 n Naime, skup svih prikazivih cijelih brojeva bez predznaka Z 2 n = {0, 1, 2,..., 2 n 2, 2 n 1} je ujedno i standardni sustav ostataka koji dobivamo pri cjelobrojnom dijeljenju s 2 n. Zato se i označava sa Z 2 n. Ako na njemu definiramo binarne operacije zbrajanja i množenja preko ostataka cjelobrojnih operacija + i, A B := (A+B) mod 2 n, A B := (A B) mod 2 n, onda (Z 2 n,, ) ima algebarsku strukturu prstena s 1. U algebri se operacije i obično označavaju s 2 n i 2 n. Prog1 2018, 3. predavanje prošireno p. 42/120
43 Prsten ostataka modulo 2 n (nastavak) Što znači da je (Z 2 n,, ) prsten s jedinicom? Vrijedi: (Z 2 n, ) je komutativna grupa (obzirom na zbrajanje), (Z 2 n, ) je polugrupa (obzirom na množenje), čak i monoid, jer ima jedinicu 1 Z 2 n, operacije i vezane su zakonom distributivnosti, tj. A (B C) = A B A C, (A B) C = A C B C, za svaki izbor A, B, C Z 2 n. Dodatno, (Z 2 n,, ) je i komutativni prsten s jedinicom, ali nije polje (za n > 1), jer ima djelitelja nule (2 2 n 1 = 0). Prog1 2018, 3. predavanje prošireno p. 43/120
44 Prsten ostataka modulo 2 n (nastavak) Neka je A jedinstveni suprotni element elementa A obzirom na zbrajanje. Očito je 0 = 0, a za A 0 vrijedi A = 2 n A, jer je A A = (A+(2 n A)) mod 2 n = 0. Na kraju, oduzimanje definiramo kao zbrajanje sa suprotnim elementom A B := A+ B. I tako smo dobili tri osnovne aritmetičke operacije na Z 2 n. One se upravo na taj način realiziraju u računalu, za cijele brojeve bez predznaka, s n bitova za prikaz. U programskim jezicima se ove tri operacije pišu znakovima +, - i * (za, odnosno ). Prog1 2018, 3. predavanje prošireno p. 44/120
45 Dijeljenje cijelih brojeva A što je s dijeljenjem? To dosad nismo ni spomenuli! S razlogom! Obično dijeljenje ima smisla tek u strukturi polja, poput racionalnih brojeva Q, ili realnih brojeva R. Znamo da N 0 i Z nisu polja. Isto vrijedi i za Z 2 n, čim je n > 1, a slučaj n = 1 (tj. polje Z 2 ) je potpuno neinteresantan za praksu, barem što se tiče aritmetike cijelih brojeva (iako je vrlo bitan za logičku algebru). Što sad? Zamjena za obično dijeljenje u cijelim brojevima je tzv. dijeljenje s ostatkom. Podloga za to je poznati Euklidov teorem o dijeljenju s ostatkom u skupu Z. Prog1 2018, 3. predavanje prošireno p. 45/120
46 Dijeljenje cijelih brojeva Euklidov teorem Euklidov teorem. Za svaki cijeli broj a Z i svaki prirodni broj b N, postoje jedinstveni brojevi q, r Z, takvi da je a = q b+r i 0 r < b. Broj q je cjelobrojni kvocijent, a r ostatak pri dijeljenju a s b. Ograničenje 0 r < b znači da za ostatak r vrijedi r Z b := {0, 1, 2,..., b 1}, pa skup Z b zovemo standardni sustav ostataka modulo b. Zvuči poznato: ako uzmemo divizor b = 2 n, dobivamo skup Z 2 n svih prikazivih cijelih brojeva bez predznaka u računalu. Prog1 2018, 3. predavanje prošireno p. 46/120
47 Dijeljenje cijelih brojeva dvije operacije Uočite da Euklidov teorem, odnosno, cjelobrojno dijeljenje s ostatkom daje dva rezultata: cjelobrojni kvocijent i ostatak. Zgodno je odmah uvesti i oznake za obje ove operacije. Nažalost, nema standardne matematičke oznake za cjelobrojni kvocijent. Oznaka / standardno se koristi za operaciju običnog dijeljenja u poljima, ili se pišu razlomci. Kad napišem a/b to odmah asocira na obično dijeljenje (što nije zgodno). ili a b Prog1 2018, 3. predavanje prošireno p. 47/120
48 Oznake za cjelobrojni kvocijent i ostatak S druge strane, u nekim programskim jezicima (C, Fortran) oznaka / se koristi i za cjelobrojno dijeljenje, ali to vrijedi ako i samo ako su oba operanda cijeli brojevi. Usput, isti princip da tip rezultata ovisi o tipu oba operanda (tzv. operator overloading ) vrijedi i za tri ranije operacije s oznakama +, -, *. Da izbjegnemo mogućnost bilo kakve zabune, za cjelobrojni kvocijent koristimo oznaku div, po ugledu na Pascal (oznaka / u C-u), a za ostatak postoji standardna oznaka mod, koju smo već koristili (oznaka % u C-u). Prog1 2018, 3. predavanje prošireno p. 48/120
49 Definicija operacija za cjelobrojno dijeljenje Precizna definicija ovih operacija izlazi direktno iz Euklidovog teorema. Definicija. Neka su a Z i b N bilo koji brojevi, i neka su q Z (cjelobrojni kvocijent) i r Z b (ostatak) jedinstveni brojevi za koje vrijedi a = q b+r. Operacije div i mod definiramo relacijama a div b := q Z, a mod b := r Z b. Ova definicija operacije mod točno odgovara onom što smo ranije koristili. Prog1 2018, 3. predavanje prošireno p. 49/120
50 Dijeljenje cijelih brojeva mala digresija Za početak, uočite da su obje operacije definirane na skupu Z N, a kodomene su im različite. Možda nekog zanima što se zbiva na skupu Z (Z\{0}), kad cjelobrojno dijelimo dva cijela broja (što, naravno, ima smisla). O tome malo kasnije, kod cijelih brojeva s predznakom. Odmah jedno upozorenje: stvar radi očekivano (prema Euklidovom teoremu) samo na skupu N 0 N. Trenutno nam upravo taj skup i treba, da dobijemo cjelobrojno dijeljenje za cijele brojeve bez predznaka (koji modeliraju skup N 0 ). Prog1 2018, 3. predavanje prošireno p. 50/120
51 Veza cjelobrojnog i običnog dijeljenja Zahtjev da je 0 r < b, tj. da ostatak r pripada skupu Z b, daje jednostavnu vezu cjelobrojnog i običnog dijeljenja (onog u racionalnim brojevima). Lako se vidi da vrijedi a div b = q = a b. Dakle, cjelobrojni kvocijent je najveće cijelo od običnog racionalnog kvocijenta. Ova veza je specifična za izbor r Z b i ne vrijedi za drugačije sustave ostataka, a takve sustave možemo izabrati, kao što ćemo vidjeti. Prog1 2018, 3. predavanje prošireno p. 51/120
52 Prsten ostataka modulo b (dodatak) Za bilo koji fiksni divizor b 2, na standardnom sustavu ostataka modulo b, tj. skupu Z b = {0, 1, 2,..., b 1} možemo definirati binarne operacije zbrajanja b i množenja b, preko ostataka cjelobrojnih operacija + i, A b B := (A+B) mod b, A b B := (A B) mod b. Lako se dokazuje da (Z b, b, b ) ima algebarsku strukturu komutativnog prstena s jedinicom (kao i ranije za b = 2 n ). Ta struktura je polje, ako i samo ako je b prost broj. Prog1 2018, 3. predavanje prošireno p. 52/120
53 Dijeljenje cijelih brojeva bez predznaka Sve što smo dosad rekli o cjelobrojnom dijeljenju s ostatkom (zasad) vrijedi samo za cijele brojeve, ili, preciznije, na Z N. Taj skup je domena za Euklidov teorem. Stoga su operacije div i mod definirane baš na toj domeni. A što je s cjelobrojnim dijeljenjem s ostatkom u računalu, tj. na skupu Z 2 n prikazivih cijelih brojeva bez predznaka? Odgovor: Potpuno isto kao da smo u cijelim brojevima. Drugim riječima, dijeljenje s ostatkom cijelih brojeva bez predznaka je naprosto restrikcija cjelobrojnih operacija div i mod. Prog1 2018, 3. predavanje prošireno p. 53/120
54 Dijeljenje s ostatkom u Z b (dodatak) Zašto su rezultati isti? Uzmimo bilo koji fiksni divizor b 2. Neka su A Z b i B Z b, uz B > 0, bilo koji brojevi iz Z b koje smijemo dijeliti. Podijelimo ih cjelobrojno, i pokažimo da kvocijent Q := A div B i ostatak R := A mod B moraju, takoder, pripadati skupu Z b. Znamo da općenito vrijedi Q Z, R Z B (tj. 0 R < B) i A = Q B +R. Zbog 0 A,B < b, odmah vidimo da je 0 Q < b i 0 R < B < b, što dokazuje Q, R Z b. Naravno, to vrijedi i za b = 2 n. Prog1 2018, 3. predavanje prošireno p. 54/120
55 Dijeljenje cijelih brojeva bez predznaka Zbog toga, dijeljenje s ostatkom u skupu Z 2 n prikazivih cijelih brojeva bez predznaka u računalu daje potpuno iste rezultate kao da dijelimo u Z (ili N 0 ). Dakle, nema ostataka modulo 2 n i čarolija s prikazivošću rezultata (nije potrebno, jer radi i bez toga). Operacije div i mod su jedine aritmetičke operacije koje na prikazivim cijelim brojevima bez predznaka Z 2 n daju iste rezultate kao i na skupu N 0 kojeg modeliramo. Ponovimo još jednom da ostale tri operacije +, i daju cjelobrojni rezultat modulo 2 n. Prog1 2018, 3. predavanje prošireno p. 55/120
56 Euklidov teorem u prstenu Z b (dodatak) Uočite da, za operacije div i mod na skupu Z b, koristimo Euklidov teorem za cijele brojeve, tj. na domeni Z N. Pitanje: Kad znamo da je (Z b, b, b ) prsten, kao i (Z,+, ), zašto ne uzmemo prirodniju domenu Z b (Z b \{0})? Odgovor: Na toj domeni, s pripadnim modularnim operacijama b i b, takoder, vrijedi Euklidov teorem, ali nema jedinstvenosti rezultata. Euklidov teorem u prstenu (Z b, b, b ). Za bilo koja dva broja A, B Z b, uz B > 0, postoje brojevi Q, R Z b, takvi da je A = Q b B b R i 0 R < B, ali ti brojevi ne moraju biti jedinstveni. Prog1 2018, 3. predavanje prošireno p. 56/120
57 Euklidov teorem u prstenu Z b (dodatak) Primjer. Uzmimo b = 2 3 = 8, tj. prsten (Z 8, 8, 8 ), i brojeve A = 5, B = 4. Onda je, kao u cijelim brojevima, 5 = 1 4+1, tj. 5 div 4 = 1 i 5 mod 4 = 1. Ali, zbog = 0 mod 8, vrijedi i 5 = = 13 mod 8, 5 = = 21 mod 8, 5 = = 29 mod 8. Modularni kvocijenti (s ostatkom 1) su 1, 3, 5 i 7, a najmanji je pravi. Ostatak, takoder, nije jedinstven, jer je 5 = Prog1 2018, 3. predavanje prošireno p. 57/120
58 Cijeli brojevi bez predznaka sažetak Ako imamo n bitova za prikaz brojeva, onda je skup svih prikazivih cijelih brojeva bez predznaka jednak Z 2 n = {0, 1, 2,..., 2 n 2, 2 n 1}. Prikaz broja B Z 2 n dobiva se iz proširenog zapisa tog broja u bazi 2, s točno n binarnih znamenki. Aritmetika cijelih brojeva bez predznaka je modularna aritmetika u prstenu (Z 2 n, 2 n, 2 n): operacije +, i daju cjelobrojni rezultat modulo 2 n, operacije cjelobrojnog dijeljenja s ostatkom div i mod daju iste rezultate kao da dijelimo u Z (ili N 0 ). Prog1 2018, 3. predavanje prošireno p. 58/120
59 Cijeli brojevi u C-u sažetak U programskom jeziku C: cijelim brojevima bez predznaka odgovara tip koji se zove unsigned int, ili, skraćeno, unsigned, cijelim brojevima s predznakom odgovara tip koji se zove int. Ovi tipovi postoje u nekoliko raznih veličina: standardna, short, long, a katkad i druge (long long). Razlike su u broju bitova n predvidenih za prikaz. Zapis konstanti (vrijednost, navodenje tipa) kasnije. Zapis operacija +, i znakovima +, - i *. Zapis operacija div i mod znakovima / i %. Prog1 2018, 3. predavanje prošireno p. 59/120
60 Cijeli brojevi bez predznaka u C-u primjer 1 #include <stdio.h> int main(void) { unsigned short i = 65535; /* int ne pisem */ printf("%d\n", i / 10); /* 6553 */ i = i + 3; printf("%d\n", i); /* 2, a ne */ } return 0; USHRT_MAX = u zaglavlju limits.h. Ovdje je n = 16. Prog1 2018, 3. predavanje prošireno p. 60/120
61 Cijeli brojevi bez predznaka u C-u primjer 2 #include <stdio.h> int main(void) { unsigned short i = 2, j = 4; i = i - j; printf("%d\n", i); /* 65534, a ne -2 */ } return 0; %d piše vrijednost od i uz pretvorbu u tip int. %hu piše vrijednost od i baš kao unsigned short. Ovdje nema razlike, ali da pišemo i - j, bilo bi razlike. Prog1 2018, 3. predavanje prošireno p. 61/120
62 Cijeli brojevi u C-u dodjeljivanje i čitanje Napomena. Ista modularna priča vrijedi i kod dodjeljivanja i/ili čitanja vrijednosti cijelih brojeva! Pretvorba iz niza znakova (dekadske znamenke u dekadskom zapisu broja) u binarni zapis (interni prikaz broja) ide onim aritmetičkim pravilima koja odgovaraju tipu broja, po Hornerovom algoritmu u bazi 10 (v. kasnije), a ta aritmetika je modularna. Primjeri C programa: za dodjeljivanje i čitanje brojeva malo kasnije, za prikaz brojeva kasnije. Prog1 2018, 3. predavanje prošireno p. 62/120
63 Prikaz cijelih brojeva s predznakom Prog1 2018, 3. predavanje prošireno p. 63/120
64 Cijeli brojevi s predznakom Cijeli brojevi s predznakom modeliraju skup Z cijelih brojeva. Ako imamo n bitova na raspolaganju za prikaz, onda skup svih prikazivih brojeva ima (najviše) 2 n elemenata. Medu prikazivim brojevima moraju biti i (neki) negativni brojevi. Zgodno bi bilo da ih je podjednako mnogo kao i pozitivnih (odnosno, nenegativnih) brojeva. Standardni dogovor: u računalu se prikazuje najveći mogući podskup uzastopnih brojeva iz Z koji je skoro simetričan oko 0. Napomena. Prava simetrija oko nule dala bi neparan broj prikazivih brojeva što nema smisla. Prog1 2018, 3. predavanje prošireno p. 64/120
65 Cijeli brojevi s predznakom (nastavak) Dakle, prikazivih negativnih brojeva ima podjednako mnogo kao i nenegativnih. Ako želimo da točno polovina tih brojeva bude negativna, onda njih mora biti 2 n /2 = 2 n 1. Nenegativnih brojeva je, naravno, isto toliko. To znači da je skup svih prikazivih cijelih brojeva s predznakom jednak Z 2 n = { 2 n 1, 2 n 1 +1,..., 2, 1, 0, 1,..., 2 n 1 2, 2 n 1 1 }. Brojeve izvan tog skupa ne možemo prikazati (kao cijele brojeve s predznakom) koristeći samo n bitova. Prog1 2018, 3. predavanje prošireno p. 65/120
66 Cijeli brojevi s predznakom (nastavak) Najmanji i najveći prikazivi cijeli broj s predznakom su, redom: 2 n 1, 2 n 1 1. Tipične vrijednosti za ta dva granična broja su: n 2 n 1 2 n Uočite da raspon prikazivih cijelih brojeva s predznakom nije jako velik, čak i za n = 32 (što je standard). Oprez! Zato se danas sve više koristi n = 64 (želja za n = 128), = Prog1 2018, 3. predavanje prošireno p. 66/120
67 Prikaz cijelih brojeva s predznakom Kako stvarno izgleda prikaz brojeva u tih n bitova? Prikaz pojedinog (prikazivog) broja potpuno je odreden s dva zahtjeva: nenegativni brojevi imaju isti prikaz kao u cijelim brojevima bez predznaka (dovoljno je to tražiti samo za jedan broj, na primjer, za nulu), aritmetika za te prikaze mora (kao i ranije, za brojeve bez predznaka) dati dobru algebarsku strukturu na cijelim brojevima s predznakom, tj. na skupu Z 2 n. Prvi zahtjev je dosta jasan, ali što znači drugi? Zatvorenost na operacije zbrajanja i množenja, dobra svojstva tih operacija! Prog1 2018, 3. predavanje prošireno p. 67/120
68 Veza izmedu prikaza i aritmetike Kod brojeva bez predznaka, prikaz binarnim znamenkama je očito odgovarao aritmetici recimo, ovako: kad prikazu broja B (kao nizu bitova u bazi 2) dodamo 1, dobijemo točno prikaz broja B +1. (Hm, nismo baš puno razmišljali o tome). Modularna aritmetika modulo 2 n dodatno još zatvara krug na n bitova, tj. daje zatvorenost operacija, a onda i dobru strukturu prstena s jedinicom na Z 2 n = {0, 1,..., 2 n 1}. Zato gore, umjesto običnog cjelobrojnog +, koristimo 2 n. Potpuno isto mora vrijediti i za prikaze cijelih brojeva s predznakom iz skupa Z 2 n inače nemamo jednostavnu realizaciju aritmetike i dobru strukturu. Prog1 2018, 3. predavanje prošireno p. 68/120
69 Aritmetika cijelih brojeva s predznakom Dakle, aritmetika za cijele brojeve s predznakom mora i dalje biti ista, tj. modularna aritmetika modulo 2 n, samo je interpretacija sustava ostataka drugačija. Skup svih prikazivih cijelih brojeva s predznakom Z 2 n = { 2 n 1,..., 1, 0, 1,..., 2 n 1 1} je, takoder, potpuni sustav ostataka modulo 2 n. Na tom skupu opet možemo definirati operacije zbrajanja i množenja (bez posebnih oznaka) preko odgovarajućih ostataka cjelobrojnih operacija + i. Kao i prije, dobivamo strukturu prstena s jedinicom, ali sad na skupu Z 2 n. Prog1 2018, 3. predavanje prošireno p. 69/120
70 Prikaz cijelih brojeva s predznakom (nastavak) A sad je lako dobiti prikaz svih negativnih brojeva. Usporedimo skupove prikazivih brojeva bez predznaka i s predznakom, tj. pripadne sustave ostataka modulo 2 n, Z 2 n = {0, 1,..., 2 n 1}, Z 2 n = { 2 n 1,..., 1, 0, 1,..., 2 n 1 1}. Pravilo za prikaz je vrlo jednostavno: iste prikaze imaju oni brojevi (iz ta dva skupa) koji imaju isti pravi ostatak modulo 2 n. Zaključak: za B = 1,...,2 n 1, prikaz negativnog broja B (s predznakom) jednak je prikazu broja 2 n B (bez predznaka). Prog1 2018, 3. predavanje prošireno p. 70/120
71 Prikaz cijelih brojeva s predznakom (dodatak) Detaljnija argumentacija ovog zaključka ide na sljedeći način. Prvo poklopimo zajednički dio nenegativnih brojeva 0, 1,..., 2 n 1 1 u ta dva skupa. Svaki od tih brojeva ima isti prikaz u oba skupa, pa ih sparujemo za B = 0,...,2 n 1 1. Uočite da B Z 2 n B Z 2 n, prikazi svih ovih brojeva imaju vodeći bit jednak 0. Prog1 2018, 3. predavanje prošireno p. 71/120
72 Prikaz cijelih brojeva s predznakom (dodatak) Zatim zatvaramo modularni krug, dodavanjem jedan po jedan modulo 2 n, i sparujemo odgovarajuće brojeve. Prvi dodaj jedan modulo 2 n daje ((2 n 1 1)+1) mod 2 n = 2 n 1 mod 2 n = tj. zatvara krug u Z 2 n, pa sparujemo { 2 n 1 Z 2 n, 2 n 1 Z 2 n, A dalje sve ide redom. 2 n 1 Z 2 n 2 n 1 Z 2 n. Prog1 2018, 3. predavanje prošireno p. 72/120
73 Prikaz cijelih brojeva s predznakom (dodatak) Kad dodaj jedan ponovimo k puta, tj. kad broju 2 n 1 1 dodamo k modulo 2 n, izlazi: 2 n 1 +(k 1) Z 2 n (2 n 1 1)+k Z 2 n, za k = 1,...,2 n 1. Supstitucijom B = 2 n 1 +(k 1), za negativne brojeve dobivamo B Z 2 n 2 n B Z 2 n, i to vrijedi za B = 1,...,2 n 1. Dakle, spareni brojevi razlikuju se za točno 2 n. To je jasno, jer moraju imati isti pravi ostatak modulo 2 n. Prog1 2018, 3. predavanje prošireno p. 73/120
74 Prikaz cijelih brojeva s predznakom (dodatak) Zaključak: za B = 1,...,2 n 1, prikaz negativnog broja B (s predznakom) jednak je prikazu broja 2 n B (bez predznaka). Uočite da prikazi svih ovih brojeva imaju vodeći bit jednak 1. Prog1 2018, 3. predavanje prošireno p. 74/120
75 Primjer prikaz cijelih brojeva za n = 3 Primjer. Neka je n = 3, tj. imamo samo 3 bita za prikaz. Prikazivih brojeva ima 2 3 = 8. Prikazi cijelih brojeva bez predznaka iz Z 8 i cijelih brojeva s predznakom iz Z 8 su: B Z 8 B Z 8 prikaz Prog1 2018, 3. predavanje prošireno p. 75/120
76 Prikaz cijelih brojeva s predznakom primjeri Primjer. Prikaz broja 2 n 1 dobivamo tako da uzmemo B = 2 n 1 (koji sam nije prikaziv s predznakom) i pogledamo prikaz broja 2 n B bez predznaka: 2 n 1 2 n 2 n 1 = 2 n 1 = [ ]. Primjer. Broj 1 ima prikaz (B = 1) 1 2 n 1 = [ ]. Prog1 2018, 3. predavanje prošireno p. 76/120
77 Prikaz cijelih brojeva s predznakom primjeri Primjer. Kad najvećem prikazivom broju s predznakom, a to je 2 n 1 1, dodamo 1, rezultat je jer je najmanji prikazivi broj s predznakom, (2 n 1 1)+1 = ((2 n 1 1)+1) mod 2 n = 2 n 1 mod 2 n = 2 n 1 Z 2 n. Naravno, isti rezultat izlazi i običnim binarnim zbrajanjem prikaza [ ]+[ ] = [ ]. Uočite da nema prijenosa. Prog1 2018, 3. predavanje prošireno p. 77/120
78 Prikaz cijelih brojeva s predznakom primjeri Primjer. Analogno, zbrajanju ( 1) + 1 = 0 odgovara binarno zbrajanje prikaza [ ]+[ ] = 1 [ ]. Ovdje imamo prijenos, ali se on modularno ignorira. Prog1 2018, 3. predavanje prošireno p. 78/120
79 Prikaz cijelih brojeva s predznakom komentar Dakle, prikaz negativnih brojeva je posljedica one iste modularne aritmetike, koja vrijedi i za cijele brojeve bez predznaka. Tehnički gledano, tri osnovne operacije +, i na cijelim brojevima, u računalu se izvršavaju potpuno jednako (istim elektroničkim krugovima ) za cijele brojeve s predznakom i bez njega, Važni su samo bitovi u prikazu, a ne i njihova interpretacija! Za cjelobrojno dijeljenje to ne vrijedi (v. malo kasnije). Prog1 2018, 3. predavanje prošireno p. 79/120
80 Vodeći bit predznak U prikazu cijelih brojeva s predznakom svi nenegativni brojevi imaju vodeći bit jednak 0, a svi negativni brojevi imaju vodeći bit jednak 1. Zato se vodeći bit, obično, zove i bit predznaka (engl. sign). Taj naziv, nažalost, može zavesti na pogrešnu ideju o prikazu. Prikaz cijelih brojeva s predznakom ne dobiva se kao: bit predznaka i prikaz apsolutne vrijednosti broja (bez predznaka, s bitom manje). Za preciznu argumentaciju v. dodatak (sljedeći odjeljak). Za razliku od ovog, kod realnih brojeva to vrijedi, što samo povećava mogućnost zabune. Prog1 2018, 3. predavanje prošireno p. 80/120
81 Prikaz suprotnog broja preko komplementa Za zadani broj B > 0, kad tražimo prikaz broja B, broj 2 n B nije baš lako izračunati na ruke, čim je broj bitova n iole veći. Srećom, ima i lakši način! Prikaz broja B možemo naći i tehnikom dvojnog komplementa : prikaz zadanog broja B treba komplementirati, tj. pretvoriti nule u jedinice i obratno (tj. 0 1), a zatim, tom komplementu treba dodati 1 (modulo 2 n ). Kratko opravdanje: ako je B broj (bez predznaka) kojem odgovara komplementirani prikaz broja B, onda je (očito) B + B = [ ] = 2 n 1. Prog1 2018, 3. predavanje prošireno p. 81/120
82 Prikaz suprotnog broja preko komplementa Prebacimo 1 s desne na lijevu stranu B + B +1 = 2 n, i zapišimo ovu relaciju modularnim zbrajanjem 2 n u Z 2 n B 2 n ( B 2 n 1) = 0. Dakle, jedinstveni suprotni element (inverz obzirom na zbrajanje) elementa B Z 2 n jednak je B 2 n 1. Drugim riječima, suprotni broj dobivamo tako da komplementiramo broj (odnosno, njegov prikaz) i dodamo 1 modulo 2 n. Potpuno isto pravilo vrijedi i za negativne brojeve B! Prog1 2018, 3. predavanje prošireno p. 82/120
83 Prikaz cijelih brojeva s predznakom primjer Primjer. Uzmimo da je n = 8 (budimo skromni) i pogledajmo zapis broja 120. Za početak, vrijedi 2 7 = = 2 7 1, pa je 120 prikaziv. Nadalje, binarni prikaz broja B = 120 je 120 = = Dakle, broj B = 120, kao cijeli broj bez predznaka, ima prikaz 120 [ ]. Prog1 2018, 3. predavanje prošireno p. 83/120
84 Prikaz cijelih brojeva s predznakom primjer U zadanih n = 8 bitova, broj B = 120 (kao cijeli broj s predznakom, ili bez njega) ima prikaz Komplementiranjem prikaza (bit po bit) dobivamo Dodamo 1 (modulo 2 8 ). Prikaz broja B = 120 je Prog1 2018, 3. predavanje prošireno p. 84/120
85 Prikaz cijelih brojeva s predznakom primjer Istu stvar možemo dobiti i tako da nademo prikaz broja 2 8 B = = 136, kao cijelog broja bez predznaka. Imamo redom 136 = = Za n = 8, broj 120, kao cijeli broj s predznakom, ima isti prikaz kao i 136, bez predznaka [ ]. Prog1 2018, 3. predavanje prošireno p. 85/120
86 Komplementiraj i dodaj 1 (precizna argumentacija) Prog1 2018, 3. predavanje prošireno p. 86/120
87 Veza broja i prikaza s predznakom Zasad znamo da za prikaz cijelih brojeva s predznakom vrijedi: nenegativni brojevi B = 0,...,2 n 1 1 imaju isti prikaz kao i bez predznaka, negativni brojevi B = 1,..., 2 n 1 imaju isti prikaz kao i brojevi 2 n +B bez predznaka. Tj., imamo dva različita slučaja, ovisno o predznaku broja. Da bismo dobili vezu izmedu n bitova u prikazu broja B s predznakom i samog broja, postupamo na sljedeći način. Broju B Z 2 n pridružimo broj B Z 2 n, tako da B bez predznaka ima isti prikaz na n bitova kao i broj B s predznakom. Taj broj B označavamo s prikaz(b). Prog1 2018, 3. predavanje prošireno p. 87/120
88 Veza broja i prikaza s predznakom (nastavak) Već znamo da je prikaz(b) = { B, za B = 0,...,2 n 1 1, 2 n +B, za B = 1,..., 2 n 1. Nama treba obratna veza: B = { prikaz(b), za prikaz(b) = 0,...,2 n 1 1, prikaz(b) 2 n, za prikaz(b) = 2 n 1,...,2 n 1, jer prikaz(b) ima jednostavnu vezu sa svojim bitovima. A onda je lako. Prog1 2018, 3. predavanje prošireno p. 88/120
89 Veza broja i prikaza s predznakom (nastavak) Neka je [bit n 1 bit n 2... bit 1 bit 0 ] zapis prikazivog cijelog broja B Z 2 n s predznakom, gdje su bit i {0,1} bitovi u prikazu, za i = 0,...,n 1. Po definiciji, prikaz(b) ima isti zapis bez predznaka, pa su bitovi bit i baš binarne znamenke broja prikaz(b), tj. vrijedi prikaz(b) := bit n 1 2 n 1 + +bit 1 2+bit 0. Supstitucijom u obratnu vezu odmah dobivamo relacije za broj B preko bitova u njegovom prikazu s predznakom. Prog1 2018, 3. predavanje prošireno p. 89/120
90 Veza broja i prikaza s predznakom (nastavak) Opet imamo dva slučaja, ovisno o predznaku : B = 0,...,2 n 1 1, tj. B 0 bit n 1 = 0, i tada je B = 0 2 n 1 +bit n 2 2 n 2 + +bit 1 2+bit 0 = bit n 2 2 n 2 + +bit 1 2+bit 0, B = 1,..., 2 n 1, tj. B < 0 bit n 1 = 1, i tada je B = (1 2 n 1 +bit n 2 2 n 2 + +bit 1 2+bit 0 ) 2 n = (bit n 2 2 n 2 + +bit 1 2+bit 0 ) 2 n 1. Za negativne B, bitovi bit i nisu binarne znamenke od B. Prog1 2018, 3. predavanje prošireno p. 90/120
91 Komplement bita Sad ćemo izvesti jedno jednostavno pravilo o prikazu koje vrijedi (u istom obliku) za sve prikazive brojeve. Prvo moramo uvesti pojmove komplementa jednog bita i komplementa broja (bez predznaka). Definicija. Komplement bita (binarne znamenke) b {0, 1}, u oznaci b, definiramo ovako: b := 1 b. Odmah vidimo da je 0 = 1, 1 = 0, pa je operacija komplement aritmetički ekvivalent negacije. Prog1 2018, 3. predavanje prošireno p. 91/120
92 Komplement broja bez predznaka Definicija. Komplement prikazivog cijelog broja B Z 2 n (bez predznaka) na n bitova definiramo ovako: nademo prikaz broja B, tj. svih n bitova u prikazu, [b n 1 b n 2... b 1 b 0 ], komplementiramo svaki bit u prikazu, b i b i, [ b n 1 bn 2... b 1 b0 ], očitamo broj B čiji je to prikaz. Ovo možemo definirati i za brojeve s predznakom, ali nam neće trebati (da ne stvara zabunu). Prog1 2018, 3. predavanje prošireno p. 92/120
93 Komplement broja bez predznaka (nastavak) Dakle, ako je B Z 2 n oblika B = b n 1 2 n 1 +b n 2 2 n 2 + +b 1 2+b 0, onda je, očito, B Z 2 n i vrijedi B = b n 1 2 n 1 + b n 2 2 n b 1 2+ b 0. Uočimo da za svaki bit vrijedi b+ b = 1 i zbrojimo ove dvije relacije. Dobivamo B + B = 1 2 n n = 2 n 1 +2 n = 2 n 1. Prog1 2018, 3. predavanje prošireno p. 93/120
94 Prikaz suprotnog broja preko komplementa Prebacimo 1 s desne na lijevu stranu B + B +1 = 2 n, i zapišimo ovu relaciju modularnim zbrajanjem 2 n u Z 2 n B 2 n ( B 2 n 1) = 0. Dakle, jedinstveni suprotni element (= inverz obzirom na modularno zbrajanje) elementa B Z 2 n jednak je B 2 n 1. Drugim riječima, suprotni broj dobivamo tako da komplementiramo broj (odnosno, njegov prikaz) i dodamo 1 modulo 2 n. Prog1 2018, 3. predavanje prošireno p. 94/120
95 Prikaz suprotnog broja preko komplementa Napomena. Modularno dodavanje jedinice služi samo za B = 0. Tada je B = 2 n 1 i moramo dodati 1 modularno, da opet dobijemo 0 kao suprotni element. Za B Z 2 n i B > 0, suprotni element je B +1. Potpuno isto pravilo vrijedi i za brojeve s predznakom! Prisjetimo se da je prikaz negativnih brojeva iz Z 2 n podešen tako da modularna aritmetika radi korektno. To znači da za svaki B Z 2 n vrijedi prikaz(b) 2 n prikaz( B) = 0. Ovdje B treba smatrati suprotnim elementom od B u Z 2 n. Prog1 2018, 3. predavanje prošireno p. 95/120
96 Prikaz suprotnog broja preko komplementa Znamo da je prikaz(b) = B, za neki B Z 2 n, pa mora biti prikaz( B) = B 2 n 1, zbog jedinstvenosti suprotnog elementa u Z 2 n. Opet, prikaz suprotnog broja prikaz( B) dobivamo tako da komplementiramo prikaz samog broja prikaz(b) = B i dodamo 1 modulo 2 n. Ovaj zaključak je direktna posljedica modularne aritmetike u Z 2 n i ne ovisi o tome koji broj B Z 2 n izaberemo za prikaz zadanog broja B Z 2 n. Zato i treba dodatno fiksirati prikaz barem jednog broja iz Z 2 n (na primjer, B = 0 na isti prikaz kao 0 Z 2 n) da dobijemo jedinstvenost prikaza. Prog1 2018, 3. predavanje prošireno p. 96/120
97 Dijeljenje cijelih brojeva s predznakom Prog1 2018, 3. predavanje prošireno p. 97/120
98 Dijeljenje cijelih brojeva s predznakom uvod Ranije smo uveli operacije div (cjelobrojni kvocijent) i mod (ostatak) na skupu Z N. Definicija. Neka su a Z i b N bilo koji brojevi, i neka su q Z (cjelobrojni kvocijent) i r Z b (ostatak) jedinstveni brojevi za koje vrijedi a = q b+r. Operacije div i mod definiramo relacijama a div b := q Z, a mod b := r Z b. Za početak, uočite da su obje operacije definirane na skupu Z N, a kodomene su im različite. Prog1 2018, 3. predavanje prošireno p. 98/120
99 Dijeljenje cijelih brojeva s predznakom uvod Sad nam treba proširenje na skup Z (Z\{0}), kad cjelobrojno dijelimo dva cijela broja (što, naravno, ima smisla), da dobijemo cjelobrojno dijeljenje za cijele brojeve s predznakom Z 2 n (koji modeliraju skup Z). Naravno, ideja je ista kao i kod brojeva bez predznaka. Cjelobrojno dijeljenje ili dijeljenje s ostatkom cijelih brojeva s predznakom je naprosto restrikcija odgovarajućih operacija div i mod. Tek u novije vrijeme postoji dogovoreni standard (tzv. C99) za proširenje operacija div i mod na Z (Z\{0}). Prog1 2018, 3. predavanje prošireno p. 99/120
100 Dijeljenje cijelih brojeva što je problem? Primjer. Neka je a = 5 i b = 3. Onda je 5 = 1 3+2, pa je kvocijent q = 1 i ostatak r = 2. Neka je sad a = 5 i b = 3. Za kvocijent q i ostatak r mora vrijediti a = q b+r. Ostaje izbor/restrikcija ostatka r. U Euklidovom teoremu je uvijek r 0, tj. r Z b. Onda je 5 = 2 3+1, pa je q = 2 i r = 1. To nema nikakve veze s prethodnim rezultatima za pripadne apsolutne vrijednosti! Medutim, ako dozvolimo negativni ostatak r Z b, onda je 5 = 1 3 2, pa je q = 1 i r = 2. Apsolutne vrijednosti kvocijenta i ostatka ostaju iste! Prog1 2018, 3. predavanje prošireno p. 100/120
101 Dijeljenje cijelih brojeva izbor ostatka Naime, standardno ograničenje na ostatak 0 r < b, tj. r Z b, prirodno odgovara cijelim brojevima bez predznaka. Zato, u većini programskih jezika (uključivo i C) vrijedi da stvar radi očekivano, tj. prema standardnom Euklidovom teoremu, samo na skupu N 0 N. Dakle, za nenegativne brojeve s predznakom dobivamo očekivane (i korektne) rezultate u cjelobrojnom dijeljenju. Medutim, kod brojeva s predznakom imamo i negativne brojeve, pa (možda) ima smisla dozvoliti da i ostaci budu negativni, u nekim slučajevima. Odluka, tj. izbor ostataka ovisi o primjeni i željenim svojstvima rezultata! Prog1 2018, 3. predavanje prošireno p. 101/120
102 Dijeljenje cijelih brojeva izbor ostatka Pripadni Euklidov teorem smije imati i kompliciraniju formulaciju, ako je to korisno u praksi. Pitanje je samo je li izbor ostataka propisan ili ne!!! Nažalost, za negativne operande, ponašanje dijeljenja ne mora biti precizno definirano! Na primjer, stari C90 standard (knjiga KR2) kaže: ako je barem jedan od dva operanda negativan, rezultat ovisi o implementaciji. Dakle, nije predvidiv isti program može davati različite rezultate, ovisno o računalu i izboru C compilera. Zato čitajte upute ili, naprosto, probajte! Srećom, novi C99 standard precizno propisuje izbor ostataka. Prog1 2018, 3. predavanje prošireno p. 102/120
103 Dijeljenje cijelih brojeva s predznakom Eksperiment: test program divmod.c (v. sljedeća stranica), Intel C/C++ compiler, gcc compiler (Code::Blocks). Rezultati q = a div b i r = a mod b za a = ±5, b = ±3: a b q r Operacije div i mod interpretiramo na Z (Z\{0}). Prog1 2018, 3. predavanje prošireno p. 103/120
Programiranje 1 3. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2017, 3. predavanje p. 1/1
Programiranje 1 3. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2017, 3. predavanje p. 1/132 Sadržaj predavanja Osnovni tipovi podataka u računalu
ВишеProgramiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p
Programiranje IEEE prikaz brojeva sažetak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog 208, IEEE prikaz brojeva sažetak p. /4 Sadržaj predavanja IEEE standard
ВишеProgramiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4
Programiranje 2 0. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/48 Sadržaj predavanja Ponavljanje onog dijela C-a koji
ВишеProgramiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6
Programiranje 1 9. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/60 Sadržaj predavanja Osnovni algoritmi na cijelim brojevima:
ВишеJMBAG IME I PREZIME BROJ BODOVA 1. (ukupno 6 bodova) MJERA I INTEGRAL 1. kolokvij 4. svibnja (Knjige, bilježnice, dodatni papiri i kalkulatori n
1. (ukupno 6 bodova) MJERA I INTEGRAL 1. kolokvij 4. svibnja 2018. (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) (a) (2 boda) Definirajte (općenitu) vanjsku mjeru. (b) (2 boda) Definirajte
Више23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi
3. siječnja 0. od 3:00 do 4:00 RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovitelji Sadržaj Zadaci. 4.... Zadaci 5. 0.... 3 od 8 Zadaci. 4. U sljedećim pitanjima na pitanja odgovaraš upisivanjem
ВишеALIP1_udzb_2019.indb
Razmislimo Kako u memoriji računala prikazujemo tekst, brojeve, slike? Gdje se spremaju svi ti podatci? Kako uopće izgleda memorija računala i koji ju elektronički sklopovi čine? Kako biste znali odgovoriti
ВишеCIJELI BROJEVI 1.) Kako još nazivamo pozitivne cijele brojeve? 1.) Za što je oznaka? 2.) Ispiši skup prirodnih brojeva! 3.) Kako označavamo skup priro
CIJELI BROJEVI 1.) Kako još nazivamo pozitivne cijele brojeve? 1.) Za što je oznaka? 2.) Ispiši skup prirodnih brojeva! 3.) Kako označavamo skup prirodnih brojeva? 4.) Pripada li 0 skupu prirodnih brojeva?
ВишеOblikovanje i analiza algoritama 4. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. pr
Oblikovanje i analiza algoritama 4. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. predavanje p. 1/69 Sadržaj predavanja Složenost u praksi
ВишеTeorija skupova - blog.sake.ba
Uvod Matematika je jedan od najomraženijih predmeta kod većine učenika S pravom, dakako! Zapitajmo se šta je uzrok tome? Da li je matematika zaista toliko teška, komplikovana? Odgovor je jednostavan, naravno
ВишеSVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivana Šore REKURZIVNOST REALNIH FUNKCIJA Diplomski rad Voditelj rada: doc.
SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivana Šore REKURZIVNOST REALNIH FUNKCIJA Diplomski rad Voditelj rada: doc.dr.sc. Zvonko Iljazović Zagreb, rujan, 2015. Ovaj diplomski
Вишеs2.dvi
1. Skup kompleksnih brojeva 1. Skupovibrojeva.... Skup kompleksnih brojeva................................. 6. Zbrajanje i množenje kompleksnih brojeva..................... 9 4. Kompleksno konjugirani
ВишеJMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL završni ispit 6. srpnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1.
MJERA I INTEGRAL završni ispit 6. srpnja 208. (Knjige bilježnice dodatni papiri i kalkulatori nisu dozvoljeni!). (8 bodova) Kao na predavanjima za d N sa P d : a b ] a d b d ] : a i b i R a i b i za i
ВишеNumerička matematika 1. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 1. pre
Numerička matematika 1. predavanje dodatak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 1. predavanje dodatak p. 1/102 Sadržaj predavanja dodatka
ВишеNumerička matematika 11. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 11. p
Numerička matematika 11. predavanje dodatak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 11. predavanje dodatak p. 1/46 Sadržaj predavanja dodatka
ВишеPROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije
PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije korake. Uz dobro razrađen algoritam neku radnju ćemo
ВишеMatrice. Algebarske operacije s matricama. - Predavanje I
Matrice.. Predavanje I Ines Radošević inesr@math.uniri.hr Odjel za matematiku Sveučilišta u Rijeci Matrice... Matrice... Podsjeti se... skup, element skupa,..., matematička logika skupovi brojeva N,...,
ВишеUvod u računarstvo 2+2
Ulaz i izlaz podataka Ulaz i izlaz podataka Nakon odslušanog bit ćete u stanju: navesti sintaksu naredbi za unos/ispis znakova znakovnih nizova cijelih brojeva realnih brojeva jednostruke i dvostruke preciznosti
Вишеknjiga.dvi
1. Vjerojatnost 1. lgebra dogadaja......................... 1 2. Vjerojatnost............................. 9 3. Klasični vjerojatnosni prostor................. 14 4. eskonačni vjerojatnosni prostor...............
ВишеProgramiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj
Programiranje 1 5. predavanje dodatak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanje dodatak p. 1/60 Sadržaj predavanja dodatka Primjeri
ВишеRazvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić
Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić projektni zadatak projektovanje programa (algoritmi) pisanje programskog koda, izvorni kod,
ВишеUAAG Osnovne algebarske strukture 5. Vektorski prostori Borka Jadrijević
Osnovne algebarske strukture 5. Vektorski prostori Borka Jadrijević Osnovne algebarske strukture5. Vektorski prostori 2 5.1 Unutarnja i vanjska množenja Imamo dvije vrste algebarskih operacija, tzv. unutarnja
ВишеPROMENLJIVE, TIPOVI PROMENLJIVIH
PROMENLJIVE, TIPOVI PROMENLJIVIH Šta je promenljiva? To je objekat jezika koji ima ime i kome se mogu dodeljivati vrednosti. Svakoj promenljivoj se dodeljuje registar (memorijska lokacija) operativne memorije
ВишеSlide 1
OSNOVNI POJMOVI Naredba je uputa računalu za obavljanje određene radnje. Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Pisanje programa zovemo programiranje. Programski jezik
Више(Microsoft Word - Dr\236avna matura - studeni osnovna razina - rje\232enja)
1. C. Imamo redom: I. ZADATCI VIŠESTRUKOGA IZBORA 9 + 7 6 9 + 4 51 = = = 5.1 18 4 18 8 10. B. Pomoću kalkulatora nalazimo 10 1.5 = 63.45553. Četvrta decimala je očito jednaka 5, pa se zaokruživanje vrši
ВишеTutoring System for Distance Learning of Java Programming Language
Deklaracija promenljivih Inicijalizacija promenljivih Deklaracija promenljive obuhvata: dodelu simboličkog imena promenljivoj i određivanje tipa promenljive (tip određuje koja će vrsta memorijskog registra
ВишеMicrosoft Word - 6ms001
Zadatak 001 (Anela, ekonomska škola) Riješi sustav jednadžbi: 5 z = 0 + + z = 14 4 + + z = 16 Rješenje 001 Sustav rješavamo Gaussovom metodom eliminacije (isključivanja). Gaussova metoda provodi se pomoću
ВишеMicrosoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]
Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 03 Zvonimir Bujanović Slaven Kožić Vinko Petričević Mrežno programiranje: SocketAPI Programiramo u aplikacijskom sloju, za ostale se brinu
ВишеMatematika 1 - izborna
3.3. NELINEARNE DIOFANTSKE JEDNADŽBE Navest ćemo sada neke metode rješavanja diofantskih jednadžbi koje su drugog i viših stupnjeva. Sve su te metode zapravo posebni oblici jedne opće metode, koja se naziva
ВишеProgramiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,
Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni podsjetnik. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite
ВишеMicrosoft PowerPoint - Bitovi [Compatibility Mode]
Оператори над битовима (Јаничић, Марић: Програмирање 2, тачка 5.6) Оператори за рад са појединачним битовима Само на целобројне аргументе: ~ битовска негација & битовска конјункција (и) битовска (инклузивна)
ВишеAlgoritmi i arhitekture DSP I
Univerzitet u Novom Sadu Fakultet Tehničkih Nauka Katedra za računarsku tehniku i međuračunarske komunikacije Algoritmi i arhitekture DSP I INTERNA ORGANIACIJA DIGITALNOG PROCESORA A OBRADU SIGNALA INTERNA
ВишеOblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr
Oblikovanje i analiza algoritama 5. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. predavanje p. 1/68 Sadržaj predavanja Nehomogene rekurzije
Више0255_Uvod.p65
1Skupovi brojeva Skup prirodnih brojeva Zbrajanje prirodnih brojeva Množenje prirodnih brojeva U košari ima 12 jaja. U drugoj košari nedostaju tri jabuke da bi bila puna, a treća je prazna. Pozitivni,
Вишеatka 26 (2017./2018.) br. 102 NEKE VRSTE DOKAZA U ČAROBMATICI Jadranka Delač-Klepac, Zagreb jednoj smo priči spomenuli kako je važno znati postavljati
NEKE VRSTE DOKAZA U ČAROBMATICI Jadranka Delač-Klepac, Zagreb jednoj smo priči spomenuli kako je važno znati postavljati prava pitanja. U Jednako je važno znati pronaći odgovore na postavljena pitanja,
ВишеDržavna matura iz informatike
DRŽAVNA MATURA IZ INFORMATIKE U ŠK. GOD. 2013./14. 2016./17. SADRŽAJ Osnovne informacije o ispitu iz informatike Područja ispitivanja Pragovi prolaznosti u 2014./15. Primjeri zadataka po područjima ispitivanja
ВишеUvod u računarstvo 2+2
Pokazivači Pointeri Definicija pokazivača Pokazivač na tip je varijabla koja sadrži adresu varijable tipa tip. Definicija pokazivača: mem_klasa tip * p_var; Primjer: static int * pi; double *px; char*
Више2015_k2_z12.dvi
OBLIKOVANJE I ANALIZA ALGORITAMA 2. kolokvij 27. 1. 2016. Skice rješenja prva dva zadatka 1. (20) Zadano je n poslova. Svaki posao je zadan kao vremenski interval realnih brojeva, P i = [p i,k i ],zai
ВишеSkripte2013
Chapter 2 Algebarske strukture Preslikivanje f : A n! A se naziva n-arna operacija na skupu A Ako je n =2, kažemo da je f : A A! A binarna operacija na A Kažemo da je operacija f arnosti n, u oznaci ar
ВишеMicrosoft Word - predavanje8
DERIVACIJA KOMPOZICIJE FUNKCIJA Ponekad je potrebno derivirati funkcije koje nisu jednostavne (složene su). Na primjer, funkcija sin2 je kompozicija funkcija sin (vanjska funkcija) i 2 (unutarnja funkcija).
ВишеJMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL 2. kolokvij 29. lipnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1. (
MJERA I INTEGRAL. kolokvij 9. lipnja 018. (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni! 1. (ukupno 6 bodova Neka je (, F, µ prostor s mjerom, neka je (f n n1 niz F-izmjerivih funkcija
Више(Microsoft Word - MATB - kolovoz osnovna razina - rje\232enja zadataka)
. B. Zapišimo zadane brojeve u obliku beskonačno periodičnih decimalnih brojeva: 3 4 = 0.7, = 0.36. Prvi od navedenih četiriju brojeva je manji od 3 4, dok su treći i četvrti veći od. Jedini broj koji
ВишеPowerPoint Presentation
SVEUČILIŠTE U ZAGREBU Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Vukelićeva 4, Zagreb, HRVATSKA Računalstvo Operatori, pisanje izraza i osnove pseudokôda Izv. prof. dr. sc. Edouard
ВишеDržavno natjecanje / Osnove informatike Srednje škole Zadaci U sljedećim pitanjima na odgovore odgovaraš upisivanjem slova koji se nalazi ispred
Zadaci. 8. U sljedećim pitanjima na odgovore odgovaraš upisivanjem slova koji se nalazi ispred točnog odgovora, u za to predviđen prostor. Odgovor Ako želimo stvoriti i pohraniti sliku, ali tako da promjenom
ВишеMicrosoft Word - 02 Elementi programskog jezika Pascal
Elementi programskog jezika Pascal Osnovni elementi jezika Osnovni simboli U programskom jeziku Pascal sve konstrukcije se grade od skupa osnovnih simbola jezika koji čine slova, cifre i specijalni znaci.
ВишеProgramiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1
Programiranje 1 10. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1/95 Sadržaj predavanja Funkcije: Definicija funkcije.
ВишеMicrosoft Word - 1. REALNI BROJEVI- formulice
REALNI BROJEVI Skup prirodnih brojeva je N={1,2,3,4,,6,7, } Ako skupu prirodnih brojeva dodamo i nulu onda imamo skup N 0 ={0,1,2,3, } Skup celih brojeva je Z = {,-3,-2,-1,0,1,2,3, } Skup racionalnih brojeva
ВишеMicrosoft Word - 1.Operacije i zakoni operacija
1. Operacije i zakoni operacija Neka je S neprazan skup. Operacija dužine n skupa S jeste svako preslikavanje : n n f S S ( S = S S S... S) Ako je n = 1, onda operaciju nazivamo unarna. ( f : S S ) Ako
ВишеLogičke izjave i logičke funkcije
Logičke izjave i logičke funkcije Građa računala, prijenos podataka u računalu Što su logičke izjave? Logička izjava je tvrdnja koja može biti istinita (True) ili lažna (False). Ako je u logičkoj izjavi
ВишеUvod u računarstvo 2+2
Programiranje 2 doc.dr.sc. Goranka Nogo PMF Matematički odsjek, Zagreb Kontakt ured: 228, drugi kat e-mail: nogo@math.hr konzultacije: četvrtak, 12:00-14:00 petak, 11:00-12:00 neki drugi termin, uz prethodni
ВишеMAT KOL (Banja Luka) ISSN (p), ISSN (o) Vol. XX (2)(2014), PELLOVA JEDNAČINA I PITAGORIN
MAT KOL (Banja Luka) ISSN 0354 6969 (p), ISSN 986 5228 (o) Vol. XX (2)(204), 59 68 http://www.imvibl.org/dmbl/dmbl.htm PELLOVA JEDNAČINA I PITAGORINE TROJKE Amra Duraković Bernadin Ibrahimpašić 2, Sažetak
ВишеProgramiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj
Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni šalabahter. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite
Више1 Konusni preseci (drugim rečima: kružnica, elipsa, hiperbola i parabola) Definicija 0.1 Algebarska kriva drugog reda u ravni jeste skup tačaka opisan
1 Konusni preseci (drugim rečima: kružnica, elipsa, hiperbola i parabola) Definicija 0.1 Algebarska kriva drugog reda u ravni jeste skup tačaka opisan jednačinom oblika: a 11 x 2 + 2a 12 xy + a 22 y 2
ВишеMicrosoft Word - 11 Pokazivaci
Pokazivači U dosadašnjem radu smo imali prilike da koristimo promenljive koje smo deklarisali na početku nekog bloka. Prilikom deklaracije promenljiva dobija jedinstveni naziv i odgovarajući prostor u
Више070-ALIP2-udzbenik.indb
0. U uvodnom ćemo poglavlju ponoviti osnove programskog jezika C s kojima smo se susreli u. razredu. U kratkom pregledu navedeni su operatori (aritmetički, relacijski i logički), neke od funkcija iz biblioteka
ВишеSkalarne funkcije više varijabli Parcijalne derivacije Skalarne funkcije više varijabli i parcijalne derivacije Franka Miriam Brückler
i parcijalne derivacije Franka Miriam Brückler Jednadžba stanja idealnog plina uz p = nrt V f (x, y, z) = xy z x = n mol, y = T K, z = V L, f == p Pa. Pritom je kodomena od f skup R, a domena je Jednadžba
Више_sheets.dvi
Zavod za elektroniku, mikroelektroniku, 28. studenog 2008. računalne i inteligentne sustave 2. me duispit iz Arhitekture računala 2, teorijski dio 1. Koja komponenta modernih računala nije bila prisutnau
Више7. predavanje Vladimir Dananić 14. studenoga Vladimir Dananić () 7. predavanje 14. studenoga / 16
7. predavanje Vladimir Dananić 14. studenoga 2011. Vladimir Dananić () 7. predavanje 14. studenoga 2011. 1 / 16 Sadržaj 1 Operator kutne količine gibanja 2 3 Zadatci Vladimir Dananić () 7. predavanje 14.
ВишеP11.3 Analiza zivotnog veka, Graf smetnji
Поједностављени поглед на задњи део компајлера Међурепрезентација (Међујезик IR) Избор инструкција Додела ресурса Распоређивање инструкција Инструкције циљне архитектуре 1 Поједностављени поглед на задњи
ВишеSadržaj 1 Diskretan slučajan vektor Definicija slučajnog vektora Diskretan slučajan vektor
Sadržaj Diskretan slučajan vektor Definicija slučajnog vektora 2 Diskretan slučajan vektor Funkcija distribucije slučajnog vektora 2 4 Nezavisnost slučajnih vektora 2 5 Očekivanje slučajnog vektora 6 Kovarijanca
ВишеMy_P_Red_Bin_Zbir_Free
БИНОМНА ФОРМУЛА Шт треба знати пре почетка решавања задатака? I Треба знати биному формулу која даје одговор на питање чему је једнак развој једног бинома када га степенујемо са бројем 0 ( ) или ( ) 0!,
ВишеMicrosoft Word - 15ms261
Zadatak 6 (Mirko, elektrotehnička škola) Rješenje 6 Odredite sup S, inf S, ma S i min S u skupu R ako je S = { R } a b = a a b + b a b, c < 0 a c b c. ( ), : 5. Skratiti razlomak znači brojnik i nazivnik
ВишеUvod u računarstvo 2+2
Datoteke nastavak Funkcija fgets Funkcija koja učitava podatke iz datoteke, liniju po liniju, je char *fgets(char *str, int n, FILE *fp); gdje su str pokazivač na dio memorije (string) u koji će ulazna
ВишеElementarna matematika 1 - Oblici matematickog mišljenja
Oblici matematičkog mišljenja 2007/2008 Mišljenje (psihološka definicija) = izdvajanje u čovjekovoj spoznaji odre denih strana i svojstava promatranog objekta i njihovo dovo denje u odgovarajuće veze s
ВишеSKRIPTE EKOF 2019/20 skripteekof.com Lekcija 1: Brojevni izrazi Lekcija 1: Brojevni izrazi Pregled lekcije U okviru ove lekcije imaćete priliku da nau
Lekcija : Brojevni izrazi Pregled lekcije U okviru ove lekcije imaćete priliku da naučite sledeće: osnovni pojmovi o razlomcima proširivanje, skraćivanje, upoređivanje; zapis razlomka u okviru mešovitog
Више(Microsoft Word - Rje\232enja zadataka)
1. D. Svedimo sve razlomke na jedinstveni zajednički nazivnik. Lako provjeravamo da vrijede rastavi: 85 = 17 5, 187 = 17 11, 170 = 17 10, pa je zajednički nazivnik svih razlomaka jednak Tako sada imamo:
ВишеPripreme 2016 Indukcija Grgur Valentić lipanj Zadaci su skupljeni s dva predavanja na istu temu, za učenike od prvog do trećeg razreda i za MEMO
Pripreme 016 Indukcija Grgur Valentić lipanj 016. Zadaci su skupljeni s dva predavanja na istu temu, za učenike od prvog do trećeg razreda i za MEMO kandidate. Zato su zadaci podjeljeni u odlomka. U uvodu
ВишеTest ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime
Test ispravio: () () Ukupan broj bodova:. veljače 04. od 3:00 do 4:00 Ime i prezime Razred Škola Županija Mentor Sadržaj Upute za natjecatelje... Zadaci... Upute za natjecatelje Vrijeme pisanja: 60 minuta
ВишеKonstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun
Konstrukcija i analiza algoritama Nina Radojičić februar 2018. 1 Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne funkcije od argumenta n iz skupa N prirodnih brojeva.
ВишеNumerička matematika 1. predavanje Saša Singer web.math.hr/~singer PMF Matematički odjel, Zagreb NumMat 2010, 1. predavanje p.1/133
Numerička matematika 1. predavanje Saša Singer singer@math.hr web.math.hr/~singer PMF Matematički odjel, Zagreb NumMat 2010, 1. predavanje p.1/133 Dobar dan, dobro došli NumMat 2010, 1. predavanje p.2/133
ВишеОрт колоквијум
II колоквијум из Основа рачунарске технике I - 27/28 (.6.28.) Р е ш е њ е Задатак На улазе x, x 2, x 3, x 4 комбинационе мреже, са излазом z, долази четворобитни BCD број. Ако број са улаза при дељењу
ВишеVeeeeeliki brojevi
Matematička gimnazija Nedelja informatike 3 12. decembar 2016. Uvod Postoji 10 tipova ljudi na svetu, oni koji razumeju binarni sistem, oni koji ne razumeju binarni sistem i oni koji nisu očekivali šalu
ВишеMicrosoft PowerPoint - 03-Slozenost [Compatibility Mode]
Сложеност алгоритама (Програмирање 2, глава 3, глава 4-4.3) Проблем: класа задатака истог типа Велики број различитих (коректних) алгоритама Величина (димензија) проблема нпр. количина података које треба
ВишеMicrosoft Word - ASIMPTOTE FUNKCIJA.doc
ASIMPTOTE FUNKCIJA Naš savet je da najpre dobro proučite granične vrednosti funkcija Neki profesori vole da asimptote funkcija ispituju kao ponašanje funkcije na krajevima oblasti definisanosti, pa kako
Више(Microsoft Word - Dr\236avna matura - kolovoz ni\236a razina - rje\232enja)
1. C. Imamo redom: I. ZADATCI VIŠESTRUKOGA IZBORA. B. Imamo redom: 0.3 0. 8 7 8 19 ( 3) 4 : = 9 4 = 9 4 = 9 = =. 0. 0.3 3 3 3 3 0 1 3 + 1 + 4 8 5 5 = = = = = = 0 1 3 0 1 3 0 1+ 3 ( : ) ( : ) 5 5 4 0 3.
ВишеAR2019
ARHITEKTURA RAČUNARA (pregled principa i evolucije) Miroslav Hajduković Žarko Živanov NOVI SAD, 2019. PREDGOVOR Cilj ove knjige je da stvori funkcionalno zaokruženu sliku o radu računara. Zbog toga je
ВишеAlgoritmi SŠ P1
Županijsko natjecanje iz informatike Srednja škola 9. veljače 2018. RJEŠENJA ZADATAKA Napomena: kodovi za većinu opisanih algoritama dani su u Pythonu radi jednostavnosti i lakše čitljivosti. Zbog prirode
Више8 2 upiti_izvjesca.indd
1 2. Baze podataka Upiti i izvješća baze podataka Na početku cjeline o bazama podataka napravili ste plošnu bazu podataka o natjecanjima učenika. Sada ćete izraditi relacijsku bazu u Accessu o učenicima
ВишеLinearna algebra Mirko Primc
Linearna algebra Mirko Primc Sadržaj Poglavlje 1. Polje realnih brojeva 5 1. Prirodni i cijeli brojevi 5 2. Polje racionalnih brojeva 6 3. Polje realnih brojeva R 9 4. Polje kompleksnih brojeva C 13 5.
ВишеINF INFORMATIKA INF.27.HR.R.K1.20 INF D-S INF D-S027.indd :50:41
INF INFORMATIKA INF.7.HR.R.K..indd 7.7.6. 3:5:4 Prazna stranica 99.indd 7.7.6. 3:5:4 OPĆE UPUTE Pozorno pročitajte sve upute i slijedite ih. Ne okrećite stranicu i ne rješavajte zadatke dok to ne odobri
ВишеУПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: Након
УПУТСТВО ЗА КОРИСНИКА Приступ локацији часописа Српски архив за целокупно лекарство добија се преко internet adrese: http://www.srpskiarhiv.rs/ Након тога се на екрану појављује форма за пријаву на часопис
ВишеAlgoritmi SŠ P1
Državno natjecanje iz informatike Srednja škola Prvi dan natjecanja 2. ožujka 219. ime zadatka BADMINTON SJEME MANIPULATOR vremensko ograničenje 1 sekunda 1 sekunda 3 sekunde memorijsko ograničenje 512
ВишеPASCAL UVOD 2 II razred gimnazije
PASCAL UVOD 2 II razred gimnazije Upis-ispis 1. Upis Read(a,b); --u jednom redu Readln(a,b); -- nakon upisa prelazi se u novi red 2. Ispis Write(a,b); -- u jednom redu Writeln(a,b); --nakon ispisa prelazi
Више1 Polinomi jedne promenljive Neka je K polje. Izraz P (x) = a 0 + a 1 x + + a n x n = n a k x k, x K, naziva se algebarski polinom po x nad poljem K.
1 Polinomi jedne promenljive Neka je K polje. Izraz P (x) = a 0 + a 1 x + + a n x n = n a k x k, x K, naziva se algebarski polinom po x nad poljem K. Elementi a k K su koeficijenti polinoma P (x). Ako
ВишеPLAN I PROGRAM ZA DOPUNSKU (PRODUŽNU) NASTAVU IZ MATEMATIKE (za 1. razred)
PLAN I PROGRAM ZA DOPUNSKU (PRODUŽNU) NASTAVU IZ MATEMATIKE (za 1. razred) Učenik prvog razreda treba ostvarit sljedeće minimalne standarde 1. SKUP REALNIH BROJEVA -razlikovati brojevne skupove i njihove
Више(Microsoft Word - Dr\236avna matura - rujan osnovna razina - rje\232enja)
I. ZADATCI VIŠESTRUKOGA IZBORA. B. Broj je cijeli broj, tj. pripada skupu cijelih brojeva Z. Skup cijelih brojeva Z je pravi podskup skupa racionalnih brojeva Q, pa je i racionalan broj. 9 4 je očito broj
ВишеOsnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B.
Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B. The only way to learn a new programming language is by writing programs in it. Kernighan & Ritchie... and it is well
ВишеDiferenciranje i integriranje pod znakom integrala math.e Vol math.e Hrvatski matematički elektronički časopis Diferenciranje i integriranje pod
1 math.e Hrvatski matematički elektronički časopis Diferenciranje i integriranje pod znakom integrala analiza Irfan Glogić, Harun Šiljak When guys at MIT or Princeton had trouble doing a certain integral,
ВишеMicrosoft Word - ASIMPTOTE FUNKCIJE.doc
ASIMPTOTE FUNKCIJE (PONAŠANJE FUNKCIJE NA KRAJEVIMA OBLASTI DEFINISANOSTI) Ovo je jedna od najznačajnijih tačaka u ispitivanju toka funkcije. Neki profesori zahtevaju da se asimptote rade kao. tačka u
Више(Microsoft Word - Dr\236avna matura - kolovoz osnovna razina - rje\232enja)
5 5: 5 5. B. Broj.5 možemo zapisati u obliku = =, a taj broj nije cijeli broj. 0 0 : 5 Broj 5 je iracionalan broj, pa taj broj nije cijeli broj. Broj 5 je racionalan broj koji nije cijeli broj jer broj
ВишеRačunarski praktikum I - Vježbe 01 - Uvod
Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 01 - Uvod v2018/2019. Sastavio: Zvonimir Bujanović Gradivo i način polaganja Gradivo: osnove jezika
ВишеRačunarski praktikum I - Vježbe 03 - Implementacija strukture string
Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 03 - Implementacija strukture string v2018/2019. Sastavio: Zvonimir Bujanović Stringovi u C-u String
Више(Microsoft Word - Dr\236avna matura - svibanj osnovna razina - rje\232enja)
I. ZADATCI VIŠESTRUKOGA IZBORA 1. A. Svih pet zadanih razlomaka svedemo na najmanji zajednički nazivnik. Taj nazivnik je najmanji zajednički višekratnik brojeva i 3, tj. NZV(, 3) = 6. Dobijemo: 15 1, 6
ВишеKonverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić
Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić 1. temperatura u stepenima Celzijusa i stepene Farenhajta tf=1.8*tc+32 2. pretvoriti inče u centimetre 1 inč=2.54cm 3. vreme učitano
ВишеFortran
FORTRAN Uvod Računala su samo strojevi: neznaju ništa, ne razmišljaju ni o čemu, ali mogu izuzetnom brzinom i vrlo točno, slijediti precizno napisane upute. Takve upute moraju se napisati u posebnom jeziku
ВишеРационални Бројеви Скуп рационалних бројева 1. Из скупа { 3 4, 2, 4, 11, 0, , 1 5, 12 3 } издвој подскуп: а) природних бројева; б) целих броје
Рационални Бројеви Скуп рационалних бројева. Из скупа {,,,, 0,,, } издвој подскуп: а) природних бројева; б) целих бројева; в) ненегативних рационалних бројева; г) негативних рационалних бројева.. Запиши
ВишеNeprekidnost Jelena Sedlar Fakultet građevinarstva, arhitekture i geodezije Jelena Sedlar (FGAG) Neprekidnost 1 / 14
Neprekidnost Jelena Sedlar Fakultet građevinarstva, arhitekture i geodezije Jelena Sedlar (FGAG) Neprekidnost 1 / 14 Jelena Sedlar (FGAG) Neprekidnost 2 / 14 Definicija. Jelena Sedlar (FGAG) Neprekidnost
ВишеFunkcije predavač: Nadežda Jakšić
Funkcije predavač: Nadežda Jakšić funkcije delovi programa koji izvršavaju neki zadatak, celinu; dele na ugrađene, korisničke i main funkciju ugrađene funkcije printf,scanf... da bi se one izvršile potrebno
ВишеZADACI ZA VJEŽBU 1. Dokažite da vrijedi: (a) (A \ B) (B \ A) = (A B) (A C B C ), (b) A \ (B \ C) = (A C) (A \ B), (c) (A B) \ C = (A \ C) (B \ C). 2.
ZADACI ZA VJEŽBU. Dokažite da vrijedi: (a) (A \ B) (B \ A) = (A B) (A C B C ), (b) A \ (B \ C) = (A C) (A \ B), (c) (A B) \ C = (A \ C) (B \ C).. Pomoću matematičke indukcije dokažite da za svaki n N vrijedi:
Више