UVOD U ORGANIZACIJU RAÄUNARA - Alas
UVOD U ORGANIZACIJU RAÄUNARA - Alas
UVOD U ORGANIZACIJU RAÄUNARA - Alas
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>UVOD</strong> U <strong>ORGANIZACIJU</strong><br />
RAČUNARA<br />
~ vežbe ~
BROJEVNI SISTEMI<br />
Osnovna podela na<br />
<br />
BROJEVNI SISTEMI<br />
• pozicione<br />
primer je uobičajeni dekadni zapis brojeva<br />
• nepozicione<br />
primer je rimski zapis brojeva<br />
POZICIONI BROJEVNI SISTEMI<br />
Svaka cifra ima svoju vrednost<br />
Vrednost pozicije je stepen osnove<br />
Broj se dobija sabiranjem proizvoda vrednosti cifre i<br />
vrednosti pozicije na kojoj se cifra nalazi:<br />
3129 = 3*1000 + 1*100 + 2*10 + 9*1<br />
AZBUKA<br />
Uobičajene cifre za sisteme sa osnovom do 10<br />
• 0, 1, 2, 3, 4, 5, 6, 7, 8, 9<br />
Ako je osnova veća od 10, upotrebljava se potreban broj<br />
slova sa početka abecede<br />
• A, B, C, D, E, F, ...<br />
NAJVAŽNIJE OSNOVE<br />
U osnovi savremenih digitalnih računara su binarna<br />
aritmetika i logika<br />
• u upotrebi su pozicioni brojčani sistemi<br />
• najvažnije osnove su<br />
<br />
2 (binarni sistem)<br />
16 (heksadekadni sistem)<br />
<br />
- 1 -
PRIMERI ČITANjA BROJEVA<br />
(3129) 10<br />
= 3*1000 + 1*100 + 2*10 + 9*1<br />
(3127) 8 = 3*512 + 1*64 + 2*8 + 7*1<br />
= (1623) 10<br />
(3129) 16 = 3*4096 + 1*256 + 2*16 + 9*1<br />
= (12585) 10<br />
HORNEROVA ŠEMA<br />
(3129) 10<br />
= (((3*10) + 1)*10 + 2)*10 + 9<br />
(3127) 8 = (((3*8) + 1)*8 + 2)*8 + 7<br />
= (1623) 10<br />
(3129) 16 = (((3*16) + 1)*16 + 2)*16 + 9<br />
= (12585) 10<br />
ZADACI (1)<br />
Pročitati naredne zapise (tj. prevesti ih u zapise sa<br />
osnovom 10):<br />
• (10) 2, (110) 2, (10110) 2, (10110100110) 2, (12120122101) 2<br />
• (212001) 3, (123031) 4, (2431) 5<br />
• (6732) 8, (12131) 8<br />
• (2C) 16, (1A3) 16, (FFFF) 16, (23B2E) 16<br />
REŠENjA (1)<br />
2, 6, 22, 1446, neispravan zapis<br />
622, 1741, 366<br />
3546, 5209<br />
- 2 -
44, 419, 65535, 146222<br />
ZAPISIVANjE BROJEVA<br />
Postupak formiranja zapisa počiva na deljenju osnovom<br />
sistema<br />
• cifre se određuju od najniže ka najvišoj<br />
• postupak se odnosi na neoznačene cele brojeve<br />
PRIMERI ZAPISIVANjA BROJEVA (1)<br />
Broj (3129) 10 zapisati u sistemu sa osnovom 10:<br />
ostatak<br />
3129 : 10 = 312 9<br />
312 : 10 = 31 2<br />
31 : 10 = 3 1<br />
3 : 10 = 0 3<br />
(3129) 10<br />
PRIMERI ZAPISIVANjA BROJEVA (2)<br />
Broj (3129) 10 zapisati u sistemu sa osnovom 8:<br />
ostatak<br />
3129 : 8 = 391 1<br />
391 : 8 = 48 7<br />
48 : 8 = 6 0<br />
6 : 8 = 0 6<br />
(6071) 8<br />
- 3 -
PRIMERI ZAPISIVANjA BROJEVA (3)<br />
Broj (3129) 10 zapisati u sistemu sa osnovom 4:<br />
ostatak<br />
3129 : 4 = 782 1<br />
782 : 4 = 195 2<br />
195 : 4 = 48 3<br />
48 : 4 = 12 0<br />
12 : 4 = 3 0<br />
3 : 4 = 0 3<br />
(300321) 4<br />
PRIMERI ZAPISIVANjA BROJEVA (4)<br />
Broj (3129) 10 zapisati u sistemu sa osnovom 16:<br />
ostatak<br />
3129 : 16 = 195 9<br />
195 : 16 = 12 3<br />
12 : 16 = 0 C<br />
(C39) 16<br />
ZADACI (2)<br />
Zapisati naredne brojeve u sistemima sa osnovama 2, 3,<br />
4, 8 i 16:<br />
• 23, 76, 43, 91, 134, 375, 246<br />
REŠENjA (2)<br />
2: 10111, 1001100, 101011, 1011011, 10000110,<br />
101110111, 11110110<br />
- 4 -
3: 212, 2211, 1121, 10101, 11222, 111220, 100010<br />
4: 113, 1030, 223, 1123, 2012, 11313, 3312<br />
8: 27, 114, 53, 133, 206, 567, 366<br />
16: 17, 4C, 2B, 5B, 86, 177, F6<br />
RAD SA OZNAČENIM BROJEVIMA<br />
Najčešći načini zapisivanja su<br />
• znak i apsolutna vrednost<br />
• potpuni komplement<br />
• nepotpuni komplement<br />
POTPUNI KOMPLEMENT<br />
Pozitivni brojevi se zapisuju kao apsolutna vrednost broja<br />
sa dodatnom nulom na mestu najveće težine u funkciji<br />
znaka<br />
Negativni brojevi se zapisuju kada se<br />
• svaka cifra apsolutne vrednosti zameni svojim<br />
komplementom<br />
• na rezultat se doda 1 na mestu najmanje težine<br />
PRIMER POTPUNOG KOMPLEMENTA<br />
Zapisati broj (-3129) 10 u potpunom komplementu sa 6<br />
cifara:<br />
i 0 1 2 3 4 5<br />
x i 9 2 1 3 0 0<br />
nc i 0 7 8 6 9 9<br />
pc i 1 7 8 6 9 9<br />
- 5 -
= (996871) 10<br />
ZADACI (1)<br />
Zapisati u potpunom komplementu sa 6 cifara u sistemu<br />
sa istom osnovom brojeve:<br />
(-10011) 2 , (-1101) 2 ,<br />
(-221) 3 , (-102) 3 ,<br />
(-2103) 4 , (-332) 4 ,<br />
(-2326) 8 , (-1327) 8 ,<br />
(-A3DF) 16 , (-2AC3) 16<br />
REŠENjA (1)<br />
(101101) 2 , (110011) 2 ,<br />
(222002) 3 , (222121) 3 ,<br />
(331231) 4 , (333002) 4 ,<br />
(775452) 8 , (776451) 8 ,<br />
(FF5C21) 16 , (FFD53D) 16<br />
ZNAK BROJA<br />
Znak broja se prepoznaje na osnovu cifre najveće težine<br />
• ako je cifra najveće težine najmanja cifra sistema, onda se<br />
radi o pozitivnom broju<br />
• ako je cifra najveće težine najveća cifra sistema, onda se<br />
radi o zapisu negativnog broja<br />
Primeri:<br />
• (0333) 4<br />
, (3000) 4<br />
- 6 -
KONVERZIJA IZMEĐU ZAPISA RAZLIČITIH DUŽINA (1)<br />
Upisivanje u dužu reč se izvodi dodavanjem cifara<br />
najveće težine<br />
• ako se radi o pozitivnom broju, dopisuju se cifre 0<br />
• ako se radi o negativnom broju (u potpunom komplementu)<br />
dopisuju se najviše cifre<br />
PRIMERI KONVERZIJA (1)<br />
Iz zapisa sa 6 cifara u zapis sa 8 cifara:<br />
(001101) 2 => (00001101) 2<br />
(110011) 2 => (11110011) 2<br />
(222002) 3 => (22222002) 3<br />
(022121) 3 => (00022121) 3<br />
(331231) 4 => (33331231) 4<br />
(033002) 4 => (00033002) 4<br />
(745452) 8 => (77745452) 8<br />
(076451) 8 => (00076451) 8<br />
(0F5C21) 16 => (000F5C21) 16<br />
(F7D53D) 16 => (FFF7D53D) 16<br />
KONVERZIJA IZMEĐU ZAPISA RAZLIČITIH DUŽINA (2)<br />
Upisivanje u kraću reč se izvodi brisanjem cifara najveće<br />
težine<br />
• ako su sve obrisane cifre 0, a prva naredna je takođe 0, radi<br />
se o pozitivnom broju i konverzija je ispravna<br />
• ako su sve obrisane cifre najviše (tj. osnova-1), a prva<br />
naredna je ponovo najviša, radi se o negativnom broju i<br />
konverzija je ispravna<br />
• inače je u pitanju greška prekoračenja<br />
- 7 -
PRIMERI KONVERZIJA (2)<br />
Iz zapisa sa 8 cifara u zapis sa 6 cifara:<br />
(00011101) 2 => (011101) 2<br />
(11110011) 2 => (110011) 2<br />
(00110011) 2 => (110011) 2 , prekoračenje<br />
(11010011) 2 => (010011) 2 , prekoračenje<br />
(000F5C21) 16 => (0F5C21) 16<br />
(FFDF5C21) 16 => (DF5C21) 16 , prekoračenje<br />
(00AFD53D) 16 => (AFD53D) 16 , prekoračenje<br />
(F37FD53D) 16 => (7FD53D) 16 , prekoračenje<br />
SABIRANjE<br />
Sabiranje u pozicionim sistemima je slično za sve osnove<br />
• sabiraju se cifre od najniže prema najvišoj, sa prenosom<br />
PRIMER SABIRANjA BROJEVA<br />
• (3129) 10 + (5273) 10 =<br />
i 3 2 1 0<br />
x i 3 1 2 9<br />
y i 5 2 7 3<br />
p. 0 1 1 0<br />
z i 8 4 0 2<br />
= (8402) 10<br />
- 8 -
ZADACI (2)<br />
Izračunati naredne zbirove:<br />
• (10011) 2 + (1101) 2<br />
• (221) 3 + (102) 3<br />
• (2103) 4 + (332) 4<br />
• (1327) 8 + (2326) 8<br />
• (2AC3) 16 + (A3DF) 16<br />
REŠENjA (2)<br />
(100000) 2<br />
(1100) 3<br />
(3101) 4<br />
(3655) 8<br />
(CEA2) 16<br />
PREKORAČENjE PRI SABIRANjU<br />
Prekoračenje se javlja ako rezultat sabiranja ne može<br />
biti zapisan pretpostavljenim brojem cifara<br />
Prekoračenje se prepoznaje tako što<br />
• sabirke sleva proširimo jednom cifrom čija je vrednost<br />
takva da ne menja vrednost broja<br />
• ako su najviša i dopunjena cifra rezultata različite, došlo je<br />
do prekoračenja<br />
• do prekoračenja može doći samo ako se sabiraju brojevi<br />
istog znaka<br />
- 9 -
PRIMER PREKORAČENjA (1)<br />
• (0929) 4 10 + (0773)4 10 =<br />
i 4 3 2 1 0<br />
x i 0 0 9 2 9<br />
y i 0 0 7 7 3<br />
p. 0 1 1 1 0<br />
z i 0 1 7 0 2<br />
= *(1702) 4 10<br />
PRIMER PREKORAČENjA (2)<br />
• (9138) 4 10 + (9591)4 10 =<br />
i 4 3 2 1 0<br />
x i 9 9 1 3 8<br />
y i 9 9 5 9 1<br />
p. 1 0 1 0 0<br />
z i 9 8 7 2 9<br />
= *(8729) 4 10<br />
- 10 -
ZADACI (3)<br />
Izračunati naredne zbirove i proveriti da li dolazi do<br />
prekoračenja:<br />
• (0111) 4 2 + (0010)4 2<br />
• (0010) 4 2 + (0011)4 2<br />
• (1101) 4 2 + (1011)4 2<br />
• (1010) 4 2 + (1101)4 2<br />
• (0B4F) 4 16 + (0C81)4 16<br />
• (0D27) 4 16 + (0194)4 16<br />
• (F428) 4 16 + (FC25)4 16<br />
• (F37F) 4 16 + (042C)4 16<br />
REŠENjA (3)<br />
*(1001)4 2<br />
(0101)4 2<br />
(1000)4 2<br />
*(0100)4 2<br />
*(17D0) 4 16<br />
(0EBB) 4 16<br />
(F04D) 4 16<br />
(F7AB) 4 16<br />
ODUZIMANjE<br />
Oduzimanje u pozicionim sistemima je slično za sve<br />
osnove<br />
• oduzimaju se cifre od najniže prema najvišoj, uz pozajmice<br />
- 11 -
PRIMER ODUZIMANjA BROJEVA (1)<br />
• (3129) 10 - (2735) = 10<br />
i 4 3 2 1 0<br />
x i 0 3 1 2 9<br />
y i 0 2 7 3 5<br />
p. 0 1 1 0 0<br />
z i 0 0 3 9 4<br />
= (0394) 10<br />
PRIMER ODUZIMANjA BROJEVA (2)<br />
• (0129) 4 10 - (0816)4 10 =<br />
i 4 3 2 1 0<br />
x i 0 0 1 2 9<br />
y i 0 0 8 1 6<br />
p. -1 -1 0 0 0<br />
z i 9 9 3 1 3<br />
= (9313) 4 10<br />
- 12 -
ZADACI (4)<br />
Izračunati naredne razlike:<br />
• (10011) 2 - (1101) 2<br />
• (221) 3 - (102) 3<br />
• (2103) 4 - (332) 4<br />
• (2326) 8 - (1327) 8<br />
• (A3DF) 16 - (2AC3) 16<br />
• (029B7) 5 16 - (045AC)5 16<br />
• (00110010) 8 2 - (01010111)8 2<br />
REŠENjA (4)<br />
(110) 2<br />
(112) 3<br />
(1111) 4<br />
(777) 8<br />
(791C) 16<br />
(FE40B)5 16<br />
(11011011) 8 2<br />
PREKORAČENjE PRI ODUZIMANjU<br />
Prekoračenje se javlja ako rezultat oduzimanja ne može<br />
biti zapisan pretpostavljenim brojem cifara<br />
Prekoračenje se prepoznaje tako što<br />
• brojeve sleva proširimo jednom cifrom čija je vrednost<br />
takva da ne menja vrednost broja<br />
• ako su najviša i dopunjena cifra rezultata različite, došlo je<br />
do prekoračenja<br />
• do prekoračenja može doći samo ako se oduzimaju brojevi<br />
različitog znaka<br />
- 13 -
PRIMER PREKORAČENjA (1)<br />
• (0929) 4 10 - (9273)4 10 =<br />
i 4 3 2 1 0<br />
x i 0 0 9 2 9<br />
y i 9 9 2 7 3<br />
p. -1 0 -1 0 0<br />
z i 0 1 6 5 6<br />
= *(1656) 4 10<br />
ZADACI (5)<br />
Izračunati naredne razlike i proveriti da li dolazi do<br />
prekoračenja:<br />
• (0111) 4 2 - (1010)4 2<br />
• (1010) 4 2 - (0011)4 2<br />
• (0101) 4 2 - (1011)4 2<br />
• (1110) 4 2 - (0101)4 2<br />
• (FB4F) 4 16 - (0C81)4 16<br />
• (FD27) 4 16 - (0194)4 16<br />
• (0428) 4 16 - (FC25)4 16<br />
• (037F) 4 16 - (F42C)4 16<br />
- 14 -
REŠENjA (5)<br />
*(1101)4 2<br />
*(0111)4 2<br />
*(1010)4 2<br />
(1001)4 2<br />
*(EECE) 4 16<br />
(FB93) 4 16<br />
(0803) 4 16<br />
(0F53) 4 16<br />
- 15 -
ŠTA JE TO TEKST?<br />
ZAPISIVANjE TEKSTOVA<br />
Tekst (ili dokument) je<br />
• "informacija namenjena ljudskom sporazumevanju koja<br />
može biti prikazana u dvodimenzionalnom obliku... Tekst se<br />
sastoji od grafičkih elemenata kao što su karakteri, geometrijski<br />
ili fotografski elementi ili njihove kombinacije, koji čine sadržaj<br />
dokumenta." (ISO-definicija)<br />
TEKST JE NIZ KARAKTERA<br />
Iako obično tekst zamišljamo kao dvodimenzioni objekat,<br />
u računarima se tekst predstavlja kao jednodimenzioni<br />
(linearni) niz karaktera.<br />
Potrebno je, dakle, uvesti specijalne karaktere koji<br />
označavaju prelazak u novi red, tabulator, kraj teksta i<br />
slično<br />
ZAPIS KARAKTERA U RAČUNARU<br />
Računari su zasnovani na binarnoj aritmetici<br />
Cele brojeve je moguće predstaviti u binarnom sistemu<br />
Osnovna ideja je svakom karakteru pridružiti određeni<br />
ceo broj na unapred dogovoreni način<br />
Ove brojeve zovemo kodovima karaktera (character<br />
codes)<br />
- 16 -
KOLIKO KARAKTERA ŽELIMO DA PREDSTAVIMO U<br />
RAČUNARIMA?<br />
Tokom razvoja računarstva broj karaktera je postajao sve<br />
veći<br />
Pošto je u početku razvoja englesko govorno područje<br />
bilo dominantno osnovno je bilo predstaviti sledeće<br />
karaktere:<br />
ENGLESKO GOVORNO PODRUČJE<br />
Velika slova engleskog alfabeta : A,B,...,Z<br />
Mala slova engleskog alfabeta : a,b,...,z<br />
Cifre : 0,1,...,9<br />
Interpunkcijske znake : .,:;’+*-_ i slično<br />
Specijalne znake : kraj reda, tabulator i slično<br />
STANDARDNI KARAKTERSKI KODOVI<br />
Sedamdesetih godina su se pojavile tabele standardnih<br />
karakterskih kodova dovoljne za zapis pomenutih<br />
karaktera<br />
Najpoznatiji su<br />
• EBCDIC – IBM-ov standard, korišćen uglavnom na mainframe<br />
računarima, pogodan za bušene kartice<br />
• ASCII – Standard iz koga se razvila većina današnjih<br />
standarda<br />
ASCII<br />
ASCII (American Standard Code for Information<br />
Interchange)<br />
ASCII sedmobitan (broj karaktera je 128)<br />
- 17 -
ASCII TABELA<br />
PRIMERI<br />
Karakter A se zapisuje kao (41) 16 tj. 0x41 što je (65) 10 tj.<br />
(1000001) 2<br />
Razmak se zapisuje kao (20) 16 što je (32) 10 tj. (0100000) 2<br />
Zapišite cifru 3 u ASCII kodu<br />
Zapišite tekst Fakultet u ASCII kodu<br />
OZNAKA ZA KRAJ REDA<br />
Oznaka za kraj reda se ne zapisuje isto u svim<br />
operativnim sistemima<br />
Pod Windows ova se oznaka se zapisuje sa dva karaktera<br />
(CR LF), 0xD 0xA tj. 13 10 – istorijski razlozi (stari<br />
štampači)<br />
- 18 -
Unix koristi samo karakter CR tj. 0xD<br />
ŠTA SA OSTALIM JEZICIMA?<br />
Razvojem računarstva se javlja potreba kodiranja<br />
tekstova i na drugim jezicima<br />
Kroz istoriju su postojala mnoga rešenja, od kojih su se<br />
neka zadržala, a neka su nestala<br />
KODNE STRANE<br />
Pod kodnom stranom (Code page) tj. skupom karaktera<br />
(Character set, charset) podrazumevamo uređenu listu<br />
karaktera predstavljenih svojim karakterskim kodovima<br />
Podaci se u računarima obično zapisuju bajt po bajt<br />
ASCII je sedmobitni standard<br />
ASCII karakteri se zapisuju tako što se u svakom bajtu bit<br />
najveće težine postavi na 0<br />
To ostavlja prostor za novih 128 karaktera čiji binarni<br />
zapis počinje sa 1<br />
Ovaj prostor se može popuniti na razne načine<br />
Rešenje nije univerzalno, jer svakako na svetu postoji<br />
više od 256 različitih karaktera<br />
Postavljeni su razni standardi dopunjavanja ovih 128<br />
karaktera<br />
Svim ovim kodnim stranama je zajedničko prvih 128<br />
karaktera i oni se poklapaju sa ASCII<br />
Ovako napravljene kodne strane obično omogućuju<br />
kodiranje tekstova na više srodnih jezika (obično i<br />
geografski bliskih)<br />
Nama su uglavnom važne kodne strane napravljene za<br />
centralno-evropske (Central European) latinice, kao i<br />
ćirilične kodne strane<br />
- 19 -
NAJČEŠĆE KORIŠĆENE KODNE STRANE KOD NAS<br />
ISO 8859-2 (Latin2)<br />
ISO 8859-5 (Ćirilična)<br />
Windows 1250<br />
Windows 1251 (Ćirilična)<br />
• Prve dve su delo međunarodne organizacije za standardizaciju<br />
(International Standard Organization), dok su naredne dve<br />
Microsoft-ovi standardi<br />
LATIN 1<br />
Poželjno je poznavati i osnovnu kodnu stranu ISO 8859-1<br />
(Latin1) jer je veoma često postavljena kao<br />
podrazumevana kodna strana. Ona se koristi za zapis<br />
tekstova na zapadno evropskim jezicima (Western<br />
European)<br />
ISO 8859-1 (LATIN1)<br />
- 20 -
ISO 8859-2 (LATIN2)<br />
WINDOWS 1250<br />
- 21 -
WINDOWS 1251<br />
PRIMERI<br />
Kako izgleda reč Matf zapisana u kodnoj strani ISO 8859-<br />
2? A u Windows 1250? A u Windows 1251?<br />
A reč lišće?<br />
Šta predstavlja niz kodova 138 65 111 33 u kodnoj strani<br />
ISO 8859-2? A u Latin1?<br />
VIŠEBAJTNI KARAKTERSKI KODOVI<br />
Iako navedene kodne strane omogućuju kodiranje<br />
tekstova koji nisu na engleskom jeziku nije moguće npr. u<br />
istom tekstu mešati ćirilicu i našu latinicu<br />
Azijskim jezicima nije dovoljno 256 mesta za zapis svih<br />
karaktera<br />
Zbog toga se uvode višebajtni karakterski kodovi<br />
- 22 -
MBCS<br />
Pre svega zbog potreba istočno azijskih korisnika uvedeni<br />
su tzv. višebajtni skupovi karaktera tj. Multi-Byte<br />
Character Sets (MBCS)<br />
Ideja je u tome da se najčešće korišćeni karakteri<br />
zapisuju koristeći samo jedan bajt, dok se ostali karakteri<br />
zapisuju koristeći dva bajta, tj. koristi se mešavina<br />
jednobajtnih i dvobajtnih karakterskih kodova (pod UNIXom<br />
nekad čak i trobajtnih)<br />
Ovo značajno otežava tumačenje podataka<br />
UCS, ISO 10646, UNICODE<br />
Kasnih osamdesetih, dve velike organizacije su pokušale<br />
standardizaciju tzv. Univerzalnog skupa karaktera<br />
(Universal Character Set - UCS)<br />
To su bili ISO, kroz standard 10646 i projekat UNICODE<br />
organizovan i finansiran uglavnom od strane američkih<br />
firmi koje su se bavile proizvodnjom višejezičkog softvera<br />
ISO 10646<br />
ISO 10646 je zamišljen kao 4-bajtni standard. Pri tome se<br />
prvih 65536 karaktera koriste kao osnovni višejezični skup<br />
- 23 -
karaktera dok je ostali prostor ostavljen kao proširenje<br />
za drevne jezike, celokupnu naučnu notaciju i slično<br />
UNICODE<br />
Vremenom su se pomenuta dva projekta združila i nastao<br />
je jedinstven dvobajtni standard koji jednostavno<br />
nazivamo UNICODE<br />
UNICODE svakom karakteru dodeljuje dvobajtni kod<br />
Prvih 128 karaktera se poklapaju sa ASCII standardom,<br />
dok su sledećih 128 napravljeni tako da se pokalapaju sa<br />
Latin1 standardom<br />
PRIMERI<br />
Zapisati reč Matf koristeći UNICODE<br />
Zapisati reč višnjičica ćirilicom i latinicom u UNICODE<br />
kodu<br />
UCS-2<br />
Unicode standard u suštini predstavlja veliku tabelu koja<br />
svakom karakteru dodeljuje broj<br />
Standardi koji opisuju kako se niske karaktera onda<br />
prevode u nizove bajtova se dodatno definišu<br />
ISO definiše UCS-2 standard koji jednostavno svaki<br />
UNICODE karakter prevodi u odgovarajuća dva bajta<br />
UTF<br />
Tekstovi kodirani preko UCS-2 standarda sadrže veliki<br />
broj nula, koje obično u operativnim sistemima poput<br />
UNIX-a i u programskom jeziku C imaju specijalno<br />
značenje<br />
- 24 -
Iz istog razloga softver koji je razvijen za rad sa<br />
dokumentima u ASCII formatu ne može da radi bez<br />
izmena nad dokumentima kodiranim preko UCS-2<br />
standarda<br />
A Unicode transformation format (UTF) algoritam koji<br />
svakom UNICODE karakteru dodeljuje određeni niz<br />
bajtova čija dužina varira od 1 do najviše 6<br />
UTF je ASCII kompatibilan, što znači da se ASCII karakteri<br />
zapisuju pomoću jednog bajta, na standardni način<br />
UTF-8<br />
Najčešće korišćena varijanta ovog agloritma je UTF-8<br />
koja je dovoljna za zapis svih dvobajtnih UNICODE<br />
karaktera<br />
Pored ovoga ISO uvodi i UTF-16, UTF-32, kao i standard<br />
UCS-4<br />
KARAKTERI, GLIFOVI, FONTOVI<br />
Vrlo često se ne pravi jasna razlika između karaktera i<br />
njihove grafičke reprezentacije<br />
Grafičku reprezentaciju karaktera nazivamo glifovima<br />
(glyph)<br />
Skupove glifova nazivamo fontovima (font)<br />
Korespodencija između karaktera i glifova ne mora biti<br />
jednoznačna<br />
Jedan glif može da predstavi više karaktera (ligature)<br />
Isti karakter može da se predstavlja različitim glifovima u<br />
zavisnosti od svoje pozicije u reči<br />
WGL4<br />
Windows uvodi skup karaktera pod imenom Windows<br />
Glyph List 4 (WGL4) koji sadrži preko 600 karaktera koji<br />
se koriste u evropskim jezicima<br />
- 25 -
Za razliku od tradicionalnih fontova koji u sebi sadže<br />
glifove za karaktere jedne kodne strane, TrueType<br />
fontovi koji podržavaju WGL4 standard sadrže glifove za<br />
sve evropske karaktere<br />
- 26 -
PREDSTAVLjANjE SLIKA<br />
BOJE<br />
Postoje dva osnovna modela predstavljanja boja<br />
• dodavanjem boja<br />
• oduzimanjem boja<br />
PROPUŠTANjE SVETLOSTI (EKSP.)<br />
Između izvora bele svetlosti i belog papira postavljamo<br />
obojena stakla<br />
• žuto staklo propušta žutu svetlost<br />
• crveno propušta crvenu<br />
• ako žutu svetlost propustimo kroz crveno staklo, prolazi<br />
crvena svetlost<br />
• ako crvenu svetlost propustimo kroz žuto staklo, prolazi<br />
crvena svetlost<br />
• zaključujemo da je crvena svetlost komponenta žute<br />
svetlosti<br />
- 27 -
ADITIVNI MODEL BOJA<br />
Uočavaju se tri osnovne obojene komponente bele<br />
svetlosti:<br />
• crvena<br />
• zelena<br />
• plava<br />
Sve ostale obojene svetlosti mogu se dobiti kombinacijom<br />
prethodnih u različitim intenzitetima<br />
Model se obično naziva RGB<br />
PRIMENE ADITIVNOG MODELA<br />
Aditivni model se prirodno primenjuje kada se boje grade<br />
dodavanjem komponenti svetlosti<br />
• monitori<br />
• projektori<br />
Nije idealan u slučajevima kada se boja dobija na drugi<br />
način<br />
PRIMER MODELA RGB<br />
- 28 -
- 29 -
ODUZIMANjE BOJA<br />
U eksperimentu staklo neke komponente svetlosti<br />
propušta, a ostale zadržava<br />
Ako za osnovne boje uzimamo one koje prolaze kada se<br />
zadržavaju osnovne komponente svetlosti, dobijaju se<br />
• žuta (zadržana je plava)<br />
• plavozelena (zadržana je crvena)<br />
• ružičasta (zadržana je zelena)<br />
• crna (zadržana je bela)<br />
Model se obično naziva CMYK<br />
CMYK<br />
PRIMENE SUBTRAKTIVNOG MODELA<br />
Subtraktivni model se prirodno primenjuje kada se boje<br />
grade odbijanjem svetlosti, tj. zadržavanjem komponenti<br />
• slikanje<br />
• štampanje<br />
• uopšte, nanošenje bojenih materija na posmatranu površinu<br />
- 30 -
DRUGI MODELA BOJA<br />
Često se primenjuje model HSB<br />
• H (hue) – ton<br />
• S (saturation) – zasićenost<br />
• B (brightness) – osvetljenost<br />
H – TON<br />
H - Ton se opisuje na krugu od 360 o<br />
• 0 – crvena<br />
• 60 – žuta<br />
• 120 – zelena<br />
• 180 – plavozelena<br />
• 240 – plava<br />
• 300 - ružičasta<br />
S – ZASIĆENOST<br />
S - Zasićenost predstavlja intezitet boje, tj. odnosi se na<br />
dominaciju nijanse u boji, takoreći zasićenost - odnos<br />
čiste boje i bezbojne sive. Opisuje se sa 0-100%<br />
• 0% – siva boja<br />
• 100% - čista jarka boja<br />
B – OSVETLjENOST<br />
B – Osvetljenost govori koliko će boja biti tamna ili<br />
svetla tj. koliki je intezitet osvetljenja. Opisuje se sa 0-<br />
100%<br />
• 0% - crna<br />
• 100% - čista svetla boja<br />
- 31 -
PRIMER MODELA HSB (1)<br />
ČISTA SVETLA BOJA B=100%<br />
- 32 -
PRIMER MODELA HSB (2)<br />
JARKA SVETLA BOJA S=100%<br />
PRIMER MODELA HSB (3)<br />
CRVENA BOJA H=0<br />
- 33 -
PREVOĐENjE RGB U HSB<br />
Zadatak je prevesti komponente zadate u RGB modelu<br />
kao (R, G, B) u HSB model<br />
Vrednosti komponenti R, G i B se dodele promenljivima<br />
B 1 , B 2 i B 3 tako da važi B 1 ≥B 2 ≥B 3<br />
H - Ton određuje odnos dve najizraženije RGB<br />
komponente B 1 i B 2 :<br />
otklon = H 0 = 60 * (B 2 -B 3 ) / (B 1 -B 3 )<br />
H = vrednost tona za najizraženiju komponentu +<br />
otklon,<br />
pri čemu se znak otklona bira na osnovu<br />
vrednosti srednje izražene komponente<br />
<br />
<br />
S - Zasićenost određuju najintenzivnija i najslabija RGB<br />
komponenta:<br />
S = (B 1 -B 3 ) / B 1<br />
B - Osvetljenost određuje najintenzivnija komponenta<br />
RGB:<br />
B = B 1 / raspon [raspon = 256]<br />
- 34 -
PRIMER RGB – HSB<br />
RGB = (200,100,175)<br />
-> B 1 = 200, B 2 = 175, B 3 = 100<br />
H 0 = 60 * 75 / 100 = 45<br />
H(R) = 0 = 360 - vrednost tona za najizraženiju<br />
komponentu<br />
H(B) = 240 - vrednosti tona srednje izražene komponente<br />
Najkraće rastojanje je od 360 ◦ prema 240 ◦ , obilaskom kruga<br />
suprotno od kazaljke na satu, pa se prema tome vrednost<br />
otklona oduzima.<br />
H = H(R) – H0 = 315<br />
S = 100 / 200 = 50%<br />
B = 200 / 256 = 78.125%<br />
PREDSTAVLjANjE SLIKE<br />
Slika se u digitalnim sistemima predstavlja matricom<br />
tačaka – piksela<br />
Parametri predstavljanja su<br />
• rezolucija<br />
• dinamički raspon<br />
REZOLUCIJA<br />
Rezolucija je mera preciznosti predstavljanja<br />
• relativna rezolucija je broj piksela po jedinici dužine<br />
(obično po inču)<br />
• apsolutna rezolucija je veličina matrice mereno brojem<br />
piksela<br />
- 35 -
DINAMIČKI RASPON<br />
Dinamički raspon određuje preciznost predstavljanja<br />
pojedinačnih piksela<br />
Izražava se brojem različitih podržanih nijansi svake<br />
hromatske komponente svetlosti<br />
• dinamički raspon monohromatskog piksela meri se brojem<br />
nijansi sive<br />
• dinamički raspon piksela u boji meri se brojem nijansi svake<br />
od komponenti<br />
OSETLjIVOST LjUDSKOG OKA<br />
Ljudsko oko je u stanju da raspozna oko 350 000 boja<br />
• nešto je osetljivije prema nijansama zelene boje<br />
DINAMIČKI RASPON – RGB<br />
Uobičajeni modeli pri prikazivanju su<br />
• 12 bita (4096 nijansi) – po 4 bita (16 nijansi) za svaku<br />
osnovnu komponentu<br />
• 15 bita (32768) – po 5 bita (32)<br />
• 16 bita (65536) – po 5 bita (32) za crvenu i plavu i 6 bita<br />
(64) za zelenu<br />
• 24 bita (16777216) – po 8 bita (256)<br />
Broj boja zavisi od broja bita kojom se predstavlja boja. 24-bitna<br />
paleta tzv. true color, proizvodi 10.000.000 boja koje ljudsko oko<br />
može da uoči.<br />
- 36 -
DINAMIČKI RASPON – RGB (2)<br />
Uobičajeni modeli pri obradi su<br />
• 30 bita – po 10 bita (1024)<br />
• 36 bita – po 12 bita (4096)<br />
• 48 bita – po 16 bita (65536)<br />
Smisao ovih formata je u očuvanju kvaliteta pri obradi<br />
slika<br />
• Normalno ljudsko oko ne može razlikovati ove zapise od 24-<br />
bitnog<br />
ZAPISIVANjE SLIKE<br />
Zapis slike se obično sastoji od<br />
• zaglavlja – podataka koji opisuju<br />
<br />
širinu<br />
<br />
visinu<br />
<br />
dinamički raspon<br />
<br />
detalje zapisa sadržaja slike<br />
• sadržaja slike<br />
VELIČINA ZAPISA SLIKE<br />
Bez kompresije za sliku je potrebno: S*V*B/8 bajtova,<br />
gde je<br />
• S – širina slike u pikselima<br />
• V – visina slike u pikselima<br />
• B – broj bitova kojima se opisuje svaki piksel<br />
• Pored toga, potreban je i određen prostor za zaglavlje<br />
Na primer<br />
• 1024 x 768 x 16 / 8 = 1.5 MB<br />
• 1600 x 1200 x 24 / 8 = 5.5 MB<br />
Pri pripremi za štampu, veličina slike se procenjuje kao:<br />
S*V*R*R*B / 8<br />
• S – širina slike u cm (inch)<br />
• V – visina slike u cm (inch)<br />
- 37 -
• B – broj bitova kojima se opisuje svaki piksel<br />
• R – rezolucija slike u broju piksela/cm (inch)<br />
Uobičajene rezolucije slika<br />
• za prikaz na ekranu:<br />
• 75 – 150 ppi (piksela po inču), oko 30 – 60 ppcm<br />
• za štampu<br />
• 100 – 600 ppi, oko 40 – 240 ppcm<br />
Na primer<br />
• 13cm * 10cm * 30ppcm * 30ppcm * 24b / 8 = 343 KB<br />
• 28cm * 20cm * 120ppcm * 120ppcm * 24b / 8 = 23 MB<br />
KOMPRESIJA SLIKE<br />
Kompresiji slika se pristupa iz više razloga, a pre svega<br />
zbog<br />
• smanjenja zauzeća prostora<br />
• olakšavanja komunikacije<br />
<br />
smanjivanja opterećenja komunikacionih linija<br />
skraćivanje trajanja prenosa podataka<br />
<br />
METODI KOMPRESIJE<br />
Metodi kompresije se dele na dve osnovne kategorije<br />
• metodi kompresije bez gubitka informacija<br />
• metodi kompresije sa gubitkom informacija<br />
KOMPRESIJA BEZ GUBITKA<br />
Obično počivaju na opštim algoritmima za kompresiju<br />
podataka<br />
• najbolje rezultate daju ako slike imaju veće površine koje<br />
su jednobojne ili popunjene nekim jednostavnim uzorcima<br />
linijski crteži, ilustracije, stripovi, uzorci ekrana,...<br />
<br />
• nisu efikasni u slučaju slika sa puno prelaza tonova:<br />
<br />
fotografije, intenzivno šarene slike<br />
- 38 -
Neki od formata za zapisivanje slika:<br />
• BMP<br />
• GIF<br />
• TIF<br />
• PNG<br />
- 39 -
KOMPRESIJA SA GUBITKOM<br />
Počivaju na specifičnim algoritmima koji su projektovani<br />
upravo za rad sa slikama<br />
Opisuju delove slike nekim matematičkim modelom sa<br />
izabranom preciznošću aproksimacije<br />
Preciznost aproksimacije se obično može konfigurisati<br />
• veća preciznost – manja kompresija<br />
• manja preciznost – veća kompresija<br />
MODEL KOMPRESIJE SA GUBITKOM<br />
Koristi se činjenica da oko raspoznaje<br />
• oko 128 tonova<br />
• 16 (žuta) do 23 (crvena) zasićenosti<br />
• oko 128 nivoa osvetljenosti<br />
Pri kompresiji je važnije očuvati ton i osvetljenost nego<br />
zasićenost<br />
Zato se često primenjuje model boja čije komponente<br />
kvalitativno opisuju svetlost:<br />
• HSB, YUV, HLS,...<br />
- 40 -
MNOŽENjE I DELjENjE<br />
MNOŽENjE NEOZNAČENIH BROJEVA<br />
Proizvod se formira kao zbir delimičnih proizvoda<br />
Ako je cifra množioca 1, delimični proizvod je jednak<br />
množeniku, a ako je 0, onda je i delimični proizvod 0<br />
Počinje se od cifre najmanje težine<br />
Svaki sledeći delimični proizvod se pomera za po jedno<br />
mesto ulevo<br />
PRIMER<br />
14 x 9 (množenik x množilac)<br />
00001110 x 00001001<br />
00001110<br />
00000000<br />
00000000<br />
00001110<br />
00000000<br />
00000000<br />
00000000<br />
_00000000________<br />
0000000001111110<br />
POBOLjŠANjE IMPLEMENTACIJE OVOG ALGORITMA<br />
Sabiranje može da se vrši odmah po izračunavanju svakog<br />
od delimičnih proizvoda formiranjem međuzbira.<br />
Početna vrednost međuzbira = prvom delimičnom<br />
proizvodu.<br />
Svaki naredni delimični proizvod se pomera za jedno<br />
mesto ulevo u odnosu na prethodno formirani delimični<br />
proizvod i sabira sa međuzbirom.<br />
- 41 -
Dobijeni zbir je novi međuzbir.<br />
Na taj način se štedi na prostoru i broju angažovanih<br />
registara pri sabiranju.<br />
HARDVERSKI ALGORITAM<br />
Hardverski se ovaj algoritam implementira preko<br />
SERIJSKOG MNOŽIOCA koji koristi 3 registra A, M i P i<br />
jednobitni registar C koji sadrži prenos pri sabiranju.<br />
Registri A, P i M i jednobitni C<br />
Algoritam:<br />
• M = množenik, P = množilac, A = 0, C = 0<br />
• U svakom koraku množenja bit množioca na mestu najmanje<br />
težine P 0<br />
određuje da li će u tom koraku množenik biti sabran sa<br />
tekućom vrednošću proizvoda.<br />
• Ponavljamo n puta (sve dok se ne obrade svi bitovi u<br />
množiocu)<br />
<br />
<br />
Ako je P 0<br />
1, A = A + M<br />
C, A, P logički pomeramo udesno (početni bitovi se pune 0) pri<br />
čemu se sva tri posmatraju kao 1 registar<br />
• Rezultat je upisan u AP<br />
Ovakav način primene algoritma nije dobar ako je bilo<br />
koji od činilaca negativan.<br />
U slučaju negativnog broja vodeća jedinica u potpunom<br />
komplementu predstavlja znak koji je uzrok nekorektnog<br />
rezultata:<br />
• Ako je množenik negativan sabiranje znaka je nekorektno.<br />
• Ako je množilac negativan tada pomeranje ulevo ne daje<br />
korektnu vrednost zbog zapisa broja u potpunom komplementu.<br />
Zato se koristi Butov algoritam.<br />
- 42 -
BUTOV ALGORITAM<br />
Registri A, M, P i jednobitni P’<br />
M=množenik, P=množilac, A=0, P’=0<br />
Ponavljamo n puta:<br />
• ako je P 0<br />
P’=01 onda A=A+M<br />
• ako je P 0<br />
P’=10 onda A=A-M<br />
• APP’ se aritmetički pomera udesno (početni bitovi se pune<br />
vrednošću najvišeg bita iz APP’)<br />
Rezultat je upisan u AP posmatrane kao 1 registar.<br />
DELjENjE NEOZNAČENIH BROJEVA<br />
Registri A, M, P<br />
M=delilac, P=deljenik, A=0<br />
Ponavljamo n puta:<br />
• AP pomeramo aritmetički ulevo<br />
• A = A-M<br />
• ako je A>=0 onda P 0<br />
=1<br />
• ako je A
Na kraju je količnik u P a ostatak u A<br />
- 44 -
BCD<br />
PRIMER<br />
Prevesti dekadni broj 0,4 u binarni sistem:<br />
0 1 2 3 4 5 6 7 8 9<br />
0,4 0,8 0,6 0,2 0,4 0,8 0,6 0,2 0,4 0,8<br />
0 0 1 1 0 0 1 1 0 0<br />
Dobijeni prevod je periodičan razlomljeni broj:<br />
(0,4) 10 ≈(0,011001100...) 2<br />
BINARNI KODOVI DEKADNIH CIFARA<br />
Zbog problema sa preciznim predstavljanjem dekadnih<br />
razlomljenih brojeva u binarnom sistemu pojavila se<br />
ideja o kodiranju pojedinačnih dekadnih cifara binarnim<br />
brojevima.<br />
NEKI BINARNI KODOVI DEKADNIH CIFARA<br />
Dekadna<br />
Binarni kod<br />
cifra 8421 2421 5421 753- 84- Višak Ciklični<br />
6 2-<br />
1<br />
3<br />
0 0000 0000 0000 0000 0000 0011 0001<br />
1 0001 0001 0001 1001 0111 0100 0101<br />
2 0010 0010 0010 0111 0110 0101 0111<br />
3 0011 0011 0011 0010 0101 0110 1111<br />
4 0100 0100 0100 1011 0100 0111 1110<br />
5 0101 1011 1000 0100 1011 1000 1100<br />
6 0110 1100 1001 1101 1010 1001 1000<br />
- 45 -
7 0111 1101 1010 1000 1001 1010 1001<br />
8 1000 1110 1011 0110 1000 1011 1011<br />
9 1001 1111 1100 1111 1111 1100 0011<br />
Kod je težinski ako se vrednost dekadne cifre u tom kodu<br />
dobija kao zbir proizvoda vrednosti binarnih cifara i<br />
vrednosti pozicija na kojima se one nalaze.<br />
Navedeni kodovi, osim kodova višak 3 i cikličnog, su<br />
težinski kodovi. Cifre u imenima kodova označavaju<br />
“težine” pozicija.<br />
Na primer, u kodu 84-2-1 kod 1011 je kod cifre 5<br />
(1*8+1*(-2)+1*(-1)=8-2-1).<br />
Od navedenih kodova komplementarni su kodovi 2421,<br />
753-6, 84-2-1 i višak 3.<br />
Osobina cikličnog koda je da se pri prelasku na narednu<br />
cifru menja samo jedna binarna cifra.<br />
NEOZNAČENI BINARNO KODIRANI DEKADNI BROJEVI<br />
Binarno kodirani zapis neoznačenog dekadnog broja u<br />
nekom kodu se dobija tako što se binarno kodira u<br />
odgovarajućem kodu svaka od njegovih cifara.<br />
PRIMERI<br />
Broj 5384 možemo zapisati u različitim kodovima na<br />
sledeći način:<br />
0101 0011 1000 0100 (8421)<br />
1000 0110 1011 0111 (Višak 3)<br />
1011 0101 1000 0100 (84-2-1)<br />
- 46 -
OZNAČENI BINARNO KODIRANI DEKADNI BROJEVI<br />
Označeni binarno kodirani dekadni brojevi se zapisuju na<br />
dva načina:<br />
• Znak i apsolutna vrednost. Vrednost cifre za znak broja<br />
mogu da budu proizvoljne i zavise od konkretne implementacije<br />
na računaru.<br />
• U potpunom komplementu pri čemu se prvo nađe potpuni<br />
komplement broja u sistemu sa osnovom 10, pa se zatim izvrši<br />
kodiranje.<br />
NEPAKOVANI ZAPIS<br />
Binarno kodirani dekadni brojevi se mogu koristiti kako za<br />
zapis brojeva, tako i za zapis znakova. Iz tog zahteva<br />
proističu neke specifičnosti zapisa brojeva.<br />
Kod računara koji koriste ASCII kod u nepakovanom zapisu<br />
broja se u polubajt veće težine upisuje cifra 5 koja<br />
označava da je u bajtu zapisana cifra, a u polubajtu<br />
manje težine se zapisuje BCD zapis cifre u<br />
odgovarajućem kodu.<br />
BCD brojevi se u računaru obično zapisuju u obliku znak i<br />
apsolutna vrednost.<br />
Znak se zapisuje u polubajtu veće težine (umesto cifre 5)<br />
poslednjeg bajta i to kao binarno zapisana heksadekadna<br />
cifra A za pozitivne brojeve, a B za negativne.<br />
PRIMER<br />
+896312 → 58 59 56 53 51 A2<br />
-896312 → 58 59 56 53 51 B2<br />
- 47 -
PAKOVANI ZAPIS<br />
Ukoliko se koriste samo brojčani podaci dolazi do<br />
nepotrebnog trošenja prostora, jer se ponavlja vrednost<br />
5 u svakom polubajtu veće težine, osim kod poslednjeg<br />
bajta.<br />
Zato se uvodi pakovani zapis BCD brojeva.<br />
Kod pakovanog zapisa se u svakom polubajtu, osim u<br />
poslednjem, čuva neka cifra broja.<br />
U poslednjem polubajtu zapisa, čuva se znak broja prema<br />
prethodnom dogovoru.<br />
Pošto se koristi ceo broj bajtova, u slučaju zapisa broja<br />
sa parnim brojem cifara u vodeći polubajt se upisuje 0.<br />
PRIMERI<br />
+896312 → 08 96 31 2A<br />
-896312 → 08 96 31 2B<br />
+56421 → 56 42 1A<br />
-56421 → 56 42 1B<br />
DECIMALNA ARITMETIKA<br />
Nepakovani zapis brojeva se najčešće koristi pri ulaznoizlaznim<br />
operacijama za direktno unošenje brojeva(na<br />
primer, kada kucamo na tastaturi), dok se u aritmetičkim<br />
operacijama koristi pakovani zapis.<br />
Operacije sa BCD brojevima su sporije u odnosu na<br />
operacije sa binarnim brojevima zbog specifičnosti<br />
zapisa.<br />
- 48 -
PROMENA ZNAKA<br />
Pošto su BCD brojevi u računaru zapisani u obliku znak i<br />
aspolutna vrednost promena znaka je jednostavna. Samo<br />
se menja vrednost poslednjeg polubajta.<br />
SABIRANjE I ODUZIMANjE<br />
08 96 31 2A → 08 96 31 2B<br />
Pri sabiranju i oduzimanju važe opšta pravila sabiranja i<br />
oduzimanja celih brojeva u zapisu znak i apsolutna<br />
vrednost. To znači da se operacije nad označenim<br />
brojevima mogu svesti na operacije nad neoznačenim<br />
brojevima.<br />
Sabiranje BCD brojeva se vrši u dve faze.<br />
U prvoj fazi se BCD zapisi cifara sabiraka sabiraju kao<br />
neoznačeni celi četvorocifreni binarni brojevi. Ako se javi<br />
prekoračenje, ono se prenosi kao jedinica koja se dodaje<br />
zbiru narednih dekadnih cifara. Ovi prenosi se pamte<br />
zbog upotrebe u drugoj fazi.<br />
U drugoj fazi se vrše korekcije koje zavise od koda u<br />
kome smo predstavljali dekadne cifre.<br />
Oduzimanje se može izvršiti na dva načina:<br />
• Po sličnom principu kao i sabiranje, pri čemu se u obe faze<br />
umesto sabiranja vrši oduzimanje, i<br />
• Kao sabiranje u potpunom komplementu umanjenika sa<br />
umanjiocem kome je promenjen znak.<br />
(8-5=8+(-5))<br />
- 49 -
SABIRANjE U KODU 8421<br />
Prva faza je nezavisna od koda u kome su zapisane<br />
dekadne cifre.<br />
Neka je n maksimalan broj dekadnih cifara sabiraka.<br />
Neka su p’ i prenosi u prvoj fazi sabiranja sa dekadnog<br />
mesta i-1 na mesto i, a p’’ i odgovarajući prenosi u drugoj<br />
fazi. Važi p’ 0 =0 i p’’ 0 =0.<br />
Druga faza se sastoji iz n koraka u kojima se zdesna na<br />
levo grupama od po četiri binarne cifre rezultata prve<br />
faze dodaju korekcije i računa prenos za sledeći korak.<br />
U i-tom koraku radimo:<br />
• Neka je c 3<br />
c 2<br />
c 1<br />
c 0<br />
i-ta grupa od četiri binarne cifre gledano<br />
zdesna na levo<br />
• t i<br />
=c 3<br />
c 2<br />
c 1<br />
c 0<br />
+ p’’ i<br />
• Ako je p’ = 1 ili t i+1 i ≥ (1010) 2<br />
onda ovoj grupi cifara<br />
dodajemo korekciju (0110) 2<br />
i pri tome određujemo prenos p’’ i+1<br />
.<br />
Ako je p’ n =1 ili p’’ n =1 došlo je do prekoračenja.<br />
ZAŠTO JE KOREKCIJA 0110?<br />
p’ i+1 = 1 znači da je postojao prenos između dekadnih<br />
cifarskih mesta u prvoj fazi sabiranja. Vrednost binarnog<br />
prenosa sa cifarskog mesta i na mesto i+1 je 16 10 , dok je<br />
vrednost dekadnog prenosa između ove dve pozicije 10 10 ,<br />
pa zbog toga treba dodati razliku 16 – 10 10 10 = 6 10 =<br />
0110 2 .<br />
t i ≥ (1010) 2 Pošto je dobijena vrednost veća od koda<br />
najveće dekadne cifre, mora da usledi prenos na naredno<br />
dekadno cifarsko mesto i+1. Slično kao u prethodnom<br />
slučaju treba dodati razliku 0110 2 .<br />
- 50 -
PRIMER<br />
X= -23492 Y=-5189 X+Y=-28681<br />
23 49 2B + 05 18 9B = 28 68 1B<br />
-X 0010 0011 0100 1001 0010<br />
-Y 0000 0101 0001 1000 1001<br />
p’ 0 0 0 1 0 0<br />
S 1 0010 1000 0110 0001 1011<br />
p’’ 0 0 0 0 1 0<br />
k 0000 0000 0000 0110 0110<br />
-S 0010 1000 0110 1000 0001<br />
=> S=-28681<br />
ODUZIMANjE U KODU 8421<br />
U prvoj fazi se BCD zapisi cifara umanjenika i umanjioca<br />
oduzimaju kao neoznačeni celi četvorocifreni binarni<br />
brojevi. Ako se javi potreba za pozajmicom, ona se<br />
prenosi kao jedinica koja se oduzima od razlike narednih<br />
dekadnih cifara. Ove pozajmice se pamte zbog upotrebe<br />
u drugoj fazi i označavaju se sa p’ i .<br />
U drugoj fazi se zdesna nalevo posmatraju po četiri<br />
binarne cifre c 3 c 2 c 1 c 0 rezultata prve faze i od njih se<br />
oduzima (0110) 2 ako važi p’ i+1 = 1.<br />
PRIMER<br />
X=-52629 Y=2634 X+Y=-49995<br />
52 62 9B + 02 63 4A = 49 99 5B<br />
-X 0101 0010 0110 0010 1001<br />
Y 0000 0010 0110 0011 0100<br />
p 0 1 1 1 0 0<br />
S 1 0100 1111 1111 1111 0101<br />
K 0000 0110 0110 0110 0000<br />
-S 0100 1001 1001 1001 0101<br />
- 51 -
SABIRANjE U KODU VIŠAK 3<br />
Neka važe oznake koje smo koristili za kod 8421.<br />
I u kodu višak 3 se druga faza izvodi u n koraka gde se u<br />
svakom koraku zdesna na levo dodaju korekcije grupama<br />
od po četiri binarne cifre rezulata prve faze.<br />
U i-tom koraku radimo:<br />
• Neka je c 3<br />
c 2<br />
c 1<br />
c 0<br />
i-ta grupa od četiri binarne cifre gledano<br />
zdesna na levo<br />
• Ako je p’ i+1<br />
= 1 onda ovoj grupi cifara dodajemo korekciju<br />
(0011) 2<br />
• Ako je p’ i+1<br />
= 0 onda se ovoj grupi cifara dodaje korekcija<br />
(1101) 2<br />
Do prekoračenja je došlo ako je p’ n =1.<br />
KOREKCIJE?<br />
p’ i+1 = 1 Pošto je postojao prenos između dekadnih<br />
cifarskih mesta u prvoj fazi sabiranja, vrednost binarnog<br />
prenosa sa cifarskog mesta i na mesto i+1 je 16 10 , dok je<br />
vrednost dekadnog prenosa između ove dve pozicije 10 10 .<br />
Time je na poziciji i anuliran višak 3 od obe dekadne<br />
cifre, i da bi rezultat bio korektan treba dodati<br />
3 10 =(0011) 2 .<br />
p’ i+1 = 0 Prenos sa ove pozicije na narednu ne postoji<br />
tako da je akumuliran višak 6 u odnosu na prirodni kod,<br />
tako da zbog toga treba oduzeti 3 da bi se dobila<br />
korektna vrednost. Umesto oduzimanja može da se<br />
primeni sabiranje u potpunom komplementu:<br />
(-3) 10 =(10011) 2 =(01101) pk .<br />
- 52 -
PRIMER<br />
X=28367 Y=2847 X+Y=31214<br />
28 36 7A + 02 84 7A = 31 21 4A<br />
X 0101 1011 0110 1001 1010<br />
Y 0011 0101 1011 0111 1010<br />
p’ 0 1 1 1 1 0<br />
S 1 1001 0001 0010 0001 0100<br />
K 1101 0011 0011 0011 0011<br />
S 0110 0100 0101 0100 0111<br />
ODUZIMANjE U KODU VIŠAK 3<br />
Pošto je kod višak 3 komplementaran određivanje<br />
potpunog komplementa broja zapisanog u ovom kodu se<br />
jednostavno vrši komplementiranjem datog zapisa.<br />
Zato se oduzimanje najjednostavnije vrši kao sabiranje u<br />
potpunom komplementu umanjenika sa umanjiocem<br />
kome je promenjen znak.<br />
- 53 -
PRIMER<br />
X=5836 Y=8586 X-Y=-2750<br />
X-Y = -(Y-X)<br />
– (08 58 6A – 05 83 6A) = -02 75 0A = 02 75 0B<br />
P.K. X=05836 Y=08586<br />
-X 94164<br />
-X 1100 0111 0100 1001 0111<br />
Y 0011 1011 1000 1011 1001<br />
-X 1100 0111 0100 1001 0111<br />
p’ 1 0 1 1 0<br />
S 1 0000 0010 1101 0101 0000<br />
k 0011 0011 1101 0011 0011<br />
S 0011 0101 1010 1000 0011<br />
Y-X = 02750<br />
X-Y = -02750 = 02750B<br />
Iako je p 5 ’=1,na osnovu pravila za sabiranje u potpunom<br />
komplementu ne dolazi do prekoračenja.<br />
- 54 -
DIGITALIZACIJA<br />
SIGNALI<br />
Vrlo često se javlja potreba da se zabeleže određeni<br />
signali koji se javljaju u prirodi.<br />
Najčešći primeri signala su svakako zvuk i slika, ali i drugi<br />
primeri se mogu lako naći (ekg signali, ultrazvuk,<br />
raznorazna zračenja, itd...)<br />
DIGITALIZACIJA<br />
Signali koje srećemo u prirodi se obično javljaju u<br />
kontinualnoj formi što znači da se menjaju neprekidno<br />
tokom vremena i/ili prostora.<br />
Nasuprot kontinualnoj (neprekidnoj) prirodi signala,<br />
digitalna tehnologija podrazumeva diskretnost<br />
(isprekidanost) zapisa.<br />
ANALOGNA TEHNOLOGIJA<br />
Primenom analognih tehnologija se pravi kontinualni<br />
zapis nekog signala na medijumu.<br />
Npr. gramofonska ploča ima oblik dugačke spirale. Kada<br />
bi se pogledao oblik udubljenja i ispupčenja zabeleženih<br />
na njoj, dobilo bi se grafik koji veoma podseća na grafik<br />
zvučnog signala koji je bio sniman.<br />
Grafik raporeda namagnetisanja na magnetnoj traci<br />
takođe treba da odgovara vremenskom rasporedu zvuka<br />
koji je snimljen.<br />
- 55 -
ANALOGNA TEHNOLOGIJA – PREDNOSTI<br />
Ulaganja koja su potrebna da bi se dobio zapis analognog<br />
signala su veoma mala, ukoliko se zadovoljimo relativno<br />
niskim kvalitetom.<br />
Tehnološki, još su stari Grci mogli da prave jednostavni<br />
gramofon, uz pomoć jednostavne igle prikačene na<br />
trepereću membranu.<br />
ANALOGNA TEHNOLOGIJA – PROBLEMI<br />
Osnovni problem analogne tehnologije je to što je jako<br />
teško na medijumu napraviti skoro identičnu kopiju<br />
posmatranog signala.<br />
Drugi problem je nestalnost medijuma tj. njegova<br />
promenjivost tokom vremena i osetljivost na spoljašnje<br />
uticaje, što dovodi do postepenog opadanja kvaliteta<br />
zapisa.<br />
Zbog toga se za pravljenje visoko kvalitetnog analognog<br />
zapisa mora uložiti izuzetno puno truda i novca<br />
• proizvodnja nosača zapisa je veoma skupa<br />
• pravljenje zapisa je veoma skupo<br />
I pored svega, pravljenje medijuma koji će apsolutno<br />
identično zabležiti signal i koji će zadržati svoje<br />
karakteristike večno, i u svim spoljašnjim uslovima je<br />
nemoguće.<br />
Svaka obrada ovako zapisanih signala je izuzetno<br />
komlikovana i takođe zahteva velika ulaganja<br />
Reprodukcija (upotreba) takvih zapisa u vernom obliku je<br />
veoma skupa<br />
- 56 -
DIGITALNA TEHNOLOGIJA – KONCEPT<br />
Osnovna ideja digitalne tehnologije je zapisivanje signala<br />
kao niza brojeva koji predstavljaju njegove vrednosti<br />
izmerene u diskretnim tačkama (diskretnim vremenskim<br />
trenucima, odnosno na diskretnoj mreži tačaka prostora)<br />
DIGITALNA TEHNOLOGIJA<br />
Ukoliko je poznat izgled signala na zadatoj mreži moguće<br />
je rekonstruisati njegov izgled i u ostalim delovima<br />
vremena tj. prostora.<br />
Postupak merenja i zapisivanja vrednosti signala se često<br />
naziva sempliranje.<br />
Postavlja se pitanje koliko je često potrebno meriti i<br />
zapisivati vrednost signala.<br />
NYQUIST-OVA TEOREMA<br />
Čuvena Nyquist-ova teorema daje odgovor na ovo pitanje<br />
Da bi signal mogao da se verno rekonstruiše potrebno<br />
je meriti ga dva puta češće od njegove najveće<br />
frekvencije<br />
Npr. čovekovo uho čuje frekvencije do nekih 20kHz. Zbog<br />
toga je zvuk u principu dovoljno semplirati nekih 40000<br />
puta u sekundi.<br />
- 57 -
DIGITALNA TEHNOLOGIJA – SIMULACIJA NA<br />
ANALOGNIM UREĐAJIMA<br />
U prirodi su sve pojave suštinski analogne<br />
Digitalna tehnologija se zbog toga primenjuje (i<br />
modelira) na uređajima koji su u osnovi analogni.<br />
• Npr. iako su današnji računari digitalni i smatra se da jedna<br />
memorijska ćelija sadrži samo vrednosti 0 ili 1, stvarna vrednost<br />
napona u toj ćeliji može da varira u nekom opsegu (recimo od 0<br />
do 5V). Postavljanjem praga na nekih 2.5V, mi pomoću analognog<br />
uređaja simuliramo digitalno ponašanje<br />
DIGITALNA TEHNOLOGIJA – PROBLEMI<br />
Početna tehnološka ulaganja da bi se uopšte stiglo do iole<br />
upotrebljivog zapisa su jako velika:<br />
• Npr. veoma je teško napraviti uređaj koji dovoljno često<br />
meri i zapisuje vrednost zvučnog signala<br />
• prostor za zapisivanje 1 sekunde je 44000 brojeva što<br />
predstavlja skoro jednu celu papirnu svesku<br />
Ovo je razlog zašto se digitalna tehnologija javila<br />
istorijski prilično kasno<br />
Jako je teško bilo stići do tako gustog zapisa koji<br />
omogućuje zapis par stotina megabajta na površini dlana<br />
šake<br />
DIGITALNA TEHNOLOGIJA – PREDNOSTI<br />
Međutim, kada je početni tehnološki prag dostignut<br />
prednosti su postale skoro neverovatne.<br />
Inherentna kvarljivost medijuma, koja je predstavljala<br />
najveći problem analogne tehnologije, odjednom je<br />
postala nebitna.<br />
Npr. ne možemo se osloboditi činjenice da papir<br />
vremenom žuti i da se kvalitet zapisa na njemu gubi.<br />
- 58 -
Ukoliko se radi o običnoj analognoj fotografiji, to se<br />
javlja kao problem.<br />
Međutim ukoliko je na tom papiru zapisan niz brojeva<br />
koji opisuje piksele iste te fotografije, nimalo<br />
informacije se ne gubi sve dok je moguće uopšte pročitati<br />
o kojim je brojevima reč.<br />
Moguće je pravljenje identičnih kopija što opet nije<br />
moguće bilo kod analogne tehnologije.<br />
• Npr. ukoliko fotokopiramo fotografiju dobijamo gubitak<br />
kvaliteta. Ukoliko fotokopiramo papir na kome su zapisani brojevi<br />
koji opisuju fotografiju nimalo informacije ne gubimo.<br />
Mogućnost pravljenja identičnih kopija praktično<br />
omogućava večno trajanje zapisa<br />
Obrada zapisa postaje jednostavna i vrši se isključivo<br />
primenom matematičkih formula na brojeve<br />
• Npr. obrada digitalnih slika ili zvuka<br />
- 59 -
ZVUČNI SIGNALI<br />
PREDSTAVLjANjE ZVUKA<br />
Zvučni signal predstavlja promenu pritiska vazduha kroz<br />
vreme.<br />
Ilustracija ovoga je moguća npr. pomoću programa Sound<br />
Recorder.<br />
AMPLITUDA<br />
Razliku između maksimalne i minimalne vrednosti<br />
nazivamo amplitudom.<br />
Amplituda se meri u decibelima (dB). (Decibel je mera<br />
za jačinu zvuka, ali amplituda i jačina su direktno<br />
povezana pa se amplituda takođe meri u decibelima.)<br />
Što je amplituda zvučnog signala veća, zvuk je glasniji.<br />
FREKVENCIJA<br />
Broj promena signala, npr. od svoje najveće vrednosti do<br />
najmanje i nazad u jednoj sekundi nazivamo<br />
frekvencijom zvuka. Frekvencija se meri u Hercima<br />
(1Hz= jedna promena u sekundi).<br />
Što brže zvučni signal menja svoju vrednost to nam se<br />
zvuk čini piskaviji.<br />
- 60 -
ČUJNI RASPON<br />
U proseku, ljudsko uho može da čuje zvukove čija je<br />
frekvencija između 5Hz i 20 kHz, međutim precizni<br />
raspon je osobina svakog pojedinca. U principu, već<br />
frekvencije iznad 10kHz većina ljudi veoma loše čuje.<br />
Jačina zvuka koju ljudsko uho može da registruje se<br />
kreće od skoro 0dB (prag šuma) do 120dB (prag bola).<br />
DIGITALIZACIJA ZVUKA<br />
Prema Nyqist-ovoj teoremi, prilikom digitalizacije je<br />
dovoljno uzimati uzorke vrednosti zvučnog signala<br />
(semplirati) dva puta češće od njegove najveće<br />
frekvencije.<br />
Za verno zapisivanje frekvencija do 20kHz potrebno je da<br />
frekvencija uzoraka bude 40kHz<br />
UOBIČAJENE FREKVENCIJE UZORAKA<br />
Opšte prihvaćen CD audio standard se zasniva na<br />
učestalosti uzoraka od 44.1kHz.<br />
DAT kasete, poznate muzičkim profesionalcima koriste<br />
učestalost od 48kHz.<br />
Većina zvukova u video igrama je sa uzorcima na 11 ili<br />
22 kHz.<br />
- 61 -
DUBINA ZVUKA (DINAMIČKI RASPON)<br />
Ranije se za digitalizaciju koristilo 8 bitova (jedan bajt).<br />
8 bitova omogućuje zapisivanje 256 nivoa jačine zvuka.<br />
Sa time se može kvalitetno pokriti 48dB.<br />
Danas je uobičajeno da se za zapis svakog uzorka koristi<br />
16 bitova (dva bajta).<br />
Ovo omogućuje zapisivanje 65536 nivoa jačine zvuka, što<br />
daje dinamički raspon od oko 96dB, što se smatra<br />
prilično zadovoljavajućim.<br />
MONO I STEREO ZVUCI<br />
Da bi se bolje dočarao prostorni raspored zvuka, koristi<br />
se stereo tehnika.<br />
Uzimanje uzoraka u mono tehnici se vrši pomoću jednog<br />
mikrofona.<br />
Za digitalizaciju stereo zvuka potrebno je najmanje 2<br />
mikrofona (dva kanala).<br />
NEKOMPRIMOVANI ZAPIS ZVUKA<br />
Neposrednim zapisivanjem niza brojeva dobijenih<br />
digitalizacijom zvuka dobijamo tzv. sirovi zapis (PCM –<br />
Pulse Code Modulation).<br />
Za sirovi zapis jednog minuta zvuka u stereo tehnici,<br />
potrebno je:<br />
60sekundi * 44100 * 2 bajta * 2 kanala = 10,5 Mb<br />
1 minut frekvencija uzorka za zapis svakog uzorka stereo<br />
zvuka (sample rate) se koriste 2 bajta tehnika<br />
- 62 -
RIFF FORMATI<br />
RIFF je grupa formata za zapis mnogih tipova podataka,<br />
pre svega multimedijalnih (zvuka i videa).<br />
Najpoznatiji RIFF formati su WAVE, AVI, DIVX...<br />
PARČIĆI (CHUNKS)<br />
Svi RIFF formati se sastoje od parčića (chunks).<br />
Svako parče ima svoj<br />
• tip, koji se zapisuje pomoću 4 karaktera<br />
• za čim slede 4 bajta koji označavaju veličinu parčeta i<br />
• zatim sam sadržaj.<br />
Sama RIFF datoteka je sama za sebe jedno parče čiji<br />
sadržaj počinje oznakom tipa RIFF datoteke, a zatim<br />
sledi niz drugih parčića.<br />
FORMAT RIFF DATOTEKE<br />
Adresa<br />
Sadržaj (hex)<br />
0000 'R', 'I', 'F', 'F'<br />
0004 Dužina datoteke – 32 bitni<br />
neoznačeni broj<br />
0008 Tip datoteke (4 karaktera)<br />
000C Tip prvog parčeta (4<br />
karaktera)<br />
0010 Dužina prvog parčeta<br />
0014 Sadržaj prvog parčeta<br />
...<br />
- 63 -
WAVE FORMAT<br />
WAVE spada u grupu RIFF formata i namenjen je<br />
isključivo za zapis zvuka.<br />
Zapis u WAVE formatu se sastoji od parčeta (chunk) sa<br />
oznakom “fmt” i parčeta sa oznakom “data”.<br />
WAVE format omogućava i nekoliko tipova kompresije,<br />
mada se najčešće koristi za zapis nekomprimovanog<br />
zvuka, tj. parče “data” sadrži PCM zapis.<br />
KANONSKI IZGLED WAV DATOTEKE<br />
Offset Sadržaj<br />
0 ‘R’ ‘I’ ‘F’ ‘F’ (oznaka datoteke)<br />
4 veličina datoteke<br />
8 ‘W’ ‘A’ ‘V’ ‘E’ (tip datoteke)<br />
12 ‘f’ ‘m’ ‘t’ ‘ ’ (tip parčeta)<br />
16 00 00 00 10 (veličina parčeta)<br />
20 Tip kompresije (1 PCM-nekompresovano)<br />
( sadržaj parčeta)<br />
22 Broj kanala (1 mono, 2 stereo)<br />
24 Sample rate – broj uzoraka po sekundi (najčešće<br />
44100)<br />
28 Broj bajtova u sekundi = Sample rate * Poravnanje<br />
32 Poravnanje = broj kanala * broj bajtova po uzorku<br />
34 Broj bitova po uzorku (8 ili 16)<br />
36 ‘d’ ‘a’ ‘t’ ‘a’<br />
40 dužina data bloka<br />
44 Zapis uzoraka<br />
- 64 -
KANONSKI ZAPIS WAV DATOTEKE<br />
Ukoliko se radi radi o<br />
• 8 bitnim uzorcima vrednosti se zapisuju kao neoznačeni<br />
brojevi<br />
• 16 bitnim uzorcima vrednosti se zapisuju u potpunom<br />
komplementu.<br />
Stereo (i drugi višekanalni zapisi) se zapisuju isprepletano<br />
(po uzorak za svaki kanal)<br />
KOMPRESIJA<br />
Jedan od problema sa WAV zapisom je, naravno, to što<br />
zauzima previše memorijskog prostora.<br />
Zbog toga se zvučni zapis obično komprimuje na neki<br />
način.<br />
PRISTUP PROBLEMU KOMPRIMOVANjA<br />
Pošto je zvuk signal koji se veoma nepredvidivo menja,<br />
većina algoritama kompresije koji se zasnivaju na<br />
ponavljanjima podataka (kao npr. algoritmi korišćeni u<br />
ARJ, ZIP) pokazuju loše rezultate.<br />
Zbog toga se pristupa primeni tzv. psihoakustičkih<br />
algoritama koji uglavnom spadaju u grupu Loosy<br />
algoritama.<br />
MASKIRANjE<br />
U toku dana ne vidimo zvezde. Razlog tome je to što je<br />
svetlost zvezda maskirana jakom svetlošću sunca.<br />
Većina algoritama za kompresiju zvuka se zasnivaju na<br />
sličnim osobinama ljudskog čula sluha.<br />
- 65 -
MASKIRANjE TIHIH ZVUKOVA<br />
Na primer, tih zvuk u blizini (u vremenu) mnogo glasnijeg<br />
se ne percipira, pa se na njegovo kodiranje ne isplati<br />
trošiti bajtove.<br />
Slično, ako u bliskom trenutku postoje zvuci bliske<br />
frekvencije, jači zvuk može da maskira drugi.<br />
Koji su zvuci dovoljno tihi? Ovaj podatak se najčešće<br />
dobija eksperimentima i to sa živim ljudima koji slušaju<br />
zvuke i daju svoj sud.<br />
LOKALNOST MASIRANjA<br />
Na primer:<br />
• Ukoliko imamo zvuk frekvencije 1000Hz i u njegovoj blizini<br />
zvuk od 1100Hz, ali 18 dB tiši, čovek prosečnog sluha neće čuti<br />
drugi zvuk.<br />
• Ako bi drugi zvuk bio frekvencije 2000Hz i iste glasnoće, on<br />
bi se čuo, zbog toga što je frekvencijski prilično udaljen od prvog.<br />
Pokazuje se da bi ovaj ton morao biti 45dB slabiji da bi bio<br />
nečujan.<br />
Zaključujemo da je maskiranje značajnije u slučaju<br />
bliskih frekvencija.<br />
MASKIRANjE JAKIH ZVUKOVA<br />
Posledica maskiranja je da je dopušteno podizanje nivoa<br />
šuma u blizini jakih zvukova.<br />
Zaključujemo da zbog većeg nivoa dopuštenog šuma nije<br />
potrebna visoka preciznost zapisa, pa se može<br />
upotrebljavati manje bitova za zapis.<br />
- 66 -
PRE I POST MASKIRANjE<br />
Ljudsko čulo sluha ima ograničenje da ne registruje dobro<br />
vremenski bliske zvukove:<br />
• ne registruje tihi ton koji se javi do 5 milisekundi pre<br />
glasnog (premaskiranje).<br />
• ne registruje tihi ton koji se javi do 100 milisekundi posle<br />
završetka glasnog (postmaskiranje)<br />
• tačna vremena zavise od razlike intenziteta.<br />
MPEG FORMATI<br />
MPEG – Moving pictures experts group<br />
Ekspertska organizacija koja je pod pokroviteljstvom ISO<br />
napravila nekoliko standardnih formata za zapisivanje<br />
zvuka, filma i drugih multimedijalnih sadržaja<br />
NAJPOZNATIJI MPEG STANDARDI<br />
MPEG 1 – standard na kome su zasnovani formati kao su<br />
VideoCD i MP3<br />
MPEG 2 – standard na kome se zasnivaju digitalna<br />
televizija i DVD format<br />
MPEG 4 – standard multimedije za fiksni i mobilni web<br />
MPEG 7 – standard za opisivanje i pretragu audio i<br />
vizuelnog sadržaja<br />
- 67 -
AUDIO LAYER-I<br />
Layeri unutar MPEG standarda čine oznake podstandarda<br />
koji se odnose samo na zapisivanje audio signala<br />
Jedan od najpoznatijih MPEG-ovih audio layera je audio<br />
MPEG layer 3, ili pod drugim, čuvenijim imenom MP3.<br />
Dok je MP3 najčuveniji, MP1 je skoro zaboravljen, dok je<br />
MP2 imao neki uticaj dok nije potisnut layerom MP3.<br />
Audio layeri su međusobno kompatibilni naniže, što znači<br />
da programi koji mogu da tumače MP3 mogu da tumače i<br />
novije layere.<br />
KRATKO O ALGORITMU<br />
Audio MPEG deli celokupni zvučni frekventni opseg na 32<br />
podpojasa (subbands).<br />
Ovi pojasi su kod layera 1 i 2 bili po 625Hz, dok se kod<br />
layera 3 uvode pojasevi različite širine.<br />
• Naime, uho jasno razlikuje 1kHz od 3kHz, dok veoma teško<br />
razlikuje 15kHz od 18kHz (ako se uopšte nešto čuje).<br />
Ako npr. imamo ton od 1kHz jačine 60dB, on spada u 8.<br />
pojas:<br />
• Koder izračunava da je maskirajući efekat ovog tona 35dB,<br />
što daje odnos signal/šum od 25 dB, što znači da je za zapis ovog<br />
zvuka dovoljno 4 bita.<br />
• Dodatno, ovaj maskirajući efekat se proteže od pojasa 5 do<br />
13, naravno sa umanjenim uticajem.<br />
Poslednji korak algoritma je primena Huffmanovog<br />
kodiranja na rezultat dobijen primenom maskiranja.<br />
Sve ovo čini proces MP3 kodiranja prilično računski<br />
zahtevnim. Proces dekodiranja je nešto<br />
jednostavniji, ali je i on svakako komplikovan.<br />
- 68 -
STATIČKO HUFFMAN-OVO KODIRANjE<br />
Osnovna ideja je da se karakteri koji se češće javljaju<br />
kodiraju kraćim sekvencama, dok je kod karaktera koji se<br />
ređe pojavljuju dozvoljeno koristiti i duže kodove.<br />
Na početku je potrebno izgraditi sortiranu tabelu<br />
frekvencija pojavljivanja svih znakova koje želimo da<br />
kodiramo. Neka su to npr. karakteri<br />
IZGRADNjA HUFFMAN-OVOG DRVETA<br />
Pronađu se dva karaktera koja se najređe pojavljuju i ona<br />
se zamene novim “karakterom” čija je frekvencija zbir<br />
frekvencija polazna dva karaktera.<br />
Novouvedeni “karakter” predstavlja čvor drveta iz koga<br />
izniču polazni karakteri. Postupak se ponavlja sve dok se<br />
ne izgradi kompletno drvo.<br />
ODREĐIVANjE KODOVA<br />
Sve grane drveta koje vode “na levo” se označe nulom,<br />
dok se sve grane koje vode “na desno” označe jedinicom.<br />
Kod svakog karaktera se određuje prikupljanjem oznaka<br />
grana putanje koja vodi do njega.<br />
- 69 -
HUFFMAN-OVO DRVO – PRIMER<br />
0<br />
1<br />
A<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
B<br />
0<br />
1<br />
E<br />
F<br />
C<br />
D<br />
A 0<br />
B 100<br />
C 1010<br />
D 1011<br />
E 110<br />
F 111<br />
FORMAT MP3 DATOTEKE<br />
Svaka MP3 datoteka se sastoji od više delova koji se<br />
nazivaju okviri (frames)<br />
Svaki okvir se sastoji od 32 bitnog zaglavlja (header) i<br />
sadržaja.<br />
Jedan okvir služi za zapis 1152 uzorka kod Layer-a 2 i 3<br />
- 70 -
ZAGLAVLjE MP3 OKVIRA<br />
Zaglavlje se sastoji od 32bita:<br />
AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM<br />
A - 11 bitova za sinhronizaciju – svi moraju imati vrednost<br />
1<br />
B – oznaka verzije MPEG standarda<br />
• 00 – MPEG 2.5<br />
• 01 – rezervisano<br />
• 10 – MPEG 2<br />
• 11 – MPEG 1<br />
C – Oznaka layer-a<br />
• 00-rezervisano<br />
• 01 – Layer 3<br />
• 10 – Layer 2<br />
• 11 – Layer 1<br />
D – Oznaka kontrole<br />
• 0 – CRC<br />
• 1 – kontrola isključena<br />
E – bit rate. Izražava se u kbps. Svakom layer-u<br />
odgovaraju različite kombinacije.<br />
• Npr. za MPEG 1 layer 3, 1001 znači 128kbps.<br />
F - Sampling rate. Npr. Za MPEG1 standard, i sve layere<br />
• 00 označava 44100 Hz<br />
• 01 označava 48000 Hz<br />
• 10 označava 32000 Hz<br />
G – Padding – dodatni bit koji kaže da li postoje dodatni<br />
bitovi za poravnavanje<br />
H – Rezervisani bit<br />
I – Broj kanala<br />
• 00, 01, 10 Stereo,<br />
• 11 Mono<br />
J – dodatna oznaka načina zapisa (samo kod stereo<br />
sistema)<br />
K – Copyright<br />
• 0 nema<br />
• 1 ima<br />
- 71 -
L – originalnost zapisa<br />
• 0 kopija originala<br />
• 1 original<br />
M – Oznaka pojačanja<br />
IZRAČUNAVANjE DUŽINE OKVIRA<br />
Iako u zaglavlju svakog okvira nije eksplicitno zapisana<br />
njegova dužina, ona se može rekonstruisati na osnovu<br />
ostalih podataka i to kod Layera 3 po formuli:<br />
Dužina =<br />
144 * bitrate / samplerate + padding<br />
ID3 V2<br />
MP3 format se može proširiti dodatnim informacijama o<br />
muzici, izvođaču, tekstu pesme i slično.<br />
Standard koji ovo opisuje se zove ID3 i trenutno nosi<br />
oznaku verzije 2.4.0.<br />
• Pošto se ovaj standard pojavio posle standardizacije MP3,<br />
ovakve dodatne oznake su se pisale na kraju MP3 datoteke.<br />
• Tek od verzije 2, su oznake premeštene na početak.<br />
ID3 V2 – PRIMER<br />
- 72 -
- 73 -
PREFIKSNI KODOVI<br />
HUFFMAN-OVO KODIRANjE<br />
Za kôd kažemo da ima prefiksno svojstvo ako ni za jedan<br />
znak ne važi da je njegov kôd prefiks koda nekog drugog<br />
znaka.<br />
Npr. ako je 11 kôd karaktera A, a 1110 kôd karaktera B,<br />
onda je kôd karaktera A prefiks kôda karaktera B.<br />
Zahvaljujući prefiksnom svojstvu kôda, čim je kod nekog<br />
znaka pročitan, ne postoji mogućnost da se daljim<br />
čitanjem zaključi da se radi o kôdu nekog drugog znaka,<br />
tako da se odmah može konstatovati o kom se znaku radi<br />
i preći na čitanje kôda sledećeg znaka.<br />
KODOVI PROMENLjIVE DUŽINE<br />
Za kod kažemo da je kôd promenljive dužine ako<br />
različitim znakovima odgovaraju kôdovi različitih dužina.<br />
U suprotnom za kôd kažemo da je kôd fiksne dužine.<br />
Npr. ako je 11 kôd karaktera A, a 1110 kôd karaktera B,<br />
onda se radi o kôdu promenljive dužine.<br />
HUFFMAN-OV KOD<br />
Huffmanov kôd je optimalan prefiksni kôd.<br />
Zato se često koristi za realizaciju kompresija bez<br />
gubitka.<br />
To je kôd promenljive dužine.<br />
Postoje:<br />
• Statičko i<br />
• Dinamičko Huffmanovo kodiranje.<br />
- 74 -
STATIČKO HUFFMAN-OVO KODIRANjE<br />
Osnovna ideja je da se karakteri koji se češće javljaju<br />
kodiraju kraćim sekvencama, dok je kod karaktera koji se<br />
ređe pojavljuju dozvoljeno koristiti i duže kodove.<br />
Na početku je potrebno izgraditi sortiranu tabelu<br />
frekvencija pojavljivanja svih znakova koje želimo da<br />
kodiramo. Neka su to npr. karakteri.<br />
IZGRADNjA HUFFMAN-OVOG DRVETA<br />
Pronađu se dva karaktera koja se najređe pojavljuju i ona<br />
se zamene novim “karakterom” čija je frekvencija zbir<br />
frekvencija polazna dva karaktera.<br />
Novouvedeni “karakter” predstavlja čvor drveta iz koga<br />
izniču polazni karakteri. Postupak se ponavlja sve dok se<br />
ne izgradi kompletno drvo.<br />
ODREĐIVANjE KODOVA<br />
Sve grane drveta koje vode “na levo” se označe nulom,<br />
dok se sve grane koje vode “na desno” označe jedinicom.<br />
Kôd svakog karaktera se određuje prikupljanjem oznaka<br />
grana putanje koja vodi od korena do njega.<br />
- 75 -
HUFFMAN-OVO KODIRANjE – PRIMER<br />
Kodirajmo poruku:<br />
AFAABBAEACABBACABEABCDFDAEAAEFAF<br />
Tabela frekvencija:<br />
A 13<br />
B 6<br />
C 3<br />
D 2<br />
E 4<br />
F 4<br />
Sortirana tabela frekvencija:<br />
D 2<br />
C 3<br />
E 4<br />
F 4<br />
B 6<br />
A 13<br />
- 76 -
HUFFMAN-OVO DRVO – PRIMER<br />
0<br />
1<br />
A<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
B<br />
0<br />
1<br />
E<br />
F<br />
C<br />
D<br />
A 0<br />
B 100<br />
C 1010<br />
D 1011<br />
E 110<br />
F 111<br />
HUFFMAN-OVO KODIRANjE – PRIMER<br />
Kodirana poruka se dobija nadovezivanjem kodova<br />
karaktera i glasi:<br />
011100100100011001010010010001010010011001101010101<br />
111110110110001101110111<br />
Za kodiranje poruke smo iskoristili<br />
13*1+6*3+3*4+2*4+4*3+4*3=75 bita.<br />
Da smo koristili, na primer, 3-bitno kodiranje koje<br />
karakterima dodeljuje njihove redne binarne brojeve od<br />
000 do 101 iskoristili bismo 3*32=96 bita.<br />
- 77 -
DINAMIČKO HUFFMAN-OVO KODIRANjE<br />
Za razliku od statičkog Huffmanovog kodiranja, gde se<br />
frekvencije pojavljivanja znakova određuju na početku<br />
rada algoritma, kod dinamičkog se ove frekvencije<br />
izračunavaju i menjaju u toku rada algoritma.<br />
- 78 -
OTKRIVANjE I ISPRAVLjANjE GREŠAKA<br />
GREŠKE PRI PRENOSU PODATAKA<br />
Pri prenosu podataka često dolazi do promene pojedinih<br />
bitova podataka zbog:<br />
• smetnji na prenosnom putu<br />
• različitih tipova šumova na lokacijama odašiljanja i prijema<br />
Smetnje se dešavaju bez obzira na udaljenost uređaja,<br />
tj. kako pri prenosu podataka između dva računara tako i<br />
između komponenti istog računara<br />
PRISTUPI REŠAVANjU PROBLEMA<br />
Postoje dva osnovna pristupa rešavanju ovog problema:<br />
• kontrola grešaka unatrag (kontrola sa povratnom spregom)<br />
• kontrola grešaka unapred<br />
KONTROLA GREŠAKA UNATRAG<br />
Uz podatke se šalju dodatne (redundantne) informacije<br />
koje služe da se ustanovi da postoje greške, ali ne i da se<br />
one otklone.<br />
Neispravno preneseni podaci se ponovo šalju.<br />
KONTROLA GREŠAKA UNAPRED<br />
Uz podatke se šalju dodatne (redundantne) informacije<br />
koje služe kako da se ustanovi da greške postoje, tako i<br />
da se odredi njihova lokacija.<br />
Neispravno preneseni podaci se automatski koriguju.<br />
- 79 -
IZBOR METODA KONTROLE GREŠAKA<br />
Kako raste količina prenesenih bitova, tako se povećava i<br />
broj kontrolnih bitova.<br />
Kontrola grešaka unapred zahteva prenošenje mnogo<br />
veće količine redundantnih informacija pa zato:<br />
• u okviru jednog sistema (npr. memorija) se često<br />
upotrebljava metod kontrole unapred<br />
• između sistema (npr. telekomunikacije) se obično<br />
upotrebljava metod kontrole unatrag<br />
POUZDANOST KOMUNIKACIJE<br />
Pouzdanost komunikacije se predstavlja brojem bitova<br />
sa greškom (engl. bit error rate – BER)<br />
• BER je verovatnoća pojavljivanja neispravnog bita<br />
• računarske mreže imaju BER oko 10 -12<br />
• unutar računarskog sistema BER je oko 10 -18 ili manje<br />
TIPOVI GREŠAKA<br />
Postoji više tipova mogućih grešaka:<br />
• pogrešna vrednost bita<br />
• suvišan bit<br />
• nedostajući bit<br />
• zamenjena mesta bitova ili reči<br />
• složene greške<br />
METODE ZA OTKRIVANjE GREŠAKA<br />
Najčešće korišćene metode su:<br />
• kontrola parnosti<br />
• provera zbira bloka<br />
• ciklična provera redundanci<br />
- 80 -
KONTROLA PARNOSTI<br />
Kontrola parnosti je jedan od najjednostavnijih metoda<br />
za otkrivanje grešaka.<br />
Koristi se za otkrivanje pogrešnih vrednosti bitova.<br />
Algoritam:<br />
• Uz svaku n-bitnu reč se dodaje po jedan bit tako da ukupan<br />
broj binarnih jedinica u tako proširenoj reči bude paran (neparan)<br />
Pouzdanost:<br />
• Verovatnoća da se greška ne primeti je reda n 2 /4*BER 2<br />
Slabosti:<br />
• Greška se ne primećuje ako je izmenjen paran broj bitova<br />
KONTROLA PARNOSTI U 2D<br />
Pri prenosu bloka podataka proširuje se prethodni metod:<br />
• i dalje se svaka osnovna reč proširuje radi tzv.<br />
“horizontalne” provere parnosti<br />
• čitavom bloku dodaje se još jedna (proširena) reč tako da<br />
za svaku vrednost bita postoji dodatna “vertikalna” provera<br />
parnosti<br />
Ovim metodom se značajno umanjuje verovatnoća<br />
neotkrivenih grešaka<br />
- 81 -
PRIMER 2D KONTROLE PARNOSTI<br />
KONTROLA ZBIRA<br />
Ako je blok duži od jedne reči, često se primenjuje<br />
metod kontrole zbira.<br />
Algoritam:<br />
• Formira se zbir svih reči u bloku i prenese zajedno sa<br />
porukom. Obično se zbir skraćuje, recimo na 32 bita. Primalac<br />
ponovo izračunava zbir i poredi sa primljenim podatkom.<br />
Slabosti:<br />
• Ne može da prepozna greške neispravnog redosleda reči.<br />
CIKLIČNA PROVERA REDUNDANCI<br />
Prethodne metode imaju ograničene mogućnosti<br />
otkrivanja složenih grešaka.<br />
Ciklička provera redundanci (engl. Cyclic Redundancy<br />
Checking – CRC) otkriva:<br />
• sve greške na neparnom broju bitova<br />
• sve 2-bitne greške<br />
• proširene greške čija je dužina manja od broja<br />
redundantnih bitova<br />
- 82 -
Metod CRC je nešto složeniji, ali se često implementira<br />
hardverski.<br />
Počiva na:<br />
• aritmetici po modulu 2 (tj. bez prenosa)<br />
• deljenju polinoma<br />
• niz bitova bloka koji se prenosi se posmatra kao niz<br />
koeficijenata polinoma, npr. a n<br />
a n-1<br />
...a 1<br />
a 0<br />
odgovara polinomu<br />
M(x)=a n<br />
x n +a n-1<br />
x n-1 +...+a 1<br />
x+a 0<br />
Postupak kodiranja:<br />
• odabire se “polinom generator” G(x) stepena k<br />
• izračunava se x k M(x)/G(x).<br />
Dobijeni ostatak se označava sa R(x).<br />
• koeficijenti ostatka (njih k) se dodaju na kraj poruke<br />
Postupak dekodiranja:<br />
• primljena polinomijalna kodna reč se deli sa G(x)<br />
• ako je ostatak deljenja 0, nema grešaka pri prenosu<br />
• ako ostatak nije nula, postoje greške pri prenosu<br />
Postoje greške koje se ovako ne mogu otkriti, ali se<br />
dobrim izborom polinoma generatora njhov broj<br />
smanjuje.<br />
Dobri polinom generatori su:<br />
CRC-16 = x 16 +x 15 +x 2 +1<br />
CRC-CCITT = x 16 +x 12 +x 5 +1<br />
CRC-CCiTT = x 32 +x 26 +x 23 +x 16 +x 12 +x 11 +x 10 +x 8 +x 7 +x 5 +x 4 +x 2 +1<br />
PRIMER CRC<br />
Neka je:<br />
• niska bitova 11100110<br />
• polinom generator G(x)=x 4 +x 3 +1<br />
Koja niska bitova se šalje primaocu?<br />
- 83 -
Rešenje:<br />
• dodajemo 4 bita 0 (množimo polinom sa x 4 ) i delimo:<br />
111001100000<br />
-11001<br />
1011100000<br />
-11001<br />
111000000<br />
-11001<br />
1010000<br />
-11001<br />
110100<br />
-11001<br />
0110<br />
Na originalnu nisku dopisujemo ostatak 0110 i dobijamo:<br />
111001100110<br />
Provera po prijemu:<br />
• delimo:<br />
111001100110<br />
-11001<br />
1011100110<br />
-11001<br />
111000110<br />
-11001<br />
1010110<br />
-11001<br />
110010<br />
-11001<br />
ostatak je 0, dakle prenos je ispravan: 1100110<br />
METODI ZA OTKRIVANjE I ISPRAVLjANjE GREŠAKA<br />
Koriste se često u radu sa memorijom jer tu:<br />
• osim pri prenosu, postoji i mogućnost nastajanja greške pri<br />
zapisivanju i čitanju podataka, kao i tokom njegovog čuvanja<br />
- 84 -
GREŠKE U RADU SA MEMORIJOM<br />
Tvrdi – stalno prisutni defekti<br />
• usled neispravnosti memorijska ćelija nije u stanju da<br />
pouzdano čuva podatke i ona ih bez spoljašnjeg uzroka menja sa<br />
0 na 1 ili obratno.<br />
Mekani – prolazni defekti<br />
• predstavljaju slučajne izmene sadržaja jedne ili više<br />
memorijskih ćelija<br />
• obično su posledica smetnji u napajanju ili<br />
elektromagnetnog ili radioaktivnog zračenja<br />
VRSTE KODOVA<br />
SED (single error detection) – kôd koji omogućava<br />
detekciju grešaka na jednom bitu<br />
slično: DED, TED,...<br />
SEC (single error correction) – kôd koji omogućava<br />
korekciju grešaka na jednom bitu<br />
slično: DEC, TEC,...<br />
HAMINGOVI KODOVI<br />
Najprostiji kod za otkrivanje i korekciju grešaka je<br />
Hamingov kôd<br />
Naredna stranica predstavlja primer za reči dužine 4:<br />
• u polje koje predstavlja presek bar dva kruga upiše se po<br />
jedna vrednost bita<br />
• u preostala polja se upisuje 0 ili 1 tako da se u svakom<br />
krugu očuva parnost<br />
- 85 -
PRIMERI HAMINGOVOG SEC KODA<br />
a) bitovi podatka<br />
b) sa bitovima parnosti<br />
c) promena bita usled greške<br />
d) lokalizovana greška<br />
SEC-DED KODOVI<br />
Često se SEC(single error correction) kodovi proširuju<br />
tako da osim SEC obavljaju i posao DED (double error<br />
detection)<br />
Obično je za to dovoljno dodavanje svega jednog bita<br />
- 86 -
HAMINGOV SEC-DED KOD<br />
Dodaje se još jedan bit tako da je ukupan zbir bitova paran<br />
a) bitovi podatka<br />
b) bitovi parnosti<br />
c) promenjena dva bita<br />
d) lokalizovana greška<br />
e) ispravljena greška<br />
g) prepoznato da postoji greška<br />
ČUVANjE I PROVERA KOREKTNOSTI ZAPISA<br />
- 87 -
KONCEPT PROVERE<br />
Za reč dužine M bitova generiše se kôd dužine K<br />
Zapisuje se M+K bitova<br />
Nakon čitanja se ponovo generiše ključ K 1 i poredi sa K<br />
ekskluzivnom disjunkcijom:<br />
• ako je razlika 0, smatra se da nema greške<br />
Ako se za reč dužine M bitova generiše kod dužine K<br />
bitova:<br />
• ukupan broj bitova je M+K<br />
• broj opisa grešaka je 2 K -1<br />
• za SEC je potrebno da važi 2 K > M+K<br />
POTREBNE DUŽINE KODOVA ZA SEC<br />
- 88 -
PRIMER<br />
Dužina osnovne reči je 8<br />
Dužina koda je 4<br />
Ukupna dužina reči je 12<br />
Funkcija kodiranja se bira tako da vrednost kontrolnog<br />
bita odgovara zbiru (po modulu 2) bitova osnovne reči<br />
koji imaju 1 na mestu tog kontrolnog bita:<br />
C 1 = M 1 ⊕ M 2 ⊕ M 4 ⊕ M 5 ⊕ M 7<br />
C 2 = M 1 ⊕ M 3 ⊕ M 4 ⊕ M 6 ⊕ M 7<br />
C 3 = M 2 ⊕ M 3 ⊕ M 4 ⊕ M 8<br />
C 4 = M 5 ⊕ M 6 ⊕ M 7 ⊕ M 8<br />
Neka je reč M=10110101<br />
Kôd je K=1010<br />
Neka je kasnije izmenjen bit 5: M 1 =10100101<br />
Odgovarajući kôd je K 1 =0011<br />
Poređenje K i K 1 daje 1001, što ukazuje da je greška u<br />
bitu 5<br />
- 89 -
POKRETNI ZAREZ<br />
ZAPISIVANjE RAZLOMLjENIH BROJEVA<br />
Ceo i razlomljeni deo broja se odvojeno prebacuju u<br />
traženu osnovu.<br />
Ceo deo se zapisuje prema poznatim pravilima.<br />
Razlomljeni deo se zapisuje tako što se u svakom koraku<br />
množi osnovom u kojoj želimo da zapišemo broj. Posle<br />
svakog množenja celobrojni deo predstavlja cifru u<br />
zapisu, a razlomljeni deo se ponovo množi osnovom sve<br />
dok je različit od nule.<br />
PRIMER<br />
Zapisati broj 0.84375 u osnovi 4<br />
0 1 2 3<br />
0.84375 0.375 0.5 0<br />
0 3 1 2<br />
= (0.312) 4<br />
ZAPIS SA POKRETNIM ZAREZOM<br />
Broj se predstavlja kao<br />
<br />
± m * b e<br />
<br />
<br />
<br />
<br />
m je “značajni deo”<br />
b je “osnova zapisa”<br />
e je “eksponent”<br />
broj cifara značajnog dela je “preciznost” i<br />
označavaćemo ga sa p<br />
- 90 -
PRIMER<br />
(23.71) 10<br />
= (0.0926171875) 10 * 16 2<br />
= (0.17B5C2) 16 * 16 2<br />
GREŠKE PRI ZAOKRUŽIVANjU<br />
Zapis realnih brojeva u računaru je aproksimacija skupa<br />
realnih brojeva u određenom intervalu.<br />
Pri aproksimiranju na određeni broj decimala može doći<br />
do zaokruživanja, a samim tim i greške.<br />
Greška pri zaokruživanju se meri na dva načina:<br />
• Pomoću ulp-a<br />
• Pomoću relativne greške<br />
ULP<br />
ULP (Unit in the last place) je najmanja vrednost za koju<br />
se mogu razlikovati dva broja u pokretnom zarezu<br />
zapisana u određenoj osnovi i sa određenom preciznošću.<br />
Ako je broj z predstavljen u računaru kao<br />
d 0 ,d -1 …d -(p-1) * b e , onda je greška<br />
|d 0 , d -1 …d -(p-1) - (z/b e )| * b p-1 ulp-a<br />
PRIMER<br />
Neka je b=10, p=4.<br />
Broj z=0.034869 je predstavljen kao<br />
3.487 *10 -2 . Greška je:<br />
- 91 -
|3.487 – (0.034869/10 -2 )| * 10 3 =<br />
|3.487 – 3.4869| * 10 3 =<br />
0.0001 * 10 3 = 0.1 ulp-a<br />
RELATIVNA GREŠKA<br />
Relativna greška je apsolutna vrednost razlike realnog<br />
broja i njegove reprezentacije podeljena sa apsolutnom<br />
vrednošću realnog broja. Uvek se zapisuje u terminima<br />
mašinskog ε=b 1-p /2.<br />
PRIMER<br />
Neka je b=10, p=4, ε=0.0005.<br />
Broj z=0.034869 je predstavljen kao<br />
3.487 *10 -2 . Relativna greška je:<br />
|0.034869 – 0.03487| / |0.034869| =<br />
0.000028678 ≈ 0.0574ε<br />
POKRETNI ZAREZ<br />
Predstavljanjem brojeva u pokretnom zarezu omogućuje<br />
se zapisivanje vrlo velikih ili jako malih brojeva pomoću<br />
malog broja cifara.<br />
U opštem slučaju broj u pokretnom zarezu se predstavlja<br />
u obliku<br />
±d 0 ,d -1 d -2 ...d -(p-1) be<br />
• b-osnova<br />
• p-preciznost<br />
- 92 -
ZAPIS BROJEVA<br />
d 0 ,d -1 d -2 ...d -(p-1) je značajni deo i zapisuje se u<br />
brojčanom sistemu sa osnovom b (0≤d i < b)<br />
Zapis broja za koji važi da je d 0 ≠0 naziva se<br />
normalizovan.<br />
Za predstavljanje realnih brojeva u računarima koriste se<br />
vrednosti b=2 ili b=16.<br />
I za b=2 i b=16 eksponent se kodira u binarnom<br />
brojčanom sistemu<br />
Vrednost osnove se ne čuva eksplicitno jer je ista za sve<br />
brojeve koji se zapisuju.<br />
Jednostruka preciznost – za zapis brojeva se koriste<br />
registri dužine 32 bita<br />
Dvostruka preciznost – za zapis brojeva se koriste registri<br />
dužine 64 bita<br />
Zapis realnog broja sastoji se od:<br />
• znaka broja<br />
• frakcije (Niz cifara u razlomljenom delu broja n)<br />
• eksponenta<br />
ZAPIS SA BINARNOM OSNOVOM<br />
Zapis sa binarnom osnovom:<br />
• 32 bita – jednostruka tačnost<br />
<br />
1 bit za znak<br />
8 bita za eksponent (u zapisu sa uvećanjem 128)<br />
<br />
23 značajne binarne cifre<br />
• 64 bita – dvostruka tačnost<br />
1 bit za znak<br />
<br />
8 bita za eksponent (uvećan za 128)<br />
<br />
55 značajne binarne cifre<br />
- 93 -
ZAPIS SA BINARNOM OSNOVOM<br />
JEDNOSTRUKA TAČNOST<br />
PDP-11 i VAX-11 računari firme DEC<br />
Zapis u 32-bitnom registru:<br />
31 30 23 22 0<br />
Zna<br />
k<br />
Uvećani<br />
eksponen<br />
t<br />
Frakcija<br />
značajni deo broja se zapisuje u obliku znak i apsolutna<br />
vrednost.<br />
ZNAK<br />
Znak :<br />
0 za pozitivne<br />
1 za negativne brojeve<br />
EKSPONENT<br />
Eksponent se zapisuje u 8 bita na pozicijama 23-30.<br />
Zapisuje se uz uvećanje 128.<br />
Vrednosti eksponenta koje mogu da se zapišu pripadaju<br />
intervalu [-128,+127], odnosno [0,255] posle uvećanja za<br />
128.<br />
UVEĆANjE 128<br />
Bez uvećanja ne bi mogla da se pravi razlika u zapisu<br />
brojeva 0 i 0.1 (0=0x2 0 0.1=0.1x2 0 ) zbog implicitnog<br />
kodiranja prvog bita jedinicom.<br />
- 94 -
Sa druge strane, poželjno je da se ne pravi razlika<br />
između celobrojne nule i nule u pokretnom zarezu.<br />
FRAKCIJA<br />
Frakcija:<br />
Apsolutna vrednost broja se prevodi u binarni sistem i<br />
zapisuje u normalizovanom obliku uz dodatnu<br />
modifikaciju. Umesto oblika :<br />
d0, d-1...d-(p-1), d0 ≠ 0<br />
koristi se oblik:<br />
0, d0d-1...d-(p-1), d 0 ≠ 0<br />
Uz povećanje vrednosti eksponenta za 1.<br />
U zapisu sa binarnom osnovom frakcija<br />
d 0 d -1 d -2 ...d -(p-1) ima 24 bita, ali se u računaru predstavlja<br />
sa 23 binarne pozicije 0-22 jer je uvek d 0 =1, tako da je<br />
njegovo eksplicitno čuvanje nepotrebno.<br />
PRIMERI<br />
Broj Znak Eksponent Frakcija<br />
+15 0 10000100 11100...0<br />
-15 1 10000100 11100...0<br />
+1/64 0 01111011 00000...0<br />
0 0 00000000 00000...0<br />
0 00000001 00000...0<br />
+1x2 -<br />
128<br />
ZAPIS SA BINARNOM OSNOVOM<br />
DVOSTRUKA TAČNOST<br />
Dva uzastopna 32-bitna registra<br />
- 95 -
Prvi registar – kao kod jednostruke tačnosti<br />
Ceo drugi registar – za dodatne cifre frakcije<br />
Omogućuje povećanje preciznosti, tj. veći broj cifara<br />
frakcije, ali ne i povećanje vrednosti eksponenta<br />
- 96 -
63 62 55 54 0<br />
Zna<br />
k<br />
Uvećani<br />
ekspon<br />
ent<br />
Frakcija<br />
31 0<br />
Produžetak frakcije<br />
ZAPIS SA HEKSADEKADNOM OSNOVOM<br />
Zapis sa heksadekadnom osnovom:<br />
• 32 bita – jednostruka tačnost<br />
<br />
1 bit za znak<br />
7 bita za eksponent (u zapisu sa uvećanjem 64)<br />
<br />
24 značajne binarne cifre<br />
• 64 bita – dvostruka tačnost<br />
1 bit za znak<br />
<br />
7 bita za eksponent (uvećan za 64)<br />
<br />
56 značajne binarne cifre<br />
S/360, S/370 firme IBM<br />
Značajan deo: znak i apsolutna vrednost.<br />
Znak :<br />
0 za pozitivne<br />
1 za negativne brojeve<br />
Znak značajnog dela je istovremeno i znak broja (kao i<br />
kod binarne osnove)<br />
Frakcija značajnog dela je takođe normalizovana.<br />
Zapisuje se sa 6 heksadekadnih cifara u 24 bita.<br />
EKPONENT<br />
Eksponent se zapisuje u 7 bita na pozicijama 24-30.<br />
Vrednosti eksponenta se zapisuju uz uvećanje za 64.<br />
Vrednosti eksponenta koje mogu da se zapišu pripadaju<br />
intervalu [-64,+63], odnosno [0,+127] posle uvećanja.<br />
- 97 -
UVEĆANjE ZA 64<br />
NULA<br />
Osnova b=16 se ne zapisuje u registru.<br />
Kao i u slučaju zapisa sa binarnom osnovom, eksponent se<br />
uvećava zbog zapisa nule.<br />
Pravilo je da se nula zapisuje kao sve nule u registru.<br />
FORMAT ZAPISA – JEDNOSTRUKA TAČNOST<br />
31 30 24 23 0<br />
Zna Uvećani<br />
Frakcija<br />
k ekspon<br />
ent<br />
PRIMERI<br />
Broj Znak Eksponent Frakcija<br />
+15 0 1000001 11110...0<br />
-15 1 1000001 11110...0<br />
+1/64 0 0111111 01000...0<br />
0 0 0000000 00000...0<br />
+1x16 -<br />
65<br />
0 0000000 00010...0<br />
FORMAT ZAPISA – DVOSTRUKA TAČNOST<br />
Dva uzastopna 32-bitna registra<br />
Prvi registar – kao kod jednostruke tačnosti<br />
Ceo drugi registar – dodatne cifre frakcije broja<br />
- 98 -
NAPOMENE<br />
Bez obzira na način zapisa realnih brojeva, za izabranu<br />
tačnost (sa binarnom ili heksadekadnom osnovom ) broj<br />
različitih zapisa realnih brojeva je isti, ali je gustina na<br />
pojedinim delovima brojčane ose različita.<br />
Ukoliko se poveća interval za eksponent, smanjuje se<br />
broj cifara frakcije koje je moguće zapisati i obratno.<br />
Dodatno, realnih brojeva koji mogu da se zapišu u<br />
jednostrukoj tačnosti ima isto koliko i celih (2 32 ) jer<br />
toliko ima različitih kombinacija bitova u registru dužine<br />
32 bita.<br />
IEEE 754 ZAPISI<br />
Standard IEEE 754 propisuje zapise:<br />
• 32 bita – jednostruka tačnost<br />
<br />
1 bit za znak<br />
8 bita za eksponent (u zapisu sa uvećanjem 127)<br />
<br />
23 značajne binarne cifre<br />
• 64 bita – dvostruka tačnost<br />
<br />
1 bit za znak<br />
11 bita za eksponent (uvećan za 1023)<br />
52 značajne binarne cifre<br />
<br />
• pri tome<br />
Zapisi su normalizovani, tj. podrazumeva se najviša cifra 1<br />
Nula se zapisuje sa svim bitovima 0<br />
<br />
Najviši eksponent označava posebne NaN vrednosti<br />
NORMALIZOVANI BROJEVI<br />
Normalizovani brojevi u jednostrukoj tačnosti imaju<br />
eksponent izmedju<br />
-126 (00000001) i +127 (11111110).<br />
Frakcija ima oblik<br />
1, d -1 …d -(p-1)<br />
- 99 -
pri čemu se prva jedinica ne zapisuje.<br />
Zapis frakcije može da ima bilo koju vrednost.<br />
PRIMERI<br />
Zapisati broj 13,25 prema standardu IEEE 754 u<br />
jednostrukoj tačnosti<br />
o (13,25) 10<br />
= (1101,01) 2<br />
= (1,10101) 2<br />
* 2 3<br />
o Znak: 0 (+)<br />
o Eksponent sa uvećanjem 127:<br />
130 = (10000010) 2<br />
o Značajni deo sa implicitnom jedinicom: 10101 - (1,10101) 2<br />
o Zapis:<br />
0 10000010 10101000000000000000000<br />
Pročitati sledeći zapis:<br />
1 10000110 01001000000000000000000<br />
o Znak: 1 (-)<br />
o Eksponent: 134-127=7<br />
o Frakcija: (1,01001)2 = (1.28125) 10<br />
o Rešenje: (-1.28125)10 * 2 7 = (-164) 10<br />
ZAPIS BROJEVA U JEDNOSTRUKOJ TAČNOSTI<br />
BINARNA<br />
OSNOVA<br />
HEKSADEKADNA<br />
OSNOVA<br />
IEEE 754<br />
Znak 1 bit 1 bit 1 bit<br />
Eksponent 8 bitova<br />
Uvećanje 128<br />
7 bitova<br />
Uvećanje 64<br />
8 bitova<br />
Uvećanje 127<br />
Frakcija 23 bita<br />
0,1__________<br />
(0,1<br />
podrazumeva<br />
ni deo zapisa.<br />
Ostalo se<br />
unosi u 23<br />
24 bita<br />
0,____________<br />
(0,<br />
podrazumeva<br />
ni deo zapisa.<br />
Ostalo se<br />
unosi u 24<br />
23 bita<br />
1,__________<br />
(1,<br />
podrazumeva<br />
ni deo<br />
zapisa.<br />
Ostalo se<br />
- 100 -
ita.) bita.) unosi u 23<br />
bita.)<br />
- 101 -
NaN<br />
NaN (Not a number) su specijalne vrednosti koje nisu<br />
brojevi i označavaju neke izuzetne situacije prilikom<br />
izračunavanja. Npr. 0/0 ili √-1<br />
Eksponent NaN vrednosti je maksimalan. U slučaju<br />
jednostruke tačnosti to je 128 (11111111).<br />
Frakcija mora biti različita od nule.<br />
Postoje takozvani<br />
• Signalni NaN (SNaN) i<br />
• Tihi NaN (QNaN).<br />
SNaN<br />
Signalni NaN signalizira izuzetno stanje kod aritmetičkih<br />
operacija, poređenja i konverzija.<br />
Zapis eksponenta u jednostrukoj tačnosti je 11111111.<br />
Prvi bit frakcije je 0.<br />
Ostatak frakcije je različit od 0.<br />
QNaN<br />
Tihi NaN predstavlja pojavu nedozvoljene operacije u<br />
programu.<br />
Propagira se kroz izračunavanje.<br />
Signalizira se pojava izuzeća.<br />
Zapis eksponenta u jednostrukoj tačnosti je 11111111.<br />
Prvi bit frakcije je 1.<br />
Ostali bitovi frakcije su proizvoljni.<br />
- 102 -
BESKONAČNO<br />
IEEE 754 standard omogućava predstavljanje beskonačnih<br />
vrednosti.<br />
Znak određuje da li se radi o +∞ ili -∞<br />
Eksponent u jednostrukoj tačnosti ima vrednost 128<br />
(11111111).<br />
Frakcija je 0.<br />
OZNAČENA NULA<br />
Nula se u jednostrukoj tačnosti predstavlja eksponentom<br />
-127 (00000000) i frakcijom 0.<br />
Pošto znak može biti + ili – (0 ili 1) onda postoje i dve<br />
nule +0 i -0.<br />
Prema standardu važi +0 = -0.<br />
log-0 = NaN, a log+0 = -∞<br />
DENORMALIZOVANI BROJEVI<br />
Da bi se povećala gustina realnih brojeva oko nule i<br />
izbegla pojava potkoračenja uvode se takozvani<br />
denormalizovani brojevi.<br />
U jednostrukoj tačnosti važi:<br />
• Zapis eksponenta u jednostrukoj tačnosti je 00000000<br />
• Frakcija je različita od nule, a vodeća jedinica se ne<br />
podrazumeva. Ako je frakcija f, onda je predstavljeni broj 0, f *<br />
2 -126 .<br />
PRIMER<br />
Neka je broj zapisan u denormalizovanom obliku kao:<br />
0 00000000 00010000000000000000000<br />
- 103 -
Radi se o broju +(0,0001) 2 * 2-126 odnosno 0.0625 * 2 -126 = 2 -130<br />
ZAOKRUŽIVANjE<br />
Zaokruživanje se vrši kada rezultat operacije ne može<br />
biti tačno zapisan.<br />
Moguće su sledeće vrste zaokruživanja:<br />
• Zaokruživanje na najbližu vrednost<br />
• Zaokruživanje prema +∞<br />
• Zaokruživanje prema -∞<br />
• Zaokruživanje prema nuli.<br />
ZAOKRUŽIVANjE NA NAJBLIŽU VREDNOST<br />
Pri ovoj vrsti zaokruživanja broj se zaokružuje na<br />
najbližu predstavljivu vrednost, uz zaokruživanje na<br />
parnu cifru kada je broj na sredini intervala između dve<br />
predstavljive vrednosti. Ovo je predefinisani način<br />
zaokruživanja.<br />
ZAOKRUŽIVANjE PREMA +∞<br />
Realizuje se u dva koraka:<br />
• Ako je broj pozitivan i postoji bar jedna jedinica na nekoj<br />
poziciji desno od poslednje pozicije koja se čuva u zapisu, na<br />
poslednju poziciju se dodaje jedinica.<br />
• Bez obzira na znak odbacuju se bitovi desno od poslednje<br />
pozicije koja se čuva u zapisu.<br />
ZAOKRUŽIVANjE PREMA -∞<br />
Realizuje se u dva koraka:<br />
• Ako je broj negativan i postoji bar jedna jedinica na nekoj<br />
poziciji desno od poslednje pozicije koja se čuva u zapisu, na<br />
poslednju poziciju se dodaje jedinica.<br />
- 104 -
• Bez obzira na znak odbacuju se bitovi desno od poslednje<br />
pozicije koja se čuva u zapisu.<br />
ZAOKRUŽIVANjE KA NULI<br />
Odbacuju se svi bitovi desno od poslednje pozicije koja<br />
se čuva u zapisu.<br />
∞ U ARITMETIČKIM OPERACIJAMA<br />
Sa izuzetkom operacija koje proizvode QNaN sve<br />
operacije koje uključuju ∞ takođe imaju ∞ kao rezultat.<br />
Međutim i dalje treba paziti na znak.<br />
QNaN U ARITMETIČKIM OPERACIJAMA<br />
QNaN se propagira kroz aritmetičke operacije tako da<br />
ostaje vidljiv na njihovom kraju. Može se pojaviti u<br />
sledećim slučajevima:<br />
• (±∞) - (±∞)<br />
• 0 * ∞<br />
• 0 / 0, ∞ / ∞<br />
• x % 0, ∞ % x<br />
• √x, x
je povećan eksponent. Ako pri pomeranju frakcija<br />
postane 0 rezultat je vrednost drugog operanda.<br />
Sabiranje i oduzimanje frakcija se vrše prema pravilima<br />
koja važe za cele brojeve u zapisu znak i apsolutna<br />
vrednost. Eksponent rezultata je eksponent operanada<br />
posle izjednačavanja.<br />
Ako dolazi do prekoračenja rezultat se pomera za jedno<br />
mesto udesno uz povećanje vrednosti eksponenta za<br />
jedan. Ako povećanje vrednosti eksponenta dovede do<br />
prekoračenja rezultat je ∞, ali uzevši u obzir i znak.<br />
Ako rezultat operacije nije normalizovan, pokušava se<br />
normalizacija. Cifre frakcije se pomeraju ulevo uz<br />
smanjivanje eksponenta. Može se dobiti i denormalizovan<br />
rezultat.<br />
Na kraju se vrši zaokruživanje, ako je potrebno.<br />
PRIMERI<br />
5.375+0.5625<br />
0 10000001 01011000000000000000000 (5.375)<br />
0 01111110 00100000000000000000000 (0.5625)<br />
1, 010110 (1.010110) 2<br />
+0, 001001 (posle izjedačavanja eksponenata)<br />
1, 011111 (1.011111) 2<br />
0 10000001 01111100000000000000000<br />
=5.9375<br />
5.375-0.5625<br />
1, 010110 (1.010110) 2<br />
-0, 001001 (posle izjedačavanja eksponenata)<br />
1, 001101 (1.001101) 2<br />
0 10000001 00110100000000000000000<br />
=4.8125<br />
- 106 -
IEEE754 MNOŽENjE I DELjENjE<br />
Jednostavnije je od sabiranja i oduzimanja jer se ne vrši<br />
svođenje na isti eksponent.<br />
x = xs x 2 x e y = y s x 2 y e<br />
U opštem slučaju:<br />
x x y = (x s * y s ) x 2 x e+ye<br />
x / y = (x s / y s ) x 2x e-ye<br />
Pri izvođenju operacija potrebno je voditi računa o<br />
generisanju i propagaciji specijalnih vrednosti.<br />
MNOŽENjE – OSNOVI KORACI ALGORITMA<br />
1. Proverava se postojanje specijalnih vrednosti. Ukoliko<br />
neki od argumenata operacije predstavlja specijalnu<br />
vrednost, rezultat se određuje na osnovu odgovarajućih<br />
pravila za specijalne vrednosti.<br />
2. Ukoliko je bar jedan od činilaca jednak nuli, rezultat je 0<br />
3. Saberu se vrednosti eksponenata i od dobijenog zbira<br />
oduzme uvećanje.<br />
Ako je došlo do prekoračenja pri ovom sabiranju, krajnji<br />
rezultat je ±∞ u zavisnosti od znaka brojeva x i y.<br />
Ako je pak došlo do potkoračenja vrednosti eksponenta,<br />
krajnji rezultat je pozitivna ili negativna (u zavisnosti od<br />
znaka brojeva x i y) nula.<br />
4. Pomnože se frakcije brojeva. Množenje se vrši prema<br />
pravilima za množenje celih brojeva zapisanih pomoću<br />
znaka i apsolutne vrednosti<br />
5. Dobijeni rezultat se normalizuje sličnim postupkom kao<br />
kod sabiranja. Pri tome je moguće dobiti i<br />
denormalizovani broj<br />
6. Broj (binarnih) cifara u proizvodu je dvostruko veći od<br />
broja cifara vrednosti koje su pomnožene; cifre koje su<br />
višak se odbacuju u procesu zaokruživanja<br />
- 107 -
DELjENjE – OSNOVNI KORACI ALGORITMA<br />
1. Proverava se postojanje specijalnih vrednosti. Ukoliko je<br />
neki od argumenata operacije specijalna vrednost,<br />
rezultat se određuje na osnovu odgovarajućih pravila za<br />
specijalne vrednosti.<br />
2. Ako je delilac nula, tada<br />
ako je deljenik ≠0, količnik je ±∞ u zavisnosti od<br />
znaka x<br />
ako je deljenik =0, tada je rezultat NaN<br />
3. Oduzmu se vrednosti eksponenata i na dobijenu razliku<br />
doda uvećanje.<br />
Ako je došlo do prekoračenja pri ovom sabiranju, krajnji<br />
rezultat je ± ∞ u zavisnosti od znaka brojeva x i y.<br />
Ako je pak došlo do potkoračenja vrednosti eksponenta,<br />
krajnji rezultat je pozitivna ili negativna (u zavisnosti od<br />
znaka brojeva x i y) nula.<br />
4. Podele se frakcije brojeva. Deljenje se vrši prema<br />
pravilima za deljenje celih brojeva zapisanih pomoću<br />
znaka i apsolutne vrednosti<br />
5. Dobijeni rezultat se normalizuje sličnim postupkom kao<br />
kod sabiranja. Pri tome je moguće dobiti i<br />
denormalizovan broj<br />
6. Dobijeni količnik se zaokružuje prema pravilima za<br />
zaokruživanje<br />
- 108 -
POKRETNI ZAREZ<br />
DEKADNA OSNOVA<br />
BROJEVI<br />
Brojevi mogu biti<br />
• Konačni brojevi (brojevi čije vrednosti mogu da budu tačno<br />
prikazane)<br />
• Specijalne vrednosti.<br />
Brojevi su zapisani pomoću<br />
• Znaka broja (0 za pozitivne, 1 za negativne)<br />
• Frakcije. Frakcija se zapisuje kao celobrojna vrednost koja<br />
je veća ili jednaka nuli.<br />
• Eksponenta.<br />
U zavisnosti od kombinacije vrednosti eksponenta i<br />
frakcije zapisani broj predstavlja konačan broj ili<br />
specijalnu vrednost.<br />
DPD<br />
DPD je zasnovan na principu dekadnog kodiranja: do tri<br />
dekadne cifre se kodiraju pomoću 10-bitnog polja<br />
nazvanog dekleti.<br />
Za kodiranje se koristi poboljšana varijanta Chen-Ho<br />
algoritma kodiranja.<br />
Vrednost broja je<br />
(-1) znak x frakcija x 10 eksponent<br />
- 109 -
DPD FORMAT ZAPISA – JEDNOSTRUKA TAČNOST<br />
Z<br />
1 bit<br />
K<br />
5 bita<br />
NE<br />
6 bita<br />
NF<br />
20 bitova<br />
Z - Znak broja<br />
K - Polje sa kombinacijom<br />
NE - Nastavak eksponenta<br />
NF - Nastavak frakcije<br />
Vrednost broja predstavljenog u pokretnom zarezu<br />
pomoću dekadne osnove se određuje na sledeći način:<br />
1. Ako su 5 bitova kombinacije u intervalu 00000-11101,<br />
tada je u pitanju konačan broj. Tih 5 cifara kodiraju dva<br />
bita najveće težine uvećanog eksponenta i cifru najveće<br />
težine frakcije. Ostatak od 6 bita u polju NE predstavlja<br />
nastavak eksponenta.<br />
2. Ako su 5 bitova kombinacije jednaki 11110, vrednost<br />
broja je +∞ ili -∞, u zavisnosti od znaka broja. Ostalih 6<br />
bitova u polju NE i nastavak frakcije nisu relevantni<br />
3. Ako su 5 bitova kombinacije jednaki 11111, vrednost<br />
broja je NaN. Ako je bit najveće težine polja NE jednak 1<br />
tada je vrednost SNaN; u suprotnom je QNaN. Ostalih 5<br />
bitova polja NE i nastavak frakcije se koriste radi bliže<br />
specifikacije NaN vrednosti.<br />
DPD KODIRANjE<br />
Deli cifre na<br />
• male (0-7) i<br />
• velike (8,9)<br />
na osnovu vrednosti prvog bita u BCD kodu<br />
Male cifre zahtevaju tri bita a velike jedan bit da bi se<br />
međusobno razlikovale<br />
- 110 -
Kodiranje razmatra svaku od kombinacija tri cifre<br />
‣ Sve tri cifre su male: potrebno je 10 bitova (3+3+3 za<br />
cifre, 1 bit da označi ovu kombinaciju)<br />
‣ Dve cifre su male: potrebno je 7 bitova za cifre (3+3+1);<br />
preostala 3 bita označavaju kombinaciju<br />
‣ Jedna cifra je mala: potrebno je 5 bitova za cifre<br />
(3+1+1); preostalih 5 bitova označavaju kombinaciju<br />
‣ Sve cifre su velike: potrebno je 3 bita za cifre (1+1+1);<br />
preostalih 7 (potrebno je samo 5) označavaju<br />
kombinaciju<br />
Dve cifre najveće težine eksponenta i cifra najveće<br />
težine frakcije se određuju na sledeći način:<br />
• Ako su 5 bitova kombinacije u intervalu 0xxxx-<br />
10xxx, tada su dva bita najveće težine kombinacije<br />
dva bita najveće težine eksponenta, a vrednost cifre<br />
najveće težine frakcije je vrednost dekadne cifre<br />
zapisane pomoću tri cifre najmanje težine<br />
kombinacije.<br />
• Ako su 5 bitova kombinacije u intervalu 110xx-<br />
1110xx, predstavimo bitove u kombinaciji kao<br />
11e 1 e 2 f. Tada je dekadna vrednost cifre najveće<br />
težine frakcije jednaka 8+f, dok su e 1 e 2 cifre<br />
najveće težine eksponenta.<br />
- 111 -
DPD SHEMATSKI PRIKAZ KODIRANjA<br />
Cifre C 1 C 2 C 3 zapisane u BCD zapisu<br />
postaju<br />
(abcd)(efgh)(ijkm)<br />
(pqr)(stu)(v)(wxy)<br />
gde je:<br />
aei pqr stu v wxy Komentar<br />
000 bcd fgh 0 jkm Sve cifre su male<br />
001 bcd fgh 1 00m Krajnje desna cifra je velika<br />
010 bcd jkh 1 01m Srednja cifra je velika<br />
100 jkd fgh 1 10m Krajnje leva cifra je velika<br />
110 jkd 00h 1 11m Krajnje desna cifa je mala<br />
(ostale dve su velike)<br />
101 fgd 01h 1 11m Srednja cifra je mala (ostale dve<br />
su velike)<br />
011 bcd 10h 1 11m Krajnje leva cifra je mala (ostale<br />
dve su velike)<br />
111 00d 11h 1 11m Sve cifre su velike; dva bita se<br />
ne koriste<br />
- 112 -
DPD SHEMATSKI PRIKAZ DEKODIRANjA<br />
Cifre<br />
postaju<br />
(pqr)(stu)(v)(wxy)<br />
(abcd)(efgh)(ijkm)<br />
koje predstavljaju BCD zapis cifara C 1 C 2 C 3<br />
vwxst<br />
abcd efgh ijkm<br />
0.... 0pqr 0stu 0wxy<br />
100.. 0pqr 0stu 100y<br />
101.. 0pqr 100u 0sty<br />
110.. 100r 0stu 0pqy<br />
11100 100r 100u 0pqy<br />
11101 100r 0pqu 100y<br />
11110 0pqr 100u 100y<br />
11111 100r 100u 100y<br />
gde tačka (’.’) označava da je sadržaj na toj poziciji nebitan.<br />
- 113 -