Download pdf - Osnove Programiranja

Transcript
Page 1: Osnove Programiranja

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

Page 2: Osnove Programiranja

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)

Page 3: Osnove Programiranja

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

Page 4: Osnove Programiranja

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””))

Page 5: Osnove Programiranja

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

Page 6: Osnove Programiranja

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

Page 7: Osnove Programiranja

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

Page 8: Osnove Programiranja

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

Page 9: Osnove Programiranja

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

Page 10: Osnove Programiranja

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

Page 11: Osnove Programiranja

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

Page 12: Osnove Programiranja

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

Page 13: Osnove Programiranja

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

Page 14: Osnove Programiranja

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

Page 15: Osnove Programiranja

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

Page 16: Osnove Programiranja

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

Page 17: Osnove Programiranja

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

Page 18: Osnove Programiranja

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

Page 19: Osnove Programiranja

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

Page 20: Osnove Programiranja

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

Page 21: Osnove Programiranja

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

Page 22: Osnove Programiranja

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

Page 23: Osnove Programiranja

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

Page 24: Osnove Programiranja

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 ∞∞

Page 25: Osnove Programiranja

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

Page 26: Osnove Programiranja

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)

Page 27: Osnove Programiranja

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

Page 28: Osnove Programiranja

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

Page 29: Osnove Programiranja

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