You are on page 1of 5

Programiranje 2 [LV1] Elektrotehni cki fakultet Osijek

Zapis cijelih i realnih brojeva u ra cunalu


Laboratorijska vje zba 1
1 Uvod
Brojeve u ra cunalu prikazujemo binarnim brojem. Pretvorba brojeva se vr si na na cin
opisanupoglavljuBrojevni sustavi. IakouCprogramskomjezikubroj bitova int i float
tipova podataka nije deniran, na sustavima koje naj ce s ce sre cemo su implementirani
kao 32 bitni podaci. Zato cemo primjere prikazivati zapisane u 32 bitne registre.
2 Zapis cijelih brojeva u ra cunalu
Raspon cijelih brojeva koje mo zemo zapisati u 32-bitni registar je od broja 0 ( nula ) do
broja 4, 29 10
9
( 0 do 2
32
1 ). To su pozitivni cijeli brojevi. Kako bi mogli zapisati
i negativne cijele brojeve, prvi bit s lijeve strane ( najzna cajniji 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 na cin mo zemo zapisati cijele brojeve iz intervala

2.15 10
9
, 2.15 10
9

( od 2
31
+1 do 2
31
1 ). Binarni brojevi kojima je prvi bit s lijeve
strane 0 (nula) pretvaraju se u dekadske brojeve na uobi cajen na cin, 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
slijede ci:
pamti se predznak: -
Slika 1: Zapis cjelobrojne vrijednosti u 32 bitnom registru.
1
Programiranje 2 [LV1] Elektrotehni cki 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: |-37| = 37
Broj 37 pretvaramo u binarni: 37 (10) = 100101(2)
i nadopunjavamo ga
s nulama do 32 bita: 0000 0000 0000 0000 0000 0000 0010 0101
zatim radimo komplement: 1111 1111 1111 1111 1111 1111 1101 1010
i dodajemo 1: + 1
---------------------------------------
i dobivamo rjesenje: 1111 1111 1111 1111 1111 1111 1101 1011
2.2 Prebacivanje negativnog binarnog broja u dekadski
Postupak prebacivanja negativnog binarnog broja u dekadski je slijede ci:
potrebno je zapamtiti da je predznak -
nad binarnim brojem se radi komplement (unarni komplement) (svaki bit se kom-
plementira: 1 0, 0 1 )
komplementu se dodaje vrijednost 1 i unarni komplement postaje dvojni komple-
ment
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.
2
Programiranje 2 [LV1] Elektrotehni cki fakultet Osijek
Potrebno je napraviti
komplement binarnog broja: 1000 0000 0010 1011 0000 0000 0000 0000
koji izgleda ovako: 0111 1111 1101 0100 1111 1111 1111 1111
zatim dodajemo broj 1: + 1
---------------------------------------
dobivamo dvojni komplement: 0111 1111 1101 0101 0000 0000 0000 0000
Taj broj treba pretvoriti u dekadski: 2144665600
i dodati mu predznak "-" pa broj iznosi: -2144665600
3 Zapis realnih brojeva u ra cunalu
Realni brojevi ura cunalu(oat tippodatka uprogramskomjezikuC) zapisujuse umem-
orijske registre veli cine 32 bita. Raspon realnih brojeva koje mo zemo zapisati u 32-bitni
registar je unutar sljede cihintervala:

3.4 10
38
, 3.4 10
38

3.4 10
38
, 3.4 10
38

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 identi can i za pozitivne i za nega-
tivne realne brojeve. Uzima se apsolutna vrijednost broja i ovisno o veli cini broja radi
se jedan od sljede cih postupaka:
3
Programiranje 2 [LV1] Elektrotehni cki fakultet Osijek
1. ako je broj ve ci ili jednak 2 broj se dijeli s 2 sve dok je ve ci od 2 i pamti se
broj dijeljenja (p)
broj se dijeli s 2
p
u dio za eksponent upisuje se vrijednost E = p + 127, u binarnom zapisu (8
bita)
razloma cki dio se ra cuna tako da se uzme dio broja 0.f, mno zi se s 2 te zapisuje
prijenos koji upisujemo u dio registra od 23. bita na desno
2. ako je broj ve ci od 0 i manji od 1 broj se mno zi s 2 sve dok je broj manji od
1 i pamti se broj mno zenja (p)
broj se dijeli s 2
p
(ili mno zi s 2
p
)
u dio za eksponent upisuje se vrijednost E = p + 127, u binarnom zapisu (8
bita)
razloma cki dio se ra cuna tako da se uzme dio broja 0.f, mno zi se s 2 te zapisuje
prijenos koji upisujemo u dio registra od 23. bita na desno
3. ako je broj ve ci ili jednak 1 i manji od 2 p = 0, E = 127
razloma cki dio se ra cuna tako da se uzme dio broja 0.f, mno zi se s 2 te zapisuje
prijenos koji upisujemo u dio registra od 23. bita na desno
Primjer:
Kao primjer pokazat cemo pretvaranje broja 32.5 u binarni zapis u registru za realne
brojeve.
32.5 : 2
5
= 1.015625
32.5 = 1.015625 2
5
Za prvi broj mantise je uzet broj 1 koji se ne pohranjuje u ra cunalo 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 x 2 = 0.03125 0
0.03125 x 2 = 0.0625 0
0.0625 x 2 = 0.125 0
0.125 x 2 = 0.25 0
0.25 x 2 = 0.5 0
0.5 x 2 = 1 1
0 x 2 = 0 0
4
Programiranje 2 [LV1] Elektrotehni cki fakultet Osijek
Zna ci, binarni zapis razloma ckog dijela glasi:
0000 0100 0000 0000 0000 000.
Sada mo zemo zapisati cijeli binarni broj u registar:
0 1000 0100 0000 0100 0000 0000 0000 000.
Uslu caju da se radilo o negativnombroju, samo bi se prvi bit promijenio u vrijednost
1.
4 Zadaci za vje zbu
1. Napisati C program koji s tipkovnice u citava 16-bitni binarni broj kao niz znakova
(0 i 1) u znakovno polje. Potrebno je izra cunati i na ekran ispisati dekadski zapis
u citanog cijelog binarnog broja.
2. Napisati C program koji s tipkovnice u citava cijeli broj. Potrebno je izra cunati i na
ekran ispisati binarni zapis u citanog 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 u citava realni broj. Potrebno je izra cunati i
na ekran ispisati binarni zapis tog realnog broja u 32-bitnom registru.
5. Isti zadatakizvesti s funkcijomBinBr koja ra cuna i vra ca vrijednost binarnogzapisa
realnog broja u 32-bitnom registru.
5

You might also like