Predstavljanje brojeva

Računar može raditi sa celim i racionalnim brojevima (brojevi koji imaju decimale). Celi brojevi se beleže u određenom broju bajtova. Od toga koliko bajtova se izdvoji za beleženje broja zavisi i opseg – koji je najveći broj koji može biti zabeležen. Kod predstavljanja celih brojeva razlikujemo:

Na primer, ako je broj 16-bitni, znači da je za njegovo beleženje potrebno izdvojiti 2 bajta (8 + 8 bitova). Pogledajmo opseg neoznačenih brojeva koji mogu biti zabeleženi u ovoliko memorije:

najmanja vrednost najveća moguća vrednost
binarno 00000000 00000000 11111111 11111111
heksadekadno 0000 FFFF
dekadno 0 65535

Drugim rečima, ako se broj beleži unutar N bitova, opseg će biti od 0 do 2N-1. Za 16 bitova tako imamo da je 216 = 65536, što znači da je opseg od 0 do 65535.

Međutim, ako su brojevi označeni, onda je jedan bit potrebno izdvojiti za znak broja, što znači da se najveći broj koji je moguće zapisati u istom broju bitova prepolovljuje.

Po nekoj logici, negativni brojevi trebalo bi da budu manji od pozitivnih, ali ispostavlja se da ako označen broj 32767, zapisan u 2 bajta, povećamo za 1, dobijamo najniži negativan broj -32768. Ovo naizgled nelogično ponašanje je lako objašnjivo ako primetimo da je kod negativnih brojeva najjači, 16-ti bit, uvek postavljen na 1.

negativni brojevi pozitivni brojevi
binarno 10000000 00000000 do 11111111 11111111 00000000 00000000 do 01111111 11111111
heksadekadno 8000 do FFFF (-8000 do -0001) 0000 do 7FFF
dekadno -32768 do -1 0 do 32767

Ipak, negativni brojevi se ne dobijaju tako što se pozitivnom broju najviši bit samo postavi na 1. Da bismo dobili ispravan negativan broj, moramo ga izračunati kao tzv. potpuni komplement zadatog pozitivnog broja. Na sledećem primeru izračunavamo broj -5:

Broj 5 u 16-bitnom binarnom zapisu 00000000 00000101
Nepotpuni komplement tako dobijenog binarnog broja je 11111111 11111010
(invertujemo binarne cifre: 0 postaje 1, a 1 postaje 0)
Potpuni komplement broja 5 (nepotpuni sabiramo sa 1) predstavlja broj -5 11111111 11111011

Znači -5 nije kako bismo pretpostavili 10000000 00000101, već 11111111 11111011.

Racionalni brojevi

Osim celih brojeva, računar može raditi i sa racionalnim (razlomljenim) brojevima, odnosno brojevima sa decimalama. Postoji više načina da se ovi brojevi predstave, ali jedan od najkorišćenijih je beleženje brojeva u pokretnom zarezu.

Brojevi tzv. jednostruke (single) tačnosti beleže se u 4 bajta, ali na sasvim drugačiji način u odnosu na cele brojeve. Naime, ovi brojevi se pamte beleženjem mantise i eksponenta:

Drugim rečima, kao M * 2E.

U 32-bitnom zapisu (single precision), raspored bitova je sledeći:

Z 7 bitova za eksponent 24 bita za značajne decimale mantise u apsolutnoj vrednosti (u najvišem bitu (Z) beleži se znak)
 

Sa druge strane, u manjem, 16-bitnom zapisu (half precision), bitovi se koriste na sledeći način:

Z 5 bitova za eksponent 10 bitova za decimale (bit Z je za znak)
 

Ovaj zapis se koristi kada su potrebna jako brza izračunavanja, a preciznost nije od "životne" važnosti, na primer u kompjuterskim igrama. U široj upotrebi u programskim jezicima je još i 64-bitni zapis, koji se još naziva i zapisom dvostruke preciznosti (double).

Eksponent se kodira u obliku binarnog ofseta, što znači da središnja vrednost (10000) predstavlja 0. Najmanja vrednost 00000 je najmanji negativni broj, a najveća 11111 je najveći pozitivan broj. Da bismo razumeli, evo jednostavnog primera sa samo 3 bita:

000 -4
001 -3
010 -2
011 -1
100 0
101 1
110 2
111 3

Mantisa se dobija kao niz binarnih decimala posle jedinice 1.xxxxxxxxxx. Ovaj niz cifara se naziva još i precizne cifre ili signifikant (significand).

Međutim, dve vrednosti eksponenta imaju posebna značenja - to su 00000 i 11111. Kada je eksponent jednak 0, tada se mantisa računa navođenjem preciznih cifara posle nule, odnosno kao 0.xxxxxxxxxx. Kada je eksponent jednak 11111, onda broj predstavlja beskonačnu vrednost ili grešku, zavisno od toga da li je signifikant 0 ili ne.

Kada je bit za znak setovan na 1, u pitanju je negativan broj. Pogledajmo jedan primer 16-bitnog zapisa:

znak eksponent signifikant
bitovi 1 10110 1100000101
1 6 1100000101
značenje - 26 1.1100000101
binarna vrednost -1110000.0101
dekadna vrednost -112.3125

Najvažnije što treba da znamo jeste da kod ovih brojeva opseg (od najvećeg do najmanjeg broja) ne igra veliku ulogu. Naime, na ovaj način je moguće predstaviti izuzetno velike (kada je eksponent pozitivan), kao i izuzetno male brojeve (negativan eksponent).

Ono što nas interesuje u vezi brojeva u pokretnom zarezu je njihova preciznost (tačnost). Preciznost broja zavisi od broja bitova koji je određen za beleženje mantise, a u slučaju broja jednostruke tačnosti taj broj je oko 7 dekadnih cifara.

Zamislimo na trenutak broj koji može da zabeleži samo tri precizne cifre u svojoj mantisi i opseg eksponenta od -9 do 9. Pogledajmo primer veoma velikog i veoma malog broja:

0,123 * 109 123000000,0000...
0,123 * 10-9 0,0000000001230000...

Prvi primer pokazuje veoma veliki broj, ali neprecizan – sve značajne cifre se nalaze na početku broja, a ostatak su nule. Isto važi i za drugi primer – izuzetno mali broj, kod koga su sve značajne cifre grupisane, dok su sve ostale cifre jednake nuli.

Osim brojeva jednostruke preciznosti, postoje i brojevi dvostruke (double) preciznosti (64 bita), pa i četvorostruke (quadruple) preciznosti koji se zapisuju u 128 bitova.

Za važna naučna i matematička istraživanja često su potrebni i veći i precizniji brojevi. Čak iako procesor ne podržava ovako velike brojeve, postoje programi i programerske biblioteke koji uspešno simuliraju izuzetno velike vrednosti brojeva i veoma visoku preciznost. Rad sa ovako velikim brojevima je svakako sporiji, ali što se tiče njihove veličine, ograničeni su samo slobodnom memorijom računara.

Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies). Detaljnije o tome možete pročitati u tekstu o našoj politici privatnosti.