next up previous contents index
Next: Relativna greška Up: Još o greškama Previous: Cijeli brojevi   Sadržaj   Indeks

Realni brojevi

Za kompjuterski zapis realnog broja obično se koristi format $ (2,32)$ ili $ (2,64).$ Za prvi format se kaže da se radi o jednostrukoj, a za drugi o dvostrukoj preciznosti.

U formatu $ (\beta,p)$ realni broj se zapisuje u obliku

$\displaystyle \pm d_0.d_{-1}d_{-2}d_{-3}\cdots d_{p} \times \beta^e,$

gdje su $ d$ znamenke $ 0\leqslant d_i<\beta,$ a $ e$ je eksponent. Tako je u formatu $ (2,32)$ $ \beta=2,$ $ p=32,$ a znamenke $ d_i$ su 0 ili $ 1.$ U tom formatu prvi bit određuje predznak, a zadnjih osam eksponent, od kojih prvi određuje predznak eksponenta.
$ \vert$ $ \ldots$ $ \vert$ $ \ldots$
Realan broj se uvijek zapisuje u normaliziranom obliku, tj. u obliku u kojem je $ d_0\neq 0.$ To je zato da bi zapis broja bio jedinstven. Rang u ovom slučaju određuju minimalni i maksimalni eksponent. Maksimalni je

$\displaystyle e_{max} = 2^0 + 2^1 + 2^2 + \cdots + 2^6 = 2^7-1 = 127,$

dok je $ e_{min}=-128.$ Rang određujemo tako da nađemo onaj $ n$ za koji je

$\displaystyle 10^n = 2^{127}.$

Ako logaritmiramo, imamo

% latex2html id marker 41875
$\displaystyle n = 127\,\log 2 \approx 127\times 0.30103 \approx 38.$

Dakle rang je

$\displaystyle \left[10^{-38},10^{38}\right].$

Ovakav zapis broja zovemo zapisom pomoću pomičnog zareza (floating-point).

Greške nastaju na dva načina. Jedan način da nastane greška je taj da se slijedom operacija dođe do broja koji nije u rangu. U tom slučaju kažemo da se dogodio overflow. O tome nećemo govoriti. Drugi način kako može doći do greške jeste kada želimo upisati ili kad operacijama dođemo do broja koji se ne može točno zapisati u formatu u kojem radi kompjuter. Na pr. dekadski broj $ 0.1$ se ne može točno zapisati u formatu s bazom $ 2$ bez obzira kolika bila preciznost.

Pretvorba dekadskog zapisa u binarni u slučaju realnog broja $ 0<z\leqslant 1$ dan je ovim algoritmom.

Algoritam 12   Neka je $ z$ takav da je $ 0<z\leqslant{}1.$ Računamo nizove brojeva $ (z_k)$ i $ (a_{-k})$ iz formula
    $\displaystyle z_1 = z$  
    \begin{displaymath}
% latex2html id marker 41897
a_{-k} = \left\{
\begin{array}{...
...\
0, & \text{ ako je $2\,z_k\leqslant{}1,$}
\end{array}\right.\end{displaymath}  
    $\displaystyle z_{k+1} = 2\,z_k - a_{-k},\hspace{1cm}k=1,2,\ldots{}\ .$  

Tada je $ z=0.a_{-1}a_{-2}a_{-3}\ldots{}$ binarni zapis broja $ z.$

Pomoću ovog algoritma možemo utvrditi da binarni zapis dekadskog broja $ 0.1$ glasi

$\displaystyle 0.0001100110011001100\ldots\ .$


next up previous contents index
Next: Relativna greška Up: Još o greškama Previous: Cijeli brojevi   Sadržaj   Indeks
2001-10-26