You are on page 1of 5

Programiranje 2 [LV1]

Elektrotehnicki fakultet Osijek

Zapis cijelih i realnih brojeva u racunalu


Laboratorijska vjezba 1

Uvod

Brojeve u racunalu prikazujemo binarnim brojem. Pretvorba brojeva se vrsi na nacin


opisan u poglavlju Brojevni sustavi. Iako u C programskom jeziku broj bitova int i float
tipova podataka nije definiran, na sustavima koje najcesc e srecemo su implementirani
kao 32 bitni podaci. Zato c emo primjere prikazivati zapisane u 32 bitne registre.

Zapis cijelih brojeva u racunalu

Raspon cijelih brojeva koje mozemo zapisati u 32-bitni registar je od broja 0 ( nula ) do
broja 4, 29 109 ( 0 do 232 1 ). To su pozitivni cijeli brojevi. Kako bi mogli zapisati
i negativne cijele brojeve, prvi bit s lijeve strane ( najznacajniji bit MSB ) predstavlja
predznak broja a ostalih 31 bitova odreduje vrijednost cijelog broja.
Ako je prvi bit s lijeve strane 0 ( nula ), broj zapisan u registru je pozitivan, a ako
je
taj
bit 1, broj je negativan.
Na taj nacin mozemo zapisati cijele brojeve iz intervala


9
9
2.15 10 , 2.15 10 ( od 231 + 1 do 231 1 ). Binarni brojevi kojima je prvi bit s lijeve
strane 0 (nula) pretvaraju se u dekadske brojeve na uobicajen nacin, a za brojeve kojima
je bit predznaka 1 provodi se poseban postupak.

2.1

Prebacivanje cijelog negativnog dekadskog broja u binarni 32


bitni zapis u registru

Postupak pretvaranja cijelog negativnog dekadskog broja u 32-bitni binarni zapis je


slijedeci:
pamti se predznak: -

Slika 1: Zapis cjelobrojne vrijednosti u 32 bitnom registru.

Programiranje 2 [LV1]

Elektrotehnicki fakultet Osijek

uzima se apsolutna vrijednost broja ( pozitivna vrijednost ) i taj broj se pretvara u


binarni
nad binarnim brojem se radi komplementiranje unarni komplement
unarnom komplementu se dodaje 1
Primjer:
Zadan je broj 37. Broj je potrebno prebaciti u 32-bitni binarni zapis u registru.
Uzimamo apsolutnu vrijednost
broja:
Broj 37 pretvaramo u binarni:
i nadopunjavamo ga
s nulama do 32 bita:
zatim radimo komplement:
i dodajemo 1:
i dobivamo rje
senje:

2.2

|-37| = 37
37 (10) = 100101(2)
0000 0000 0000 0000 0000 0000 0010 0101

1111 1111 1111 1111 1111 1111 1101 1010


1
--------------------------------------1111 1111 1111 1111 1111 1111 1101 1011

Prebacivanje negativnog binarnog broja u dekadski

Postupak prebacivanja negativnog binarnog broja u dekadski je slijedeci:


potrebno je zapamtiti da je predznak nad binarnim brojem se radi komplement (unarni komplement) (svaki bit se komplementira: 1 0, 0 1 )
komplementu se dodaje vrijednost 1 i unarni komplement postaje dvojni komplement
binarni broj se nakon dvojnog komplementiranja pretvara u dekadski
ispred dobivenog dekadskog broja se stavlja predznak -
Primjer:
Zadan je 32-bitni binarni broj 1000 0000 0010 1011 0000 0000 0000 0000(2) koji
se nalazi u memorijskom registru. Broj je potrebno pretvoriti u dekadski.
1000 0000 0010 1011 0000 0000 0000 0000 vidimo da je broj negativan jer
je prvi bit s lijeve strane 1.

Programiranje 2 [LV1]

Elektrotehnicki fakultet Osijek

Potrebno je napraviti
komplement binarnog broja:
koji izgleda ovako:
zatim dodajemo broj 1:
dobivamo dvojni komplement:

1000 0000 0010 1011 0000 0000 0000 0000

0111 1111 1101 0100 1111 1111 1111 1111


1
--------------------------------------0111 1111 1101 0101 0000 0000 0000 0000

Taj broj treba pretvoriti u dekadski:


i dodati mu predznak "-" pa broj iznosi:

2144665600
-2144665600

Zapis realnih brojeva u racunalu

Realni brojevi u racunalu (float tip podatka u programskom jeziku C) zapisuju se u memorijske registre velicine 32 bita. Raspon

realnih brojeva koje mo
z
emo zapisati u 32-bitni

registar je unutar sljedecih intervala: 3.4 1038 , 3.4 1038 ; 3.4 1038 , 3.4 1038
Takav broj ima 7 decimalnih znamenki.

Slika 2: Zapis realne vrijednosti u 32 bitnom registru.

Ako je prvi bit s lijeve strane 0 (nula) broj zapisan u registru je pozitivan, a ako je
taj bit 1 broj je negativan. Kako bi se izbjegao prikaz negativnih brojeva u eksponentu
dogovoreno je da se broju u eksponentu doda broj 127.

3.1

Pretvaranje broja iz dekadskog zapisa u binarni

Postupak pretvaranja binarnog zapisa u dekadski je identican i za pozitivne i za negativne realne brojeve. Uzima se apsolutna vrijednost broja i ovisno o velicini broja radi
se jedan od sljedecih postupaka:

Programiranje 2 [LV1]
1.

Elektrotehnicki fakultet Osijek

ako je broj veci ili jednak 2 broj se dijeli s 2 sve dok je veci od 2 i pamti se
broj dijeljenja (p)
broj se dijeli s 2p
u dio za eksponent upisuje se vrijednost E = p + 127, u binarnom zapisu (8
bita)
razlomacki dio se racuna tako da se uzme dio broja 0.f, mnozi se s 2 te zapisuje
prijenos koji upisujemo u dio registra od 23. bita na desno

2.

ako je broj veci od 0 i manji od 1 broj se mnozi s 2 sve dok je broj manji od
1 i pamti se broj mnozenja (p)
broj se dijeli s 2p (ili mnozi s 2p )
u dio za eksponent upisuje se vrijednost E = p + 127, u binarnom zapisu (8
bita)
razlomacki dio se racuna tako da se uzme dio broja 0.f, mnozi se s 2 te zapisuje
prijenos koji upisujemo u dio registra od 23. bita na desno

3.

ako je broj veci ili jednak 1 i manji od 2 p = 0, E = 127


razlomacki dio se racuna tako da se uzme dio broja 0.f, mnozi se s 2 te zapisuje
prijenos koji upisujemo u dio registra od 23. bita na desno

Primjer:
Kao primjer pokazat c emo pretvaranje broja 32.5 u binarni zapis u registru za realne
brojeve.
32.5 : 25 = 1.015625
32.5 = 1.015625 25
Za prvi broj mantise je uzet broj 1 koji se ne pohranjuje u racunalo i naziva se skriveni
bit. Sada znamo: f = 0.015625 i p = 5.
E = p + 127 = 5 + 127 = 132
Binarni zapis broja 132 je 1000 0100 i taj broj se zapisuje od 31. do 24. bita u registar
(E). Sada je potrebno broj 0.015625 pretvoriti u binarni.
0.015625
0.03125
0.0625
0.125
0.25
0.5
0

x
x
x
x
x
x
x

2
2
2
2
2
2
2

=
=
=
=
=
=
=

0.03125
0.0625
0.125
0.25
0.5
1
0

0
0
0
0
0
1
0
4

Programiranje 2 [LV1]

Elektrotehnicki fakultet Osijek

Znaci, binarni zapis razlomackog dijela glasi:


0000 0100 0000 0000 0000 000.
Sada mozemo zapisati cijeli binarni broj u registar:
0 1000 0100 0000 0100 0000 0000 0000 000.
U slucaju da se radilo o negativnom broju, samo bi se prvi bit promijenio u vrijednost
1.

Zadaci za vjezbu
1. Napisati C program koji s tipkovnice ucitava 16-bitni binarni broj kao niz znakova
(0 i 1) u znakovno polje. Potrebno je izracunati i na ekran ispisati dekadski zapis
ucitanog cijelog binarnog broja.
2. Napisati C program koji s tipkovnice ucitava cijeli broj. Potrebno je izracunati i na
ekran ispisati binarni zapis ucitanog broja u 32-bitnom registru.
3. Pretvorite brojeve: 18.14, 1.125, 2.0 i 0.15625 u binarni zapis u 32-bitnom registru
za realne brojeve.
4. Napisati C program koji s tipkovnice ucitava realni broj. Potrebno je izracunati i
na ekran ispisati binarni zapis tog realnog broja u 32-bitnom registru.
5. Isti zadatak izvesti s funkcijom BinBr koja racuna i vraca vrijednost binarnog zapisa
realnog broja u 32-bitnom registru.

You might also like