1
Osnove programiranjaOsnove programiranja
Zagreb, 2006.Zagreb, 2006.
Uvod u CUvod u C--programiranjeprogramiranjeosnovni tipovi podatakaosnovni tipovi podataka
Pripremio: Dr. sc. Miroslav Slamić, Prof. v. šk.
ZAGREB, 2006.
OsnovniOsnovni tipovitipovi podatakapodataka
OsnovniOsnovni tipovitipovi podatakapodatakacharchar -- znakovniznakovni tip tip iliili malimali cijelicijeli brojbrojintint -- cjelobrojnicjelobrojni tiptipfloatfloat -- realnirealni tiptipdoubledouble -- realnirealni tip u tip u dvostrukojdvostrukoj preciznostipreciznosti
PrefiksiPrefiksi iliili kvalifikatorikvalifikatorishortshort -- smanujesmanuje rasponraspon cjelobrojnihcjelobrojnih vrijednostivrijednosti kojekoje varijablavarijabla
momožžee sadrsadržžavatiavatilonglong -- povepoveććavaava rasponraspon cjelobrojnihvrijednosticjelobrojnihvrijednosti kojekoje varijablavarijabla
momožžee sadrsadržžavatiavatisignedsigned -- dozvoljavadozvoljava pridrupridružživanjeivanje pozitivnihpozitivnih i i negativnihnegativnih vrijednostivrijednostiunsignedunsigned -- dozvoljavadozvoljava pridrupridružživanjeivanje samosamo pozitivnihpozitivnih vrijednostivrijednosti
2
Treba voditi raTreba voditi raččuna kod deklaracije tipa una kod deklaracije tipa podataka!podataka!
Primjer u programskom jeziku CPrimjer u programskom jeziku CBrojanje
void main () {short int i;i = 0;while (i < 100000) {
i = i + 1;}printf ("Gotovo!");
}
Ovaj program neOvaj program nećće moe moćći brojiti do 100000 jer je i brojiti do 100000 jer je shortshort int i int i ograniograniččen na 32767. en na 32767.
Binarni brojeviBinarni brojevi
Kod binarnih brojevaKod binarnih brojeva ((bazabaza 2), 2), znamenke znamenke imaju samo dvije vrijednosti:imaju samo dvije vrijednosti:
00 or or 11Jedan Jedan bit bit ččuva dvije razliuva dvije različčite vrijednostiite vrijednostiBinarni sustav je prirodni naBinarni sustav je prirodni naččin za in za pohranu brojeva u predlopohranu brojeva u predložžak bitova ak bitova
Binarni sustav je manje kompaktan za prikaz, Binarni sustav je manje kompaktan za prikaz, ali je njegova jednostavnost praktiali je njegova jednostavnost praktiččnija za nija za elektronielektroniččku manipulaciju brojeva. ku manipulaciju brojeva.
““bitbit”” znaznaččii ““bbinary diginary digitit””
bazabaza -- konstantnakonstantna
EksponentEksponentUveUveććava se ava se
zdesna zdesna od 0 na od 0 na lijevolijevo
PozicijskaPozicijskavrijednostvrijednostznamenkeznamenke
Faktor Faktor skaliranjaskaliranja
Vrijednosti pozicija kod brojevnih Vrijednosti pozicija kod brojevnih sustavasustava
DEKADSKI BROJ DEKADSKI BROJ ““256256””
22 55 66
101022 101011 101000
×× ×× ××++ ++
Znamenke Znamenke ((mnomnožžiteljiitelji) ) podrupodruččje je 00 to to 99 ((tjtj.. 0 0 do do bazabaza--1)1)
3
Vrijednosti pozicija kod brojevnih Vrijednosti pozicija kod brojevnih sustavasustava
Za binarni broj Za binarni broj ““1100010010”” ((bazabaza 2) 2) to to izgleda ovakoizgleda ovako
2244 2233 2222 2211 2200
×× ×× ×× ×× ××++ ++ ++ ++11 00 11 0000
Za bazu 2 znamenke Za bazu 2 znamenke susu 0 0 iliili 11
Baza jeBaza je 22
Konverzija u binarni sustavKonverzija u binarni sustav
Sve potencije broja 2 su parneSve potencije broja 2 su parne2211 = 2, 2= 2, 288 = 256, 2= 256, 21515 = 32768, ...= 32768, ...2200 = = 11 osim nulteosim nulte
Samo zadnji bit određuje da li je broj Samo zadnji bit određuje da li je broj paran/neparanparan/neparan
Ako je broj neparan zadnja znamenka jeAko je broj neparan zadnja znamenka je 11Ako je broj paran zadnja znamenka je Ako je broj paran zadnja znamenka je 00
Za razvoj konaZa razvoj konaččne binarne znamenke ne binarne znamenke dijelimo sa 2dijelimo sa 2
Ostatak dijeljenjaOstatak dijeljenja (0 (0 ili ili 1) 1) je binarni znak je binarni znak Kvocijenti se koriste za ponavljanje procedureKvocijenti se koriste za ponavljanje procedure•• 2211/2 = /2 = 11, 2, 288/2 = 128, 2/2 = 128, 21515/2 = 16384, .../2 = 16384, ...
Konverzija u binarni sustavKonverzija u binarni sustav1122661010
663331311155
77331100
÷÷ 2 =2 =÷÷ 2 =2 =÷÷ 2 =2 =÷÷ 2 =2 =÷÷ 2 =2 =÷÷ 2 =2 =÷÷ 2 =2 =
ostost.. 00ostost.. 11ostost.. 11ostost.. 11ostost.. 11ostost.. 11ostost.. 11
prema goreprema gore
1111111111101022ZAUSTAVI kada ovaj rezultat ZAUSTAVI kada ovaj rezultat
postane nulapostane nula
Rezultat jeRezultat je
ČČitajitajodozdoodozdo
4
Konverzija u binarni sustavKonverzija u binarni sustav
Drugim rijeDrugim riječčimaima . . .. . .
1122661010 = 1101= 110111101022
Krajnji desni bit zoveKrajnji desni bit zove sesethe least significant bitthe least significant bit
(LSB)(LSB)
Krajnji lijevi bit zoveKrajnji lijevi bit zovese se most significant most significant
bitbit (MSB)(MSB)
Rekapitulacija Rekapitulacija -- konverzije u konverzije u binarni sustavbinarni sustav
ZapoZapoččinjemo s dekadskim brojem injemo s dekadskim brojem kojeg pretvaramokojeg pretvaramoPonavljamoPonavljamo::
Podijelimo broj s 2 i ostatak Podijelimo broj s 2 i ostatak 00 ili ili 11zapizapiššemoemoPonavljamo dok broj ne postane Ponavljamo dok broj ne postane jednak nulijednak nuli
Binarni ekvivalent je kompletanBinarni ekvivalent je kompletanČČitamo znamenke u obrnutom itamo znamenke u obrnutom redoslijedu od njihovog nastanka tako redoslijedu od njihovog nastanka tako da je MSB prvi s lijevada je MSB prvi s lijeva
Neke potencije baze 2Neke potencije baze 2
Korisno je zapamtiti barem do Korisno je zapamtiti barem do 221212
2200 = 1= 12211 = 2= 22222 = 4= 42233 = 8= 82244 = 16= 162255 = 32= 322266 = 64= 642277 = 128= 1282288 = 256= 2562299 = 512= 512221010 = 1,024= 1,024221111 = 2,048= 2,048
221212 = 4,096= 4,096221313 = 8,192= 8,192221414 = 16,384= 16,384221515 = 32,768= 32,768221616 = 65,536= 65,536
222020 = 1,= 1, 048,048, 576576
222424 = 16,= 16, 777777 ,,216216
223030 = 1,= 1, 073073 ,,741,741, 824824223131 = 2,= 2, 147,147, 483483 ,,648648223232 = 4= 4 ,,294294 ,,967967 ,,296296
221010 = = je oko je oko 1,000 (1,000 (““kk””))
222020 = je oko = je oko 1,000,000 1,000,000
((““MM””))
5
Pretvaranje binarnog broja u Pretvaranje binarnog broja u dekadskidekadski
22662277 2255 2244 2233 2222 2211 2200
1100 11 11 11 00 11 11
VrijednostVrijednostpozicijepozicije
(64)(64)(128)(128) (32(32)) (16)(16) (8)(8) (4)(4) (2)(2) (1)(1)
ZbrajanjeZbrajanjevrijednosti pozicija za vrijednosti pozicija za
koje je binarna koje je binarna vrijednost 1vrijednost 1
6464 1616 88 22++ ++ ++ == 123123++ 113232++
Pretvaranje binarnog broja u Pretvaranje binarnog broja u dekadskidekadski
Ili, drugim rijeIli, drugim riječčimaima . . .. . .
010111110111011122 = = 1231231010
Indeks oznaIndeks označčava ava bazubazu
Pozicijske vrijednosti za razliPozicijske vrijednosti za različčite brojevne ite brojevne sustavesustave
BAZA VRIJEDNOST2 1001011111103 101000004 2113325 342106 151307 100418 45769 330010 243011 190A12 14A613 114C14 C5815 AC016 97E
Manje bazeManje baze : : manje manje kompaktno, jednostavniji kompaktno, jednostavniji
opseg znamenki, opseg znamenki, jednostavnija matematikajednostavnija matematika
VeVećće bazee baze: : kompaktniji kompaktniji prikazprikaz, , šširi opseg iri opseg znamenkiznamenki, , tetežža a
matematikamatematika
Prikaz dekadskog broja Prikaz dekadskog broja 24302430u bazama od u bazama od 2 2 dodo 1616
6
Pozicijske vrijednosti za razliPozicijske vrijednosti za različčite brojevne ite brojevne sustavesustave
BAZA VRIJEDNOST2 1001011111103 101000004 2113325 342106 151307 100418 45769 330010 243011 190A12 14A613 114C14 C5815 AC016 97E
Znamenke s vrijednostima Znamenke s vrijednostima veveććim od im od 9 9 oznaoznaččavaju se avaju se
slovima slovima A = (10)A = (10)B = (11)B = (11)C = (12)C = (12)D = (13)D = (13)E = (14)E = (14)F = (15)F = (15)
ItdItd..
Pozicijske vrijednosti za razliPozicijske vrijednosti za različčite brojevne ite brojevne sustavesustave
BAZA VRIJEDNOST2 1001011111103 101000004 2113325 342106 151307 100418 45769 330010 243011 190A12 14A613 114C14 C5815 AC016 97E
UobiUobiččajene baze ajene baze (brojevni (brojevni sustava) u sustava) u raraččunanjuunanju
binarnibinarni
heksadekadskiheksadekadski ((““hexhex””))
oktalnioktalni
dekadskidekadski
Rekapitulacija pretvorbe binarnog Rekapitulacija pretvorbe binarnog broja u dekadskibroja u dekadski
Postavi rezultat na nuluPostavi rezultat na nuluZa svaku znamenkuZa svaku znamenku (bit):(bit):
PridruPridružži joj dekadsku vrijednost pozicijei joj dekadsku vrijednost pozicije•• Iz skupa potencija broja 2 Iz skupa potencija broja 2
Ako je binarna znamenka Ako je binarna znamenka (bit) (bit) 1:1:•• Pribroji vrijednost pozicije rezultatuPribroji vrijednost pozicije rezultatu
u suprotnom u suprotnom ((znamenka jeznamenka je 0):0):•• ne pribrajane pribrajašš ninišštata
Ponovi za sve preostale znamenkePonovi za sve preostale znamenkeRezultat je dekadska vrijednost binarnog Rezultat je dekadska vrijednost binarnog brojabroja
7
RazmiRazmiššljajmo binarnoljajmo binarno
Dekadski Binarni Hexa 0 = 0000 = 0 1 = 0001 = 1 2 = 0010 = 2 3 = 0011 = 3 4 = 0100 = 4 5 = 0101 = 5 6 = 0110 = 6 7 = 0111 = 7 8 = 1000 = 8 9 = 1001 = 9
10 = 1010 = A 11 = 1011 = B 12 = 1100 = C 13 = 1101 = D 14 = 1110 = E 15 = 1111 = F
Cjelobrojne vrijednosti bez Cjelobrojne vrijednosti bez predznakapredznaka-- ((UnsignedUnsigned))
Jedan (oktet) bajt (Jedan (oktet) bajt (bytebyte) ima ) ima 8 8 bitabitaKoje podruKoje područčje vrijednosti moje vrijednosti možžemo emo pospremiti u jedan bajtpospremiti u jedan bajt??Najmanja vrijednost:Najmanja vrijednost: 0000000000000000
Svu bitovi su nulaSvu bitovi su nula, , nijedan ne sudjeluje nijedan ne sudjeluje u vrijednosti brojau vrijednosti broja
NajveNajvećća vrijednosta vrijednost: 11111111: 11111111Svi su bitovi jediniceSvi su bitovi jedinice, , svi sudjeluju u svi sudjeluju u vrijednosti brojavrijednosti broja
Cjelobrojne vrijednosti bez Cjelobrojne vrijednosti bez predznakapredznaka-- ((UnsignedUnsigned))
Najmanja vrijednostNajmanja vrijednost (8 bit(8 bitaa))
00 00 00 00 00 00 00 00
2277 2266 2255 2244 2233 2222 2211 2200
(128)(128) (64)(64) (32)(32) (16)(16) (8)(8) (4)(4) (2)(2) (1)(1)
== 00
8
Cjelobrojne vrijednosti bez Cjelobrojne vrijednosti bez predznakapredznaka-- ((UnsignedUnsigned))
NajveNajvećća vrijednosta vrijednost (8 bit(8 bitaa))
11 11 11 11 11 11 11 11
2277 2266 2255 2244 2233 2222 2211 2200
(128)(128) (64)(64) (32)(32) (16)(16) (8)(8) (4)(4) (2)(2) (1)(1)
== 255255128128 6464 3232 1616 88 44 22 11++ ++ ++ ++ ++ ++ ++
Cjelobrojne vrijednosti bez Cjelobrojne vrijednosti bez predznakapredznaka-- ((UnsignedUnsigned))
ZaZa 8 bit8 bitaa::Najmanja reprezentativna vrijednost je Najmanja reprezentativna vrijednost je 00NajveNajvećća reprezentativna vrijednost a reprezentativna vrijednost 255255Svi ostali brojevi između su Svi ostali brojevi između su reprezentativnireprezentativniOstali brojevi nisu reprezentativniOstali brojevi nisu reprezentativni
255 = 2255 = 288 –– 11
Cjelobrojne vrijednosti bez Cjelobrojne vrijednosti bez predznakapredznaka-- ((UnsignedUnsigned))
zaza nn bitbitaanajmanjinajmanji reprezentativni broje je reprezentativni broje je 00•• Sve nuleSve nule
najvenajveććii reprezentativni broje je reprezentativni broje je 22n n –– 11•• Sve jediniceSve jedinice
Svi ostali brojevi između su Svi ostali brojevi između su reprezentativnireprezentativniOstali brojevi nisu reprezentativniOstali brojevi nisu reprezentativni
9
Cjelobrojne vrijednosti bez Cjelobrojne vrijednosti bez predznakapredznaka-- ((UnsignedUnsigned))
C C ima ima unsigned unsigned cjelobrojne vrijednosti cjelobrojne vrijednosti razlirazliččite veliite veliččineine8 bit8 bitaa ((unsigned charunsigned char))
0 0 do do 25525516 bit16 bitaa ((unsigned shortunsigned short))
0 0 dodo 6565 53553532 bit32 bitaa ((unsigned longunsigned long))
0 0 dodo 44,,294294,,967967,,29529564 bit64 bitaa ((unsigned long longunsigned long long))
0 0 dodo1818,,446446,,744744,,073073,,709709,,551551,,615615intint momožže biti e biti shortshort ili ili longlong
Zavisi od raZavisi od raččunala i prevoditeljaunala i prevoditelja
Cjelobrojne vrijednosti s Cjelobrojne vrijednosti s predznakom predznakom -- (S(Signedigned))
Cjelobrojne vrijednosti s Cjelobrojne vrijednosti s predznakom predznakom -- (Signed)(Signed)
Potrebno je rezervirati jedan bit Potrebno je rezervirati jedan bit intigeraintigera za predznak za predznak Jednostavna tehnika za Jednostavna tehnika za predznak predznak vrijednostivrijednosti
MSB = 0: MSB = 0: broj je pozitivanbroj je pozitivanMSB = 1: MSB = 1: broj je negativanbroj je negativan
00 00 00 00 11 11 11 0011 00 00 00 11 11 11 00sign sign
bitbit
= +14= +14= = ––1414
10
Cjelobrojne vrijednosti s Cjelobrojne vrijednosti s predznakom predznakom -- (Signed)(Signed)
Najmanja vrijednostNajmanja vrijednost (8 bit(8 bitaa))
11 00 00 00 00 00 00 00
––2277 2266 2255 2244 2233 2222 2211 2200
((––128)128) (64)(64) (32)(32) (16)(16) (8)(8) (4)(4) (2)(2) (1)(1)
== ––128128––128128
Ovi bitovi ne Ovi bitovi ne predstavljaju predstavljaju 128 kao kod 128 kao kod
unsignedunsignedprikaza prikaza intigeraintigera. .
Cjelobrojne vrijednosti s Cjelobrojne vrijednosti s predznakom predznakom -- (Signed)(Signed)
NajveNajvećća vrijednosta vrijednost (8 bit(8 bitaa))
00 11 11 11 11 11 11 11
––2277 2266 2255 2244 2233 2222 2211 2200
((––128)128) (64)(64) (32)(32) (16)(16) (8)(8) (4)(4) (2)(2) (1)(1)
== +127+1276464 3232 1616 88 44 22 11++ ++ ++ ++ ++ ++
Ovi bitovi Ovi bitovi perdstavljajuperdstavljaju+127 +127 kao i kao i
kod kod unsigned unsigned prikaza prikaza
integeraintegera..
Cjelobrojne vrijednosti s Cjelobrojne vrijednosti s predznakom predznakom -- (Signed)(Signed)
88--bitbitni binarni brojni binarni brojNajmanja prikazana vrijednost jeNajmanja prikazana vrijednost je ––128128NajveNajvećća prikazana vrijednost jea prikazana vrijednost je +127+127Sve ostale vrijednosti između te dvijeSve ostale vrijednosti između te dvije, postoje., postoje.Ostale vrijednost ne postoje.Ostale vrijednost ne postoje.
Pozitivna vrijednost Pozitivna vrijednost <= 127 <= 127 koristi koristi isti isti 88--bitbitni predloni predložžak kao i kod ak kao i kod unsignedunsigned ekvivalentaekvivalenta
11
PozitivniPozitivni
Brojevi Brojevi imajuimaju 0 0 uu MSBMSB
NegativnNegativnii brojevi brojevi imajuimaju 1 1 uu MSBMSB
Cjelobrojne vrijednosti s Cjelobrojne vrijednosti s predznakom predznakom -- (Signed)(Signed)
Dvije moguDvije mogućće interpretacije e interpretacije 88--bitbitnihnihvrijednostivrijednosti SignedSigned dekadskadekadska
vrijednostivrijednosti
+127+1271010+126+1261010+125+1251010
+2+21010+1+11010
001010--111010--221010
--1261261010--1271271010--1281281010
......
......
011111110111111122011111100111111022011111010111110122
000000100000001022000000010000000122000000000000000022111111111111111122111111101111111022
100000101000001022100000011000000122100000001000000022
......
......
BinarnaBinarna
vrijednostvrijednostUnsignedUnsigned dekadskadekadska
vrijednostivrijednosti
127127101012126610101125251010
221010111010001010
25525510102542541010
130130101012912910101281281010
......
......
signed signed i i unsigned unsigned
vrijednosti vrijednosti iste su za iste su za pozitivne pozitivne
brojevebrojeve
signed signed iiunsigned unsigned
vrijednostivrijednostirazlikuju se razlikuju se zaza 256 (2256 (288) )
kod kod negativnihnegativnih
brojevabrojeva
Cjelobrojne vrijednosti s predznakom Cjelobrojne vrijednosti s predznakom --(Signed)(Signed)
Kod Kod nn--bitbitnognog binarnog brojabinarnog broja––xx prikazujemo binarnim kodom sprikazujemo binarnim kodom s 22nn –– xx•• NprNpr.. Prikaz brojaPrikaz broja ––2 2 s s binbin. Kodom je . Kodom je 228 8 ––2 2
= 254= 254To se naziva To se naziva drugi komplement cijelog drugi komplement cijelog broja s predznakombroja s predznakomBroj se prikazuje kao komplement Broj se prikazuje kao komplement potencije broja dva potencije broja dva Opseg vrijednosti je od Opseg vrijednosti je od ––22nn--11 dodo +2+2nn--1 1 ––11
Cjelobrojne vrijednosti s predznakom Cjelobrojne vrijednosti s predznakom --(Signed)(Signed)
C C ima ima signed signed cjelobrojne vrijednosti cjelobrojne vrijednosti razlirazliččite veliite veliččine ine 8 bit8 bitaa ((signed charsigned char))
––128 128 dodo +127+12716 bit16 bitaa ((shortshort))
––32768 32768 dodo +32767+3276732 bit32 bitaa ((longlong))
––22 147147 483483 648 648 dodo +2+2 147147 483483 64764764 bits (64 bits (long longlong long))
––99 223223 372372 036036 854854 775775 808 808 dodo+9+9 223223 372372 036036 854854 775775 807807intint momožže biti i e biti i shortshort i i longlong
12
Cjelobrojne vrijednosti s predznakom Cjelobrojne vrijednosti s predznakom --(Signed)(Signed)
Svojstva drugog komplementa Svojstva drugog komplementa MSB MSB ima negativno vrijednosno mjestoima negativno vrijednosno mjesto ((od od --22nn--11))ninižži bitovi imaju normalno i bitovi imaju normalno (+(+veve) ) vrijednosno vrijednosno mjestomjestopozitivni brojevipozitivni brojevi ((ukljuuključčujuujućći nului nulu))•• moraju imatimoraju imati MSB = 0 MSB = 0 ))•• Nulta vrijednost Nulta vrijednost –– svi bitovi su svi bitovi su 0 0 •• PredloPredložžak bitova je isti kao i kodak bitova je isti kao i kod unsigned unsigned
vrijednostivrijednostinegativninegativni brojevibrojevi•• Moraju imati Moraju imati MSB =1 MSB =1 •• Min vrijednost Min vrijednost ==100100……0000, , maxmax vrijednostvrijednost = =
111111……1111 = = --111010
Cjelobrojne vrijednosti s predznakom Cjelobrojne vrijednosti s predznakom --(Signed)(Signed)
Kako izgledaKako izgleda ++35351010 uu 88--bitbitnomnomdrugom komplementudrugom komplementu??
3535Pozitivan,Pozitivan,tretira se tretira se
kaokaounsignedunsigned
17178844221100
÷÷ 2 = 2 = ÷÷ 2 =2 =÷÷ 2 =2 =÷÷ 2 =2 =÷÷ 2 =2 =÷÷ 2 =2 =
ostost.. 11ostost.. 11ostost.. 00ostost.. 00ostost.. 00ostost.. 11 ČČ i
tam
o pr
ema
itam
o pr
ema
gore
i go
re i
doda
jem
o 0
doda
jem
o 0
do 8
bita
do 8
bita
stopstop
odgovorodgovor: : 0010001100100011
Rezultat Rezultat je je
pozitivanpozitivan: : MSB = 0MSB = 0
Cjelobrojne vrijednosti s predznakom Cjelobrojne vrijednosti s predznakom --(Signed)(Signed)
Kako izgledaKako izgleda --35351010 uu 88--bitbitnomnomdrugom komplementudrugom komplementu??
prikazujemoprikazujemo ––35 35 kaokao 2288 –– 35 = 256 35 = 256 –– 35 = 35 = 221221
221221110110÷÷ 2 = 2 = ostost 115555÷÷ 2 =2 = ostost 002727÷÷ 2 =2 = ostost 111313÷÷ 2 =2 = ostost 1166÷÷ 2 =2 = ostost 1133÷÷ 2 =2 = ostost 0011÷÷ 2 =2 = ostost 1100÷÷ 2 =2 = ostost 11
ČČ ita
mo
itam
o pr
ema
gore
prem
a go
re
odgovorodgovor: : 1101110111011101
Rezultat je Rezultat je negativannegativan: : MSB = 1MSB = 1
13
Cjelobrojne vrijednosti s predznakom Cjelobrojne vrijednosti s predznakom --(Signed)(Signed)
Kako izgledaKako izgleda --35351010 uu 88--bitbitnomnomdrugom komplementudrugom komplementu??
+35+351010 = 00100011= 0010001122PoPoččnemo s nemo s
ekvivalentnim ekvivalentnim pozitivnim pozitivnim
brojembrojemflip flip
bitovabitova
1101110111011101dodamododamo 11
+ 1+ 1
odgovorodgovor: : 1101110111011101
1101110011011100
Rezultat jeRezultat jenegativannegativan: MSB = 1: MSB = 1
Cjelobrojne vrijednosti s Cjelobrojne vrijednosti s predznakom predznakom -- (Signed)(Signed) : : iziz
binarnihbinarnihKoju vrijednost ima Koju vrijednost ima 88--bitbitnini drugi drugi komplementkomplement od od 01100011001111?11?
MSB = 0, MSB = 0, pozitivanpozitivanSamo pretvaramo iz binarnog u dekadski kao Samo pretvaramo iz binarnog u dekadski kao i za i za unsignedunsigned
00 11 11 00 00 11 11 11
––2277 2266 2255 2244 2233 2222 2211 2200((––128)128) (64)(64) (32)(32) (16)(16) (8)(8) (4)(4) (2)(2) (1)(1)
== +103+103++ ++ ++ ++6464 44 22 113232
Cjelobrojne vrijednosti s predznakom Cjelobrojne vrijednosti s predznakom --(Signed)(Signed): iz: iz binarnihbinarnih
Koju vrijednost ima Koju vrijednost ima 88--bitbitnini drugi drugi komplementkomplement od od 11000100?11000100?
MoMožžemo pretvarati kao i kod emo pretvarati kao i kod noramlnihnoramlnihali je ali je MSB MSB jednakjednak ––128128
11 11 00 00 00 11 00 00
––2277 2266 2255 2244 2233 2222 2211 2200((––128)128) (64)(64) (32)(32) (16)(16) (8)(8) (4)(4) (2)(2) (1)(1)
== ––6060++ ++6464 44––128128
14
Cjelobrojne vrijednosti s predznakom Cjelobrojne vrijednosti s predznakom --(Signed)(Signed) : iz: iz binarnihbinarnih
Koju vrijednost ima Koju vrijednost ima 88--bitbitnini drugi drugi komplementkomplement od od 11000100?11000100?
Negiramo taj Negiramo taj ––veve binarni broj u binarni broj u ++veve ekvivalentekvivalent, , pretvorimo u dekadskipretvorimo u dekadski, , negiramo decimalni negiramo decimalni ekvivalentekvivalent
11000100110001000011101100111011
flip flip bitovabitova
++ 11
dodamododamo 11
0011110000111100Pretvaramo iz Pretvaramo iz
binarnog u dekadskibinarnog u dekadski+60+601010
konakonaččnono, , negiramonegiramo dekadsku dekadsku vrijednostvrijednost
odgovorodgovor::––60601010
OktalniOktalni brojevni sustavbrojevni sustav
BazaBaza 88Znamenke odZnamenke od 0 0 dodo 77
Rjeđe se koristeRjeđe se koriste, , jer je jer je hexhex bolji bolji prikazprikaz
Neke aplikacije zahtijevaju rad s Neke aplikacije zahtijevaju rad s oktalnimoktalnim prikazomprikazom
OktalniOktalni i binarnii binarni
4488
01001010010011111110010022
Grupiranje po tri Grupiranje po tri bitabita ““tripletstriplets””
774422
15
HeksadeHeksadekadskikadski brojevnibrojevnisustavsustav
BazaBaza sustavasustava jeje B = 16B = 16, a , a znamenkeznamenkesusu 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
KoristiKoristi se se zaza skraskraććenoeno zapisivanjezapisivanjebinarnogbinarnog sadrsadržžajaaja..Zapis se moZapis se možže dobiti iz dekadskog e dobiti iz dekadskog sukcesivnim dijeljenjem s 16 i sukcesivnim dijeljenjem s 16 i zapisivanjemozapisivanjemo ostataka s desna na ostataka s desna na lijevo, ali i direktno iz binarnog zapisalijevo, ali i direktno iz binarnog zapisa
PrimjerPrimjer::
1616--bitni bitni brojbroj 0111 1011 0011 11100111 1011 0011 1110heksadheksadekadskiekadski ekvivekvivalentalent 7 B 3 E7 B 3 E
HeksadekadskiHeksadekadski brojevni sustavbrojevni sustavBaza brojevnog sustava je Baza brojevnog sustava je 16 16
znamenkeznamenke 0 0 dodo 9, A 9, A dodo FFČČesto koristimoesto koristimo ““hexhex”” zaza shortshort
““HexHex”” se koristi po konvenciji kaose koristi po konvenciji kao shorthandshorthandza pisanje velikih binarnih vrijednostiza pisanje velikih binarnih vrijednostiTo je jednostavnije za To je jednostavnije za ččitanjeitanjeKako raKako raččunalo ne koristi unalo ne koristi ““hexhex”” internointerno, , to je to je dobra skradobra skraććenica za njegove interne enica za njegove interne vrijednostivrijednosti
Sve memorijske adrese i podaci su u binarnom Sve memorijske adrese i podaci su u binarnom kodu, ali mi koristimo kodu, ali mi koristimo ““hexhex”” za njihov prikaz.za njihov prikaz.
Hex Hex u binarniu binarni
55FFEE111616
0001000122
ispisujemoispisujemo 44--bitbitnene binarnebinarneekvivalente za ekvivalente za
svaku svaku hex hex znamenkuznamenku
111011101111111101010101
16
BinarniBinarni uu hexhex
101001111001010011110022
CC1616
Grupiramo znakove Grupiramo znakove u grupe od u grupe od ččetiri etiri
znakaznaka ((““quartetsquartets””) ) s s desna na lijevodesna na lijevo
Dopunimo Dopunimo ispred s ispred s
nulama tako da nulama tako da momožžemo emo grupirati grupirati
znamenke po znamenke po ččetirietiri
00
napinapiššemoemo hex hex ekvivalentekvivalent za za svaku binarnu svaku binarnu ččetvorkuetvorku 3355
Programske baze uProgramske baze u CCU CU C--u ne piu ne piššemo direktno znamenke u emo direktno znamenke u binarnom kodubinarnom koduHexHex broj u Cbroj u C--u piu piššemo s prefiksomemo s prefiksom 0x0x((nulanula, , slovoslovo x)x)
0x53c0x53c (1340 (1340 dekadskidekadski))A do F mogu biti manje ili veA do F mogu biti manje ili veććee
OktalniOktalni broj u Cbroj u C--u piu piššemo s prefiksomemo s prefiksom 00((nulanula))
0247402474 (1340 (1340 dekadskidekadski))Dekadski broj piDekadski broj piššemo direktnoemo direktno
13401340Interno se svi pospremaju u binarnom koduInterno se svi pospremaju u binarnom kodu
Adresiranje cjelobrojnim Adresiranje cjelobrojnim unsignedunsigned brojevimabrojevima
17
Adresiranje memorijeAdresiranje memorije
01101110011011100101101001011010000000000000000001011010010110101101001111010011
Za referiranje na bajtZa referiranje na bajt, , moramo ga moramo ga momoćći razlikovati od ostalih bajtovai razlikovati od ostalih bajtova
jedanjedan bitbitbajtbajt (8 (8 bitbit--aa))
ostaliostalibajtovibajtovi
Bajt kojem Bajt kojem žželimo elimo
pristupitipristupitiMilijun i viMilijun i višše e bajtova u oba bajtova u oba
smjerasmjera
AdresiranjeAdresiranje: : analogijaanalogija
ULICA
MEMORIJE
4141 43 43 je na je na prodajuprodaju
4242 4444
NA PRODAJU
Adresiranje memorijeAdresiranje memorijeSvaka memorijska lokacija ima jedinstvenu Svaka memorijska lokacija ima jedinstvenu adresuadresu
Adresa je Adresa je uvijek uvijek integerinteger (cjelobrojni) podatak (cjelobrojni) podatak Ne postoje dvije memorijske lokacije s istom Ne postoje dvije memorijske lokacije s istom adresomadresom
Adrese su sekvencijalne (jedna iza druge)Adrese su sekvencijalne (jedna iza druge)najninajnižža adresaa adresa 00najvinajviššaa adresaadresa zavisizavisi od kapaciteta memorije od kapaciteta memorije raraččunala unala
Lokacija adrese je nezavisna od njenog Lokacija adrese je nezavisna od njenog sadrsadržžajaaja
Promjene sadrPromjene sadržžaja neke memorijske lokacije aja neke memorijske lokacije nenećće ponie ponišštiti njezinu adresutiti njezinu adresu
18
Adresiranje memorijeAdresiranje memorije
01101110011011100101101001011010000000000000000001011010010110101101001111010011
1101111011011110
1101100111011001
00
10430104301043110431104321043210433104331043410434
1677721516777215
Adrese od Adrese od 1 1 ddo o 10,429 10,429 su ispusu ispušštene tene
radi prikaza na radi prikaza na dijagramudijagramu
Adrese od Adrese od 10,43510,435 dodo16,777,21416,777,214 su su
ispuispušštene radi prikaza tene radi prikaza nana dijagramudijagramu
RaRaččunalo ima unalo ima 16,777,216 16,777,216 bajtabajta (16 (16 megamegabajtabajta) ) memorijememorije
NajniNajnižža a adresaadresa
NajviNajvišša a adresaadresa
Adresiranje memorijeAdresiranje memorije
01101110011011100101101001011010000000000000000001011010010110101101001111010011
1101111011011110
1101100111011001
NajniNajnižža a adresaadresa
NajviNajvišša a adresaadresa
00
1043110431104321043210433104331043410434
1677721516777215
Bajt (Bajt (bytebyte)) na na adresiadresi 1043104344
sadrsadržžii1101001111010011
1043010430
CjelobrojneCjelobrojne konstantekonstante
KonstanteKonstante u Cu C--u u pisanepisane u u dekadskojdekadskoj notacijinotaciji::77 2020 6464 --110110 80928092 65535655353456782134567821
34567821L 34567821L --17698794l17698794l (na starim (na starim prevodiocima)prevodiocima)
KonstanteKonstante pisanepisane u u oktalnojoktalnoj notacijinotaciji::0707 024024 01000100 01560156 017634 0177777017634 0177777KonstanteKonstante pisanepisane u u heksadekadskojheksadekadskoj notacijinotaciji0x70x7 0x140x14 0x40 0x6E0x40 0x6E 0x1F9C 0x1F9C 0xFFFF0xFFFF 0xFFFF0xFFFFFFFFFFFFKonstante bKonstante bezez predznakapredznaka pipiššu se su se s UU iliili uu nana krajukraju5645U5645U 3978u3978u 0x7EBU 0x7EBU 0xFFFF0xFFFFFFFFUFFFFU
19
ŠŠto je realni brojto je realni broj??•• 7 2.5 7 2.5 --17.5 1000 0 871236173.876372317.5 1000 0 871236173.8763723
•• ⅓⅓ ππ ee
•• 3.141592653589793238462643383279502884197169 3.141592653589793238462643383279502884197169 ≠≠ ππ•• 0.333333333333333333333333333333333333333333 0.333333333333333333333333333333333333333333 ≠≠ ⅓⅓
nene postojipostoji nanaččin na koji bi se u rain na koji bi se u raččunalu mogao pohraniti unalu mogao pohraniti svakisvaki realni broj. Pohranjuju se priblirealni broj. Pohranjuju se približžnene vrijednostivrijednosti realnihrealnihbrojevabrojeva..
PrikazPrikaz realnihrealnih brojevabrojeva u u raraččunaluunalu
Programski jezik C ne propisuje preciznost tipova Programski jezik C ne propisuje preciznost tipova floatfloat, , doubledouble i i longlong doubledouble, ali vrijedi da , ali vrijedi da floatfloat ne mone možže biti e biti precizniji od precizniji od doubledouble, te , te doubledouble ne mone možže biti precizniji od e biti precizniji od longlong doubledouble::
floatfloat ≤≤ doubledouble ≤≤ longlong doubledouble
Realni tip podatka u jeziku CRealni tip podatka u jeziku C
float
long
double
Primjer dPrimjer deefinicijefinicije varijablvarijablii u u programskomprogramskom jezikujeziku C:C:ffloatloat x;x;doubledouble y;y;
longlong doubledouble z;z;
PPretvaranjretvaranjee decimalnog broja iz decimalnog broja iz dedekadskokadskog g u u binarnibinarni brojevni sustavbrojevni sustav
CjelobrojniCjelobrojni diodio dekadskogdekadskog brojabroja pretvarapretvara se u se u binarnibinarniuzastopnimuzastopnim dijeljenjemdijeljenjem, a , a decimalnidecimalni uzastopnimuzastopnimmnomnožženjemenjem s 2, s 2, gdjegdje cjelobrojnicjelobrojni diodio dobivenihdobivenih produkataprodukatatvoritvori decimalne decimalne znamenkeznamenke binarnog brojabinarnog broja..1.25 = 1.25 = 11 + + .25.25
.25 * 2 .25 * 2 1 . 0 11 . 0 100.50.50
.5 * 2.5 * 211.0.0
20
MnoMnožženjeenje s 2s 2nn i 2i 2--nn
BinarniBinarni brojbroj se se mnomnožžii s s potencijamapotencijama bazebaze 2 2 takotako dada se se binarnabinarna totoččkaka pomaknepomakne odgovarajuodgovarajuććii brojbroj mjestamjesta desnodesnoiliili lijevolijevo, , ovisno o tome ovisno o tome jeje li li predznakpredznak potencijepotencije pozitivanpozitivaniliili negativannegativan..Na Na primjerprimjer::
1 1 1 1 1 1 * 2* 222 = = 1 1 11 1 1 0 00 01 .1 1 1 .1 1 * 2* 2--22 = = 0 . 00 . 0 1 1 11 1 1
Kako, mKako, međutimeđutim, u registar pohraniti to, u registar pohraniti toččku?ku?
Pohrana realnih brojeva u raPohrana realnih brojeva u raččunaluunalu
Realni brojevi u raRealni brojevi u raččunalu se pohranjuju u normaliziranom unalu se pohranjuju u normaliziranom obliku.obliku.
Kako normalizirani broj pohraniti u registar?Kako normalizirani broj pohraniti u registar?
IEEE (Institute of Electrical and Electronics Engineers) IEEE (Institute of Electrical and Electronics Engineers) standard 754standard 754 definira nadefinira naččin pohrane in pohrane realnihrealnih brojevabrojeva
Znanstvena notacijaZnanstvena notacija
Znanstvena notacija za realne brojeveZnanstvena notacija za realne brojeve::
mantissamantissa ×× basebase exponentexponent
U C, izraz: 12.456e-2
znači: 12.456 × 10-2
21
Znanstvena notacija Znanstvena notacija
MantisaMantisa je uvijek je uvijek normalizirananormalizirana izmeđuizmeđu 1 1 i baze i baze ((tjtj, , samo jedan znasamo jedan značčajan znak prije toajan znak prije toččke)ke)NenormaliziranNenormaliziran NormaliziranNormaliziran
29972997..9 9 ×× 101055 22..9979 9979 ×× 110088
B1B1..39FC 39FC ×× 16161111 BB..139FC 139FC ×× 16161212
0.00.010110110101 10110110101 ×× 22--11 11..0110110101 0110110101 ×× 22--33
Prikaz realnog brojaPrikaz realnog broja
Realni broj Realni broj nn je prikazan s je prikazan s aproksimacijom u aproksimacijom u pomipomiččnom zarezu (nom zarezu (floatingfloating--pointpoint)) n*n*RaRaččunalo koristi unalo koristi 32 bit32 bitaa ((ili viili viššee) ) za pohranu svake za pohranu svake aproksimacijeaproksimacije
RaRaččunalo treba pohranitiunalo treba pohraniti
•• mantisumantisu
•• predznak predznak mantisemantise
•• EksponentEksponent ((s njegovim predznakoms njegovim predznakom))
31 30 02223
Prikaz realnog brojaPrikaz realnog broja
Standardni naStandardni naččin alokacije in alokacije 32 bit32 bitaa (IEEE (IEEE SStandardtandard754) 754) je:je:•• 23 bit23 bitaa za za mantisumantisu•• 1 bit 1 bit za predznak za predznak mantisemantise•• 8 8 bita za eksponentbita za eksponent
22
Tip podatkaTip podatka u u programskomprogramskom jezikujeziku C:C: floatfloatKoristi se 4 okteta (32 bita)Koristi se 4 okteta (32 bita)Realni broj se pohranjuje u obliku Realni broj se pohranjuje u obliku
31 30 23 2231 30 23 22 00P P KarakteristikaKarakteristika MantisaMantisa
P P jeje predznakpredznak (P(P == 11: : negativannegativan broj; broj; PP == 00:: pozitivanpozitivan brojbroj))KarakteristikaKarakteristika: : binarnibinarni eksponenteksponent + 127 (+ 127 (time se omogutime se omoguććuje pohrana uje pohrana negativnognegativnog eksponentaeksponenta bez upotrebe tehnike dvojnog komplementa)bez upotrebe tehnike dvojnog komplementa)
RasponRaspon karakteristikekarakteristike: K : K ∈∈[0,255].[0,255].RasponRaspon binarnogbinarnog eksponentaeksponenta BE BE ∈∈ [[--126,127]126,127]
Pohranjuje se mPohranjuje se mantisaantisa iz koje je uklonjena vodeiz koje je uklonjena vodećća jedinica (skriveni bit)a jedinica (skriveni bit)
RRealnealnii brojevbrojevii standardnestandardne preciznostipreciznosti
31 30 02223
Prikaz realnog brojaPrikaz realnog broja
•• 23 bit23 bitaa za za mantisumantisu•• 1 bit 1 bit za predznak za predznak mantisemantise•• 8 8 bita za eksponentbita za eksponent
31 30 02223
Prikaz realnog broja Prikaz realnog broja ((nastnast..))
•• 23 bit23 bitaa za za mantisumantisu•• 1 bit 1 bit za predznak za predznak mantisemantise•• 8 8 bita za eksponentbita za eksponent
23
31 30 02223
Prikaz realnog broja Prikaz realnog broja ((nastnast..))
•• 23 bit23 bitaa za za mantisumantisu•• 1 bit 1 bit za predznak za predznak mantisemantise•• 8 8 bita za eksponentbita za eksponent
MantisaMantisa je u rasponuje u rasponu1 1 ≤≤ mantisamantisa < < babazaza
Tako Tako •• Ako imam bazuAko imam bazu 22,, znamenka ispred toznamenka ispred toččke mora biti 1ke mora biti 1
•• I stoga se mi ne moramo brinuti za njezinu pohranuI stoga se mi ne moramo brinuti za njezinu pohranute tako imamo te tako imamo 24 bit24 bitnunu preciznostpreciznost uporabomuporabom 23 bit23 bitaa
Prikaz Prikaz mantisemantise
Prikaz Prikaz mantisemantise
24 bit24 bitna preciznost na preciznost je ekvivalentna broju od je ekvivalentna broju od najmanje najmanje 7 decimal7 decimalnihnih znamenkiznamenki ::
24log2 10
≈ 7.2
24
Prikaz Prikaz mantisemantise
Trebamo li pohraniti Trebamo li pohraniti ππ::3.1415926535897932384626433832795.....3.1415926535897932384626433832795.....To znaTo značči da ga moi da ga možžemo pohraniti emo pohraniti samo na sljedesamo na sljedećći nai naččin:in:
3.1415923.141592 ((odreodrežžemoemo))3.1415933.141593 ((zaokruzaokružžimoimo))
Prikaz eksponentaPrikaz eksponenta
Eksponent se prikazuje kao Eksponent se prikazuje kao excessexcess--127127. . ExcessExcess--n (n broj bita za prikaz eksponenta) ran (n broj bita za prikaz eksponenta) raččuna se una se prema formuli 2 prema formuli 2 nn--11 –– 1. Ako koristimo 8 bita za predznak tada je 1. Ako koristimo 8 bita za predznak tada je excessexcess--n=127 (2n=127 (288--11 –– 1) = 1271) = 127Vrijedi da je K = BE + 127 odnosno BE = K Vrijedi da je K = BE + 127 odnosno BE = K -- 127127
Stvarni eksponentStvarni eksponent Pohranjena vrijednostPohranjena vrijednost--127127 ↔↔ 0000000000000000--126126 ↔↔ 0000000100000001
. . .. . .00 ↔↔ 0111111101111111
+1+1 ↔↔ 1000000010000000. . .. . .
ii ↔↔ ((ii+127)+127)22
. . .. . .+128+128 ↔↔ 1111111111111111
Prikaz eksponentaPrikaz eksponenta
IEEE standard IEEE standard ograniograniččava eksponent na podruava eksponent na područčje:je:––126 126 ≤≤ eeksksponentponent ≤≤ +127+127
EksponentiEksponenti ––127 and +128 127 and +128 imaju posebno znaimaju posebno značčenjeenje: : •• Ako je eksponentAko je eksponent = = ––127, 127, pohranjena vrijednost je 0pohranjena vrijednost je 0•• Ako je eksponentAko je eksponent = 128, = 128, pohranjena vrijednost jepohranjena vrijednost je ∞∞
25
Primjer prikaza brojaPrimjer prikaza broja01011011 (801011011 (8--bitbitni strojni stroj) ?) ?
0 0 101 101 10111011sign sign exp exp mantissamantissa
MantisaMantisa:: 1.10111.1011EEksksponentponent (excess(excess--3 format):3 format): 55--3=23=2
1.1011 1.1011 ×× 2222 ⇒⇒ 110.11110.11110.11110.1122 = 2= 22 2 + + 221 1 + 2+ 2--1 1 + 2+ 2--2 2
= 4 + 2 + 0.5 + 0.25 = 6.75= 4 + 2 + 0.5 + 0.25 = 6.75
Primjer prikaza brojaPrimjer prikaza brojaprikaprikažžimoimo --10.375 (3210.375 (32--bitbitni strojni stroj))
10.37510.3751010 = 10 + 0.25 + 0.125 = 10 + 0.25 + 0.125 = 2= 233 + 2+ 211 + 2+ 2--22 + 2+ 2--33
= 1010.011= 1010.0112 2 ⇒⇒ 1.0100111.01001122 ×× 2233
PredznakPredznak: 1: 1MantisaMantisa:: 010011010011EEksksponentponent (excess(excess--127 format):127 format):3+127 = 1303+127 = 13010 10 = 10000010= 1000001022
1 10000010 01001100000000000000000
PrimjerPrimjer: : PrikazatiPrikazati brojbroj 5.75 5.75 kaokao realnirealni brojbroj
1. Realni dekadski broj prikazati u obliku realnog binarnog broja5.7510 = 101.112
2. Odrediti predznak: broj je pozitivan, stoga je P = 03. Normalizirati binarni broj
101.112·20 = 1.01112·22
4. Izračunati karakteristiku i izraziti ju u binarnom oblikuK = 2K = 21010 + 127+ 1271010 = 129= 1291010 = = 1000 00011000 000122
5. Izbaciti vodeću jedinicu iz mantise (skriveni bit)MantisaMantisa ((bezbez skrivenogskrivenog bitabita i decimalne toi decimalne toččkeke)) = 0= 011111122
6. Prepisati predznak, karakteristiku i mantisu bez skrivenog bita u registar
P Karakteristika Mantisa
0 10000001 01110000000000000000000
0100 0000 1011 1000 0000 0000 0000 000022
4 4 0 B 0 B 8 0 8 0 0 0 0 0 0 0 1616
26
RasponRaspon i i preciznostpreciznost realnihrealnih brojevabrojevastandardne preciznostistandardne preciznosti
NajmanjiNajmanji pozitivnipozitivni brojbroj ≠≠ 00 kojikoji se se momožžee prikazatiprikazati jeje: :
0.000000000000000000000010.0000000000000000000000122 *2*2--126126 šštoto iznosiiznosi 1.4012984643248171.401298464324817 **1010--4545
NajveNajveććii pozitivnipozitivni brojbroj kojikoji se se momožžee prikazatiprikazati jeje::
1.111111111111111111111111.1111111111111111111111122 * 2* 2127127 ≈≈ 22128128 = 3.402823669209= 3.402823669209 *10*103838
Preciznost pohrane broja s Preciznost pohrane broja s mantisommantisom veliveliččineine 24 24 binarnebinarneznamenkeznamenke jeje::2224 24 ≈≈ 1010xx 24 log 2 24 log 2 ≈≈ x log10 x log10 x x ≈≈ 24 log 2 24 log 2 == 7.2247198959367.224719895936
((podrazumijeva se podrazumijeva se 77 prvihprvih vavažžeeććihih znamenkiznamenki).).
Tip podatkaTip podatka u u programskomprogramskom jezikujeziku C:C: doubledouble
Koristi se 8 okteta (64 bita)Koristi se 8 okteta (64 bita)Realni broj se pohranjuje u oblikuRealni broj se pohranjuje u obliku63 62 63 62 52 51 52 51 00P P KarakteristikaKarakteristika MantisaMantisa
P P jeje predznakpredznak (P(P == 11: : negativannegativan broj; broj; PP == 00:: pozitivanpozitivan brojbroj))KarakteristikaKarakteristika: : binarnibinarni eksponenteksponent + + 10231023 (11 (11 bitabita))
RasponRaspon karakteristikekarakteristike: K : K ∈∈[0,[0,20472047].].RasponRaspon binarnogbinarnog eksponentaeksponenta BE BE ∈∈ [[--1102022,2,10231023]]
MantisaMantisa (52+1 bit).(52+1 bit).
RealniRealni brojevibrojevi dvostrukedvostruke preciznostipreciznosti
RealniRealni brojevibrojevi dvostrukedvostruke preciznostipreciznosti
Posebni sluPosebni sluččajeviajevi•• Kada je K = 0 i svi bitovi Kada je K = 0 i svi bitovi mantisemantise su nula radi se o broju nulasu nula radi se o broju nula•• Kada je K = 0 i postoje bitovi Kada je K = 0 i postoje bitovi mantisemantise koji nisu 0, tada se radi o koji nisu 0, tada se radi o
denormaliziranomdenormaliziranom brojubroju•• Kada je K = 2047 i svi bitovi Kada je K = 2047 i svi bitovi mantisemantise su 0 radi se o +su 0 radi se o +∞∞ ili ili --∞∞•• Kada je K = 2047 i postoje bitovi Kada je K = 2047 i postoje bitovi mantisemantise koji nisu 0, tada se ne koji nisu 0, tada se ne
radi o prikazu broja (NaN)radi o prikazu broja (NaN)
27
RasponRaspon i i preciznostpreciznost realnihrealnih brojevabrojevadvostrukedvostruke preciznostipreciznosti
NajmanjiNajmanji pozitivnipozitivni brojbroj ≠≠ 00 kojikoji se se momožžee prikazatiprikazati jeje: :
0.0000 ...001 *0.0000 ...001 * 22--10221022 šštoto jeje 4.9406 *4.9406 * 1010--324324
NajveNajveććii pozitivnipozitivni brojbroj kojikoji se se momožžee prikazatiprikazati jeje::
1.1111.....1111111.1111.....11111122 * 2* 210231023 ≈≈ 2210241024 = 1.797693134862316= 1.797693134862316 *10*10308308
Preciznost pohrane broja s Preciznost pohrane broja s mantisommantisom veliveliččineine 5353 binarnebinarneznamenkeznamenke jeje::2253 53 ≈≈ 1010xx 53 log 2 53 log 2 ≈≈ x log10 x log10 x x ≈≈ 53 log 2 53 log 2 == 15.9545897701915.95458977019
((podrazumijeva se podrazumijeva se 1515 prvihprvih vavažžeeććihih znamenkiznamenki).).
PRIMJERPRIMJER
Zadan je binarni decimalni broj kao mini float (10 bita). Prikazati ga u oblikuPredznak (normalizirana binarna mantisa) x 2(decimalni exponent)
Pretvori broj u dekadski ekvivalent.1 1010 11001
Rješenje:Bit predznaka = 1 - radi se o negativnom broju
Karakteristika je = 10102 = 1010.
BE (binarni eksponent) = K (karakteristika) – 23 – 1= 10 – 7 = 3Uključivši skriveni bit 1 u mantisi normalizirana mantisa ima oblik : 1.11001 x 23
Odnosno ekvivalentni oblik sveden na x 20 je : -1110.012 = -14.2510
PRIMJERPRIMJER
00 1000111010001110 1010000000000000000000010100000000000000000000RjeRješšenje: To je C 32enje: To je C 32--bit bit floatfloat format. format. Bit predznaka = 0 Bit predznaka = 0 -- radi se o pozitivnom brojuradi se o pozitivnom broju
Karakteristika je = 10001110Karakteristika je = 1000111022 =(128 + 14)=(128 + 14)1010..
BE (binarni eksponent) = K (karakteristika) BE (binarni eksponent) = K (karakteristika) –– 127= 128 +14 127= 128 +14 --127=15127=15
UkljuUključčivivšši skriveni bit 1 u i skriveni bit 1 u mantisimantisi normalizirana normalizirana mantisamantisa ima oblik : ima oblik : 1.110100000000000000000000 x 21.110100000000000000000000 x 21515
Odnosno ekvivalentni oblik sveden na x 2Odnosno ekvivalentni oblik sveden na x 200 je : +1101.0 x 2je : +1101.0 x 21212 = +13.0 x = +13.0 x 4096 = +532484096 = +532481010
28
PRIMJERPRIMJER
11 0111100001111000 01110000000000000000000 01110000000000000000000
RjeRješšenje: To je C 32enje: To je C 32--bit bit floatfloat format. format. Bit predznaka = 1 Bit predznaka = 1 -- radi se o negativnom brojuradi se o negativnom broju
Karakteristika je = Karakteristika je = 011110000111100022 = = 64 + 32 + 16 + 8 = 96 + 24 = 120.64 + 32 + 16 + 8 = 96 + 24 = 120.
BE (binarni eksponent) = K (karakteristika) BE (binarni eksponent) = K (karakteristika) –– 127= 120127= 120--127 = 127 = --77
UkljuUključčivivšši skriveni bit 1 u i skriveni bit 1 u mantisimantisi normalizirana normalizirana mantisamantisa ima oblik : ima oblik : --1.01110000000000000000000 x 21.01110000000000000000000 x 2--77
Odnosno ekvivalentni oblik je : Odnosno ekvivalentni oblik je : --10111.0 x 210111.0 x 2--4 4 x 2x 2--77
--10111.0 x 210111.0 x 2--1111 = = --23.0 x 1/2048 = 23.0 x 1/2048 = --0.0112304680.0112304681010
PRIMJERPRIMJER
00 1000000100010000001000 00000101000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000
RjeRješšenje: To je C enje: To je C ““doubledouble”” 6464--bit bit floatfloat format. format. Bit predznaka = 0 Bit predznaka = 0 -- radi se o pozitivnom brojuradi se o pozitivnom broju
Karakteristika je = Karakteristika je = 100000010001000000100022 = (1024 + 8= (1024 + 8 ))1010..
BE (binarni eksponent) = K (karakteristika) BE (binarni eksponent) = K (karakteristika) –– 1023= 1024 +8 1023= 1024 +8 --1023= 91023= 9
UkljuUključčivivšši skriveni bit 1 u i skriveni bit 1 u mantisimantisi normalizirana normalizirana mantisamantisa ima oblik : ima oblik : +1.0000010100000000000000000000000000000000000000000000+1.0000010100000000000000000000000000000000000000000000 x x 2299
Odnosno ekvivalentni oblik sveden na x 2Odnosno ekvivalentni oblik sveden na x 200 je : je : +1000001010+100000101022 = = +(512 + 8 + +(512 + 8 + 2) = +5222) = +5221010
PRIMJERPRIMJER
Pretvori dekadsku vrijednost u binarni float format duljine 10 bita ( 1 bit za predznak 4 bita za karakteristiku i 5 bita za mantisu) :-6.7 kao "mini-float".
» Rješenje: Kako je broj negativan Bit predznaka = 1. Cijeli dio broja 6 u binarnom obliku je 110. Sada pretvorimo 0.7 u binarni decimalni dio:2 x 0.70 = 0.40 + 12 x 0.40 = 0.80 + 02 x 0.80 = 0.60 + 12 x 0.60 = 0.20 + 12 x 0.20 = 0.40 + 0
tako da je 0.7 = 0.101102 za 5-bitnu preciznost-6.710 = - 110.10110 = - 1.1010110 x 22 u normaliziranom obliku
BE =2. K = BE + 7 = 2 + 7 = 9 = 10012Kombiniramo bit predznaka = 1, Karakteristiku = 1001, i mantisu = 10101 (bez skrivenog bita 1) daje :1 1001 10101 kao mini float's reprezentacija broja -6.7
29
RealneRealne konstantekonstante
1. 2.34 9e1. 2.34 9e--8 8.345e+258 8.345e+25 doubledouble2f 2.34F 2f 2.34F --1.34e5f1.34e5f floatfloat1.L 2.34L 1.L 2.34L --2.5e2.5e--37L37L long doublelong double