You are on page 1of 14

Zapis brojeva u raunalu

ZAPIS BROJEVA U RAUNALU ........................................................................................................................ 2

ZAPIS POZITIVNIH CIJELIH BROJEVA .............................................................................................................................. 2
Zbrajanje cijelih pozitivnih brojeva ................................................................................................................. 3
ZAPIS NEGATIVNIH BROJEVA POMOU APSOLUTNE VRIJEDNOSTI ........................................................................................ 4
ZAPIS NEGATIVNIH BROJEVA METODOM DVOJNOG KOMPLEMENTA .................................................................................... 6
Komplement binarnog broja .......................................................................................................................... 8
Dvojni komplement binarnog broja ................................................................................................................ 8
ZAPIS REALNIH BROJEVA U RAUNALU ........................................................................................................................ 10
Binarni brojevi sa decimalnom tokom ........................................................................................................ 10
Pretvorba iz dekadskog u binarni (s decimalnom tokom) ........................................................................... 10
Mnoenje i dijeljenje binarnih brojeva sa 2 .................................................................................................. 11
IEEE 754 zapis realnih brojeva u raunalu jednostrukom preciznou ...................................................... 12
Prikaz realnih brojeva u 32 bita (jednostruka preciznost) ........................................................................... 12
Primjer 1) ................................................................................................................................................................... 12
Primjer 2) ................................................................................................................................................................... 13
Primjer 3) ................................................................................................................................................................... 13
Primjer 4) ................................................................................................................................................................... 13
Primjer 5) ................................................................................................................................................................... 14

Danijel Ptiar

[1]

Zapis brojeva u raunalu

Svaki procesor ima drugaije tipove podatka s kojima moe raunati. Najei tip podatka s kojima
procesori mogu raunati su cijeli brojevi (integer) i realni brojevi (float). Preciznost, odnosno veliina
broja s kojim moe raunati takoer ovisi o vrsti procesora. Dananji procesori ugraeni u stolna
raunala su uglavnom 32 ili 64 bitni, to znai da raunalo ima 32 odnosno 64 bita na raspolaganju da
pohrani broj. Intel 286 procesor (proizvodio se od 1982. do 1990 god.) je bio 16 bitni procesor, dok je
Intel 386 (proizvodio se od 1985 2007. Godine) bio 32 bitni procesor. Da bi procesor raunao s
nekim brojem potrebno je taj broj pohraniti u REGISTAR. REGISTAR moete gledati kao privremenu
varijablu u koju moramo spremiti broj s kojim elimo raunati. Procesor moe imati 1 ili vie
registara.

Zapis pozitivnih cijelih brojeva

Zbog jednostavnosti gledati emo procesor koji ima registar veliine 4 bit-a. Analogno je s 32
odnosno 64 bitnim procesorima.
U 4 bita moemo pohranit 24 = 16 razliitih kombinacija. Brojevi se pohranjuju standardno, tako da
Broj
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Binarni
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

Vidimo da je najvei cijeli pozitivan broj koji moemo zapisati u 4 bitni registar 24 1 =
15

Danijel Ptiar

[2]

Zapis brojeva u raunalu

Zbrajanje cijelih pozitivnih brojeva
Procesor kad zbraja dva cijela pozitivna broja ustvari zbraja 2 binarna broja koja su jednaka brojevima
koje elimo zbrojiti.
Ako na primjer zadamo 4 bitnom raunalu da zbroji 6+8, ono e pretvoriti ta dva broja u binarne i
zbrojiti ih.
6
8
14

=
=
=

0110
1000
1110

Ono to nas zanima je to e se desiti ako je zbroj dva broja vei nego registar procesora ?
Kada je zbroj dva broja vei nego registar, procesor jednostavno ignorira bit koji je izvan veliine
registra.

15
1
0

=
=
=

1111
0001
10000

15
2
1

=
=
=

1111
0010
10001

Tako je ako imamo 4 bitni registar 15+1=0, 15+2=1. Odnosno kad doemo do najveeg broja,
poinjemo iz poetka.

Danijel Ptiar

[3]

Zapis negativnih brojeva pomou apsolutne vrijednosti

Zapis negativnih brojeva pomou apsolutne vrijednosti ne koristi raunalo, ali ga nekad koriste
programeri da si oznae negativne brojeve. Ako se koristi zapis brojeva pomou apsolutne
vrijednosti onda prvi bit sa lijeve strane oznaava predznak. Ako je prvi lijevi bit jednak 1 onda je broj
negativan, inae je pozitivan. Preostali bitovi predstavljaju broj.
Tako bi kod 4 bitnog raunala tablica brojeva prikazanih pomou apsolutne vrijednosti izgledala kao u
tablici.
Broj
0
1
2
3
4
5
6
7
0
-1
-2
-3
-4
-5
-6
-7

Binarni
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

Dvije su loe strane zapisa brojeva na ovaj nain. Manje loa strana je da je broj nula zapisan dva
puta, kao 0000 i 1000.
Druga loa strana je da zbrajanje 2 ovako zapisana binarna broja ne daju dobar rezultat.
6
=
0110
-2 =
1010
0
= 10000
Vidimo da ako zbrojimo 6 i -2 dobijemo 0, to nije tono !
Iz tog razloga raunalo zapisuje negativne brojeve metodom dvojnog komplementa.
Primjer 1)
Ako je u registru od 8 bitova metodom apsolutne vrijednosti zapisan broj 1010 11102, koji je to broj u
bazi 10.
1010 11102 7 bit (ako ponemo brojati od nula s desno na lijevo) je 1 pa je to negativan broj.
Gledamo preostalih 7 bitova 010 11102=46. Znai 1010 11102 = - 4610.

Danijel Ptiar

[4]

Zapis brojeva u raunalu

Primjer 2)
Ako je u registru od 8 bitova metodom apsolutne vrijednosti zapisan broj 10 11102, koji je to broj u
bazi 10.
Nadopunimo nule 0010 11102 7 bit (ako ponemo brojati od nula s desno na lijevo) je 0 pa je to
pozitivan broj.
Gledamo preostalih 7 bitova 010 11102=46. Znai 10 11102 = 4610.
Primjer 3)
Kako izgleda binarni zapis broja -1310 metodom apsolutne vrijednosti u registru od 8 bitova?
Kako je registar 8 bitni za zapis broja imamo 7 bitova na raspolaganju, a sedmi bit nam slui za
predznak. (7 bit ako brojimo od nula, osmi bit ako brojimo od jedan!!)
-1310=1??? ????
Broj 13 u binarnom zapisu ima oblik 11012. Nadodamo s desne strane 3 nule tako da imamo 7 bitova.
1310 = 00011012
Zadnji bit s desne strane e biti 1 (jer je broj negativan)
-1310=1000 11012
Primjer 4)
Kako izgleda binarni zapis broja -1310 metodom apsolutne vrijednosti u registru od 5 bitova?
Kako je registar 5 bitni za zapis broja imamo 4 bita na raspolaganju, a 4 bit bit nam slui za predznak.
-1310=1????
Broj 13 u binarnom zapisu ima oblik 11012. Ne moramo nadodavati nule jer broj 13 ima 4 bita.
Zadnji bit s desne strane e biti 1 (jer je broj negativan)
-1310=111012
Primjer 5)
Kako izgleda binarni zapis broja -1310 metodom apsolutne vrijednosti u registru od 16 bitova?
-1310=1000 0000 0000 11012
Primjer 6)
Kako izgleda binarni zapis broja 1310 metodom apsolutne vrijednosti u registru od 16 bitova?
1310=0000 0000 0000 11012

Danijel Ptiar

[5]

Zapis negativnih brojeva metodom dvojnog komplementa

Procesori zapisuju cijele brojeve metodom dvojnog komplementa. Brojevi zapisani na taj nain mogu
se normalno zbrajati.
Binarni broj zapisan metodom dvojnog komplementa u registru veliine k bitova pretvara se u
dekadski tako da prvih k-1 bitova s desne strane pretvorimo u dekadski broj, te ako je prvi lijevi bit
jednak jedan tom broju dodamo 2k 1 .

bk 1 2k 1 + bk 2 2k 2 + bk 3 2k 3 + ... + b1 21 + b0 20
bk 1bk 2bk 3 ...b1b0 =
Gdje je bi i-ta binarna znamenka (poinjemo brojati od 0)
Primjer brojeva zapisanih dvojnim komplementom kod 4 bitnog raunala
Broj
0
1
2
3
4
5
6
7
-8
-7
-6
-5
-4
-3
-2
-1

Binarni
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

Primjer 1)
Ako je u 4 bitnom registru zapisan broj 1011 metodom dvojnog komplementa pretvorit emo ga u

23

22

21

20

1011 = 1 2 + 0 22 + 1 21 + 1 20 =8 + 2 + 1 =510
3

Primjer 2) Ako je u 4 bitnom registru metodom dvojnog komplementa zapisan broj 1110

23

22

21

20

1110 = 1 2 + 1 22 + 1 21 + 0 20 =8 + 4 + 2 =210
3

Danijel Ptiar

[6]

Zapis brojeva u raunalu

Jo jedno dobro svojstvo brojeva zapisanih metodom dvojnog komplementa je da procesor ne mora
znati da li je broj zapisan metodom dvojnog komplementa da bi zbroji dva cijela broja.
Dvojni k.
0
1
2
3
4
5
6
7
-8
-7
-6
-5
-4
-3
-2
-1

Broj
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Binarni
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

Broj 1101 moe biti -3 ili 13 (ovisno da li je broj zapisan metodom dvojnog komplementa ili ne), broj
0010 je 2 u oba sluaja.
-3 ili 13
2

1101
0010
1111
Broj 1111 je -1 ili 15, to odgovara zbroju (-3+2)=1, odnosno (13+2)=15
Idemo pogledati to se deava ako zbrojimo 1101 + 1110.
1101 = -3 ili 13
1110 = -2 ili 14
-3 ili 13
-2 ili 14

1101
1110
11011
1101+1110 = 1011 = -510 ili 1110
-2 + -3 = -5 tima
-3 + 14 = 11 tima
-2 + 13 = 11 tima

13 + 14 = 13 + 2
+
1 +
11 =

14

Danijel Ptiar

15
+ 1 + 11 = 11 tima

[7]

Zapis brojeva u raunalu

Komplement binarnog broja
Komplement binarnog broja dobijemo tako da zamijenimo sve jedinice za nule, a nule za jedinice. Da
bi napravili komplement binarnog broja moramo znati veliinu registra.
Primjer : Registar veliine 8 bitova, ako je A=00101101, Akomplement=11010010

Dvojni komplement binarnog broja

Dvojni komplement binarnog broja dobijemo tako da komplementu binarnog broja dodamo 1.
Primjer : registar 4 bit-a
A=0100=410
Ak=1011

Ak

+
=

1011
0001
1100

Dvojni komplement broja 1100 je (0011+1)=0100=410

Primjer 1)
U registru od 32 bita zapisan je broj 11111111100, koji je to broj ?
Moemo to raunati na nain da zbrajamo teinske faktore, odnosno

231 + 230 + 229 + 228 + ... + 23 + 22 + 0 + 0 . U ovom sluaju lake je izraunati dvojni komplement
broja da dobijemo apsolutnu vrijednost naeg negativnog broja.
A=11111111100
AK=0000000011
Znai 11111111100 = -410

Danijel Ptiar

[8]

Zapis brojeva u raunalu

Primjer 2)
Kako izgleda binarni zapis broja -1310 metodom dvojnog komplementa u registru od 8 bitova?
Pogledamo koji je zapis broja 13. 1310= 11012
Nadodamo nule tako da imamo 8 znamenaka 1310= 000011012.
Traimo dvojni komplement broja = 000011012!
Komplement broja 000011012 je 1111 0010
Da bi dobili dvojni komplement komplementu dodamo 1 1111 0010 + 1 = 1111 00112
Znai da broj -1310 metodom dvojnog komplementa u registru od 8 bitova ima oblim 1111 00112.
Moemo napraviti i provjeru.
1111 00112 = -1*2^7 + 1*2^6 +1*2^5 +1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 1*2^0 =
= -128 + 64 + 32 + 16 + 0 + 0 + 2 + 1 = -1310.
(* je mnoenje, 2^4 = 24 = 16)
Primjer 3)
Kako izgleda binarni zapis broja 1310 metodom dvojnog komplementa u registru od 8 bitova?
Pogledamo koji je zapis broja 13. 1310= 11012
Nadodamo nule tako da imamo 8 znamenaka 1310= 000011012.
Primjer 4)
U registru od 8 bita zapisan je broj 101010102, koji je to broj ?
101010102= -1*2^7 + 0*2^6 +1*2^5 +0*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 =
= -128 + 32 + 8 + 2 = -8610.
Moemo to rijeiti i tako da traimo dvojni komplement.
Neka je A = 101010102.
Akomplement= 01010101
Advojni komplement=01010101 + 1 = 010101102 = 8610
Kako je ADK=86, slijedi da je A = -86.

Danijel Ptiar

[9]

Zapis realnih brojeva u raunalu

Realni brojevi u raunalu zapisuju se standardom IEEE754. Da bi mogli razumjeti standard IEEE754
prvo moramo analizirati kako se zapisuju binarni brojevi sa decimalnom tokom.
Binarni brojevi sa decimalnom tokom

Ako imamo binarni broj ( zn ....z3 z2 z1 z0 .z1 z2 ...z m + 2 z m +1 z m )2 , njegov zapis u dekadskom sustavu je

(z

2n + .... + z3 23 + z2 22 + z1 21 + z0 20 + z1 21 + z2 22 + ... + z m +1 2 m +1 + z m 2 m

10

Primjer : (1110101.0101)2 = ( ? )10

6 5 4 3 2 1 0 1 2 3 4 6
5
4
3
2
1
0
1
2
3
4
1110101. 0 1 0 1 = 1 2 + 1 2 + 1 2 + 0 2 + 1 2 + 0 2 + 1 2 + 0 2 + 1 2 + 0 2 + 1 2

2
1
1
1
1
2
4
8
16 10

1 1
4 +1
5
= 117 + + = 117 +
= 117 + = 117.3125
4 16
16
16

Pretvorba iz dekadskog u binarni (s decimalnom tokom)

Primjer : (7.1875)10 = ( ? )2
1. Prvo pretvorimo cijeli dio broja u binarni.

( 7 )10 = (111)2

piemo
0.1875*2=

0,375

0.375*2=

0,75

0.75*2=

1,5

0.5*2=

Danijel Ptiar

[10]

Zapis brojeva u raunalu

Treba primijetiti da brojevi koji u dekadskom zapisu imaju konaan broj decimala, ne moraju imati
konaan broj decimala u binarnom obliku.
Primjer : 0.210= ? 2
0,2
0,4
0,8
0,6
0,2
0,4
0,8
0,6
0,2
0,4
0,8
0,6
0,2
0,4
0,8
0,6

*2
*2
*2
*2
*2
*2
*2
*2
*2
*2
*3
*4
*5
*6
*7
*8

=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

0,4
0,8
1,6
1,2
0,4
0,8
1,6
1,2
0,4
0,8
1,6
1,2
0,4
0,8
1,6
1,2

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1

Vidimo da broj 0.2 u binarnom zapisu ima beskonano mnogo znamenaka. Kod takvih brojeva obino
odluimo na koliko decimala emo prikazivati broj.
Tako ako u gornjem primjeru na primjer odluimo zaokruiti na 8 decimala imamo broj

0.001100112 = 23 + 24 + 27 + 28 =

51
= 0.19921875 , to je priblino 2.
256

Iz istog razloga raunala esto imaju male pogreke prilikom raunanja sa realnim brojevima.

Mnoenje i dijeljenje binarnih brojeva sa 2

Kada binarni broj mnoimo sa 2 decimalnu toku pomiemo za jedno mjesto u desno, dok kada
dijelimo binarni broj sa 2 decimalnu toku pomiemo za jedno mjesto u lijevo.

1102
Primjer : 112 2 =

310

610

Primjer : 112 : 2 = 1.12

310

1.510

Analogno ako binarni broj mnoimo sa 2k decimalnu toku pomiemo za k mjesta u desno, a kada
binarni broj dijelimo sa 2k decimalnu toku pomiemo za k mjesta u lijevo.
Mnoenje binarnog broja sa 2 k isto je kao i dijeljenje binarnog broja sa 2k , odnosno pomiemo
decimalnu toku za k mjesta u lijevo.

Danijel Ptiar

[11]

IEEE 754 zapis realnih brojeva u raunalu jednostrukom preciznou

Svaki binarni broj moemo zapisati u normaliziranom obliku, odnosno u obliku (1) SGN (1.M 2 ) 2 BE .
Primjer 1) 1011.1010
= 1.0111010 23 , ovdje je M = 0111010 , BE=3, SGN=0

= 1.01 23 , ovdje je M = 01 , BE=-3, SGN=0

Primjer 2) 0.00101
Primjer 3) 0.00101 =
1.01 23 , ovdje je M = 01 , BE=-3, SGN=1
SGN oznaava predznak.
BE = binarni eksponent
M = mantisa
Prikaz realnih brojeva u 32 bita (jednostruka preciznost)
Prikaz realnih brojeva u 32 bita sastoji se od 3 dijela :

SGN = Predznak (1 bit)

K = karakteristika = 127+BE ( 8 bita)
M = Mantisa (23 bita)

SGN

karakteristika

mantisa

Primjer 1)
0

Broj=(-1)0*(1. 01000000000000 000000000*201111100-01111111)

SGN = 0
K=0111110
Mantisa = 01000000000000000000000
Slijedei broj pretvorimo u bazu-10

1.01000000000000000000000 = 1+0.25=1.25

(10)

Pomnoimo 1.25 sa 2124-127 1.25*2-3=0.15625(10)

Moemo i na slijedei nain

1.01000000000000000000000 * 2

Danijel Ptiar

=0.001012= 23 + 25 =
0.1562510

-3

[12]

Primjer 2)
1

Broj=(-1)1*(1. 11001100000000 000000000*200010101-01111111)

SGN = 1
K=1000000
BE = K 127 = 1
Mantisa = 11001100000000000000000
Slijedei broj pretvorimo u bazu-10
1.11001100000000000000000=1+0.5+0.25+0.03125+0.015625=1.796875(10)
Pomnoimo 1.796875 sa 2128-127 1.796875*2=3.59375
Kako je predznak 1 rjeenje je broj -3.59375
PRIPAZITI DA NPR. NEBI KAD PRETVARAMO BIN U FLOAT ODUZELI POBRKALI KARAKTERISTIKU I
BINARNI EKSPONENT.
BINARNA POTENCIJA JE JEDNAKA 2 NA KARAKTERISTIKA-127
BE = K -127
Primjer 3)
Uzmimo broj 11.01(2)=3(10)+0.25(10)=3.25(10)
Broj 11.01 moemo napisati kao 1.101*21
Predznak je : 0
BE = 1
K = 127+BE=127+1=128
Mantisa je : 101000000000000
Karakteristika je : 128 (1+127) odnosno 10000000(2)
0 10000000 10100000000000000000000
----------------------------------------------------------------------------------------------------------------------Primjer 4)
Broj -0.125(10)=-0.001(2)
-0.001(2) se moe napisati kao -1.0*2-3
Predznak je : 1 ( jer je broj negativan)
BE=-3
Karakteristika je : 124 ( 127+(-3)=124) odnosno 01111100
Mantisa je : 00000000000000000000000

Danijel Ptiar

[13]

Zapis brojeva u raunalu

Broj zapisan u raunalu ima oblik : 1 01111100 00000000000000000000000
----------------------------------------------------------------------------------------------------------------------Primjer 5)
Uzmimo broj 0.1(10) taj broj nema konaan zapis u bazi dva.
Idemo ga pretvoriti u bazu-2
Cijeli dio
0,1

0,2

0,2

0,4

0,4

0,8

0,8

1,6

0,6

1,2

0,2

0,4

0,4

0,8

Vidimo da e se sada poeti sve ponavljati pa broj 0.1(10)=0.00011001100110011001100110011..(2)

To moemo zapisati kao 1.10011001100110011001100110011001100110011(2)*2-4
Predznak je : 0 (broj je pozitivan)
Karakteristika je : 123 ( 127+(-4)=123 ) = 01111011(2)
Mantisa bi trebala biti 1001100110011001100110011001100110. .. Ali kako mantisa ima 23 bita, a
24 bit je 1 onda zaokruujemo 23 bit na 1 pa dobijemo