Sunteți pe pagina 1din 9

Cursul 6 INFORMATIC APLICAT

Obiectivele acestui curs:


Reprezentarea n virgul mobil (VM)

REPREZENTAREA N VIRGUL MOBIL (VM)


n general, un numr N se poate reprezenta n virgul mobil (VM) n forma
urmtoare:
N M B E (1.1.)
Un numr reprezentat n VM are dou componente. Prima component este
mantisa (M), care indic valoarea exact a numrului ntr-un anumit domeniu,
fiind reprezentat de obicei ca un numr fracionar cu semn. A doua component
este exponentul (E), care indic ordinul de mrime al numrului. n expresia (1.1.),

N
B este baza exponentului.
Aceast reprezentare poate fi memorat ntr-un cuvnt binar cu trei cmpuri:
semnul, exponentul i mantisa. De exemplu, presupunnd un cuvnt de 32 de bii,
o asignare posibil a biilor la fiecare cmp poate fi urmtoarea:

31 30 23 22 0
S Exponent Mantisa

Aceasta este o reprezentare n mrime i semn, deoarece semnul are un cmp


separat fa de restul numrului. Cmpul de semn const dintr-un bit care indic
semnul numrului, 0 pentru un numr pozitiv i 1 pentru un numr negativ. Nu
exist un cmp rezervat pentru baza B, deoarece aceast baz este implicit i ea
nu trebuie memorat, fiind aceeai pentru toate numerele.
De obicei, cmpul rezervat exponentului nu conine exponentul real, ci o
valoare numit caracteristic, care se obine prin adunarea unui deplasament la
exponent, astfel nct s rezulte ntotdeauna o valoare pozitiv. Astfel, nu este
necesar s se rezerve un cmp separat pentru semnul exponentului. Caracteristica C
este deci exponentul deplasat:
C E deplasament
(1.2.)
Valoarea real a exponentului se poate afla prin scderea deplasamentului
din caracteristica numrului. De exemplu, dac pentru caracteristic se rezerv un
1
Cursul 6 INFORMATIC APLICAT

cmp de 8 bii, valorile caracteristicii pot fi cuprinse ntre 0 i 255. Considernd un


deplasament de 128 8016 , exponentul real poate lua valori ntre 128 i
127 , fiind negativ dac C 128 , pozitiv dac C 128 , i zero dac
C 128 .
Unul din avantajele utilizrii exponentului deplasat const n simplificarea
operaiilor executate cu exponentul, datorit lipsei exponenilor negativi. Al doilea
avantaj se refer la modul de reprezentare al numrului zero. Mantisa numrului
zero are cifre de 0 n toate poziiile. Exponentul numrului zero poate avea,
teoretic, orice valoare, rezultatul fiind tot zero. La unele calculatoare, dac un
rezultat are mantisa zero, exponentul rmne la valoarea pe care o are n momentul
respectiv, rezultnd un zero impur.
La majoritatea calculatoarelor, se recomand ca numrul zero s aib cel mai
mic exponent posibil, rezultnd astfel un zero pur. n cazul exponenilor
deplasai, exponentul cu cea mai mic valoare este 0. Deci, prin utilizarea
caracteristicii, reprezentarea n VM a numrului 0 este aceeai cu reprezentarea n
VF, adic toate poziiile sunt 0. Aceasta nseamn c se pot utiliza aceleai circuite
pentru testarea valorii zero.
Un alt avantaj al utilizrii exponenilor deplasai este c numerele pozitive n
virgul mobil sunt ordonate n acelai fel ca i numerele ntregi. Deci, mrimea
numerelor n virgul mobil poate fi comparat utiliznd un comparator pentru
numere ntregi.
Un dezavantaj al utilizrii exponenilor deplasai este c adunarea lor este
mai complicat, deoarece necesit scderea deplasamentului din suma
exponenilor.
n reprezentarea de mai sus, mantisa const din 23 de bii. Dei virgula
binar nu este reprezentat, se presupune c ea este aezat naintea bitului c.m.s.
al mantisei.
De exemplu: dac B 2 , numrul 1,75 poate fi reprezentat sub mai multe
forme:
0,111 21
0 0000 0001 1110 0000 0000 0000 0000 000

0,00111 2 3
0 0000 0011 0011 1000 0000 0000 0000 000

Pentru simplificarea operaiilor cu numere n VM i pentru creterea


preciziei acestora, se utilizeaz reprezentarea sub forma normalizat. Un numr n
VM este normalizat dac bitul c.m.s. al mantisei este 1. Din cele dou reprezentri
ale numrului 1,75 , ilustrat mai sus, prima este cea normalizat.
Deoarece bitul c.m.s. al unui numr normalizat n VM este ntotdeauna 1,
acest bit nu este de obicei memorat, fiind un bit ascuns la dreapta virgulei binare.
Aceasta permite ca mantisa s aib un bit semnificativ n plus. Astfel, cmpul de

2
Cursul 6 INFORMATIC APLICAT

23 de bii este utilizat pentru memorarea unei mantise de 24 de bii cu valori


cuprinse ntre 0,5 i 1,0 .
n unele cazuri, bitul ascuns se presupune poziionat la stnga virgulei
binare. Astfel, mantisa memorat M va reprezenta de fapt valoarea 1, M . n acest
caz, numrul normalizat 1,75 va avea urmtoarea form:
1,11 2 0
0 0000 0000 1100 0000 0000 0000 0000 000

Presupunnd c bitul ascuns este poziionat la stnga virgulei binare n


formatul prezentat, un numr normalizat diferit de zero reprezint urmtoarea
valoare:
N 1 S 1, M 2 E 128 (1.3.)
unde S indic bitul de semn.
n acest format se pot reprezenta numere n urmtoarele domenii:

- numere negative ntre: 1 1 2 23 2127 i 1,0 2 128 ;
- numere pozitive ntre: 1,0 2
i 1 1 2 23 2127 .
128

N
Problema care apare n cazul formatului prezentat este c nu exist o
reprezentare pentru valoarea 0. Aceasta deoarece valoarea 0 nu poate fi
normalizat. Totui, reprezentrile n VM rezerv de obicei o combinaie special
de bii pentru reprezentarea valorii 0. De multe ori, aceast valoare se reprezint
prin cifre de 0 n cadrul mantisei i a exponentului. Un asemenea exemplu de
reprezentare este formatul standard definit de organizaia IEEE (standardul IEEE
754).
Depirea superioar apare atunci cnd exponentul depete valoarea
maxim, de exemplu peste 127 n cazul formatului prezentat. Depirea inferioar
apare atunci cnd exponentul are o valoare negativ prea mic, de exemplu sub
128 . n cazul depirii inferioare, rezultatul se poate aproxima cu 0.
Coprocesoarele matematice i unitile de calcul n virgul mobil au anumite
mecanisme pentru detectarea, semnalizarea i tratarea depirii superioare i a celei
inferioare.
Pentru alegerea unui format n VM trebuie realizat un compromis ntre
dimensiunea mantisei i cea a exponentului. Creterea dimensiunii mantisei va
conduce la creterea preciziei numerelor, iar creterea dimensiunii exponentului va
conduce la creterea domeniului numerelor care pot fi reprezentate. Singura cale de
a crete att precizia, ct i domeniul numerelor, este de a utiliza un numr mai
mare de bii pentru reprezentare. Cele mai multe calculatoare utilizeaz cel puin
dou formate, n simpl precizie (de exemplu, pe 32 de bii), i dubl precizie (de
exemplu, pe 64 de bii).

3
Cursul 6 INFORMATIC APLICAT

Reprezentarea numerelor n formatul IEEE 754


n trecut, au existat diferene considerabile n modul de execuie a operaiilor
n VM la diferite familii de calculatoare. Aceste diferene se refereau la numrul de
bii alocai pentru exponent i pentru mantis, la gama exponenilor, la modurile de
rotunjire i la operaiile executate la apariia unor condiii de excepie, ca depirea
superioar sau cea inferioar.
Astfel, IEEE (Institute of Electrical and Electronics Engineers) a elaborat
un standard pentru reprezentarea numerelor n virgula mobila (VM) i pentru
operaiile aritmetice n aceast reprezentare. Standardul IEEE 754 a fost publicat n
anul 1985.
Standardul IEEE 754 definete urmtoarele formate sau precizii:
Formatul scurt (precizie simpl): 4 octei;
Formatul lung (precizie dubl): 8 octei;
Formatul temporar (precizie extins): 10 octei.
Parametrii principali ai acestor formate sunt prezentate n Tabelul 1.
Standardul nu precizeaz ca obligatorie implementarea tuturor formatelor, dar
recomand implementarea combinaiei cu precizie simpl i precizie simpl
extins, sau a formatelor cu precizie simpl, precizie dubl i precizie dubl
extins.
Tabelul 1 Parametrii formatelor definite de standardul IEEE 754
Precizie Precizie Precizie Precizie dubl
simpl simpl extins dubl extins
Bii ai mantisei 24 32 53 64
Exponent real maxim 127 1023 1023 16383
Exponent real minim 126 1022 1022 16382
Deplasament exponent 127 Nespecificat 1023 Nespecificat

Pentru toate formatele, baza implicit este 2. Formatele cu precizie simpl,


precizie dubl i precizie dubl extins sunt prezentate n figura 1. Coprocesoarele
matematice i unitile de calcul n virgul mobil ale procesoarelor implementeaz
de obicei aceste formate.

4
Cursul 6 INFORMATIC APLICAT

Figura 1 Formatele cu precizie simpl, precizie dubl i precizie dubl


extins definite de standardul IEEE 754

S reprezint semnul numrului. Pentru exponentul deplasat se rezerv 8 bii


n formatul scurt, 11 bii n formatul lung i 15 bii n formatul temporar.
Deplasamentul exponentului pentru cele trei formate este de 127 7 F16 , 1023
3FF16 , respectiv 16383 3FFF16 . Valorile minime (0) i cele maxime (255,
2047, respectiv 32767) ale exponentului nu sunt utilizate pentru numerele
normalizate, ele fiind utilizate pentru reprezentarea unor valori speciale.
Bitul ascuns este utilizat i la standardul IEEE 754, dar mantisa este
reprezentat ntr-un mod diferit. Reprezentarea mantisei este denumit significand
n standardul IEEE. n cazul formatelor cu precizie simpl i precizie dubl,
mantisa const dintr-un bit implicit cu valoarea 1 (partea ntreag), virgula binar
implicit i biii fraciei F:
M 1, F (1.4.)
Dac toi biii fraciei sunt 0, mantisa este 1,0 ; dac toi biii fraciei sunt 1,
mantisa este cu puin mai mic dect 2,0 . Deci:
1,0 M 2,0 (1.5.)
Formatul cu precizie dubl extins este utilizat pentru reprezentarea
numerelor n cadrul unitilor de calcul n VM i a coprocesoarelor matematice, n
scopul reducerii erorilor datorate rotunjirilor. n acest format, bitul 63 reprezint
5
Cursul 6 INFORMATIC APLICAT

partea ntreag a mantisei, care nu este implicit. Numerele n formatul temporar


nu sunt ntotdeauna normalizate, de aceea nu ncep n mod obligatoriu cu un bit de
1. Din acest motiv, acest bit este reprezentat n mod explicit, fiind notat cu I n

M
cadrul formatului. Valoarea mantisei este n acest caz:
M I, F (1.6.)
Valoarea unui numr n precizie simpl N S , n precizie dubl N D i n
precizie dubl extins N E este:

N S 1 S M 2 E 127 (1.7.)

N D 1 S M 2 E 1023 (1.8.)

N E 1 S M 2 E 16383 (1.9.)
Una din problemele care apar la calculele cu numere n VM se refer la
modul de tratare al depirilor inferioare i superioare. O alt problem este
reprezentarea valorilor nedefinite. n acest scop, pe lng numerele normalizate,

N SD
standardul mai permite i reprezentri ale unor valori speciale, pentru care sunt
rezervate valoarea 0 i valoarea maxim a exponentului. Valorile speciale pentru
formatele cu precizie simpl i precizie dubl sunt prezentate n tabelul 2. n acest
tabel se indic i valorile numerelor normalizate n cele dou formate.
Tabelul 2 Valori ale numerelor reprezentate
conform standardului IEEE 754
Precizie simpl (32 bii)
Exponent Significand Valoare
0 0 1 S 0
0 0 1 S 2 E 126 0.F

E
1 254 orice valoare 1 S 2 E 127 1.F
255 0 1 S
255 0 NaN
Precizie dubl (64 bii)
Exponent Significand Valoare
0 0 1 S 0
0 0 1 S 2 E 1022 0.F
1 2046 orice valoare 1 S 2 E 1023 1.F
2047 0 1 S
2047 0 NaN

6
Cursul 6 INFORMATIC APLICAT

Pentru valoarea zero, att exponentul, ct i mantisa, sunt egale cu 0. Exist


dou reprezentri pentru valoarea 0, n funcie de bitul de semn: 0 , respectiv
0 . Bitul ascuns de la stnga virgulei binare este implicit 0 n loc de 1.
n cazul obinerii unui rezultat cu o valoare mai mic dect numrul
normalizat cel mai mic posibil, n mod obinuit rezultatul este setat la zero i
calculele continu, sau se semnalizeaz o condiie de depire inferioar. Nici una
din aceste soluii nu este satisfctoare. De aceea, standardul permite utilizarea
numerelor care nu sunt normalizate, acestea fiind numite numere denormalizate.
Caracteristica acestor numere este 0, iar mantisa este diferit de 0. n acest caz,
bitul ascuns este 0.
Un numr denormalizat este generat printr-o tehnic numit depire
inferioar gradual.


Pentru cazul n care apare o depire superioar, exist o reprezentare
special pentru infinit, constnd din exponentul cu valoare maxim pentru formatul
respectiv, i mantisa egal cu 0. n funcie de bitul de semn, sunt posibile dou
reprezentri pentru infinit, i . Valoarea infinit se poate utiliza ca
operand, utiliznd reguli ca:
n (1.10.)
n

0 (1.11.)

n
(1.12.)
0
Astfel, utilizatorul poate decide dac va trata depirea superioar ca o
condiie de eroare, sau va continua calculele cu valoarea infinit.
Pentru indicarea diferitelor condiii de excepie, ca n cazul operaiilor
0
nedefinite de forma , , 0 , ,
0
, sau extragerea rdcinii
0
ptrate dintr-un numr negativ, s-a prevzut un format special, care nu reprezint
un numr obinuit, fiind numit NaN (Not a Number). Exponentul are valoarea
maxim posibil, iar mantisa este diferit de 0.


Standardul IEEE specific faptul c atunci cnd argumentul unei operaii
este NaN, rezultatul trebuie s fie NaN. Datorit regulilor de execuie a operaiilor
aritmetice cu valori NaN, la scrierea subrutinelor de calcul n VM care accept o
valoare NaN ca argument nu sunt necesare verificri speciale. De exemplu,
presupunnd c funcia arccos se calculeaz pe baza funciei arctg, utiliznd
formula:
arccos x 2arctg 1 x / 1 x (1.13.)
Dac funcia arctg trateaz un argument NaN n mod corect, i funcia
arccos va trata un asemenea argument n mod corect. Dac x este o valoare NaN,
1 x , 1 x , 1 x 1 x i 1 x 1 x vor fi de asemenea valori NaN.
Astfel, nu este necesar testarea valorilor NaN.
7
Cursul 6 INFORMATIC APLICAT

O alt caracteristic a standardului IEEE cu implicaii asupra circuitelor este


regula de rotunjire. n urma operaiilor efectuate ntre dou numere n VM, de
obicei rezultatul nu poate fi reprezentat n mod exact ca un alt numr n VM.
Standardul specific patru moduri de rotunjire: rotunjire spre 0, rotunjire spre
, rotunjire spre , i rotunjire la cel mai apropiat numr reprezentabil. Ultimul
mod de rotunjire este cel implicit, i este prevzut pentru situaiile n care numrul
se afl exact la jumtatea intervalului dintre dou reprezentri n VM. Acest mod
efectueaz rotunjirea la un numr par.
Standardul IEEE definete cinci tipuri de excepii: depire inferioar,
depire superioar, mprire la zero, rezultat inexact i operaie invalid. n mod
implicit, la apariia unei asemenea excepii, este setat un indicator i calculele
continu. Standardul recomand ca implementrile s prevad un bit de validare
pentru fiecare excepie: Dac apare o excepie cu bitul de validare setat, este
apelat o rutin de tratare a excepiei.
Excepiile de depire inferioar, depire superioar i mprire la zero sunt
prevzute la majoritatea sistemelor de calcul n VM. Excepia de rezultat inexact
apare atunci cnd rezultatul unei operaii trebuie rotunjit. Aceast nu este o condiie
excepional, deoarece apare n mod frecvent. Deci, validarea rutinei de tratare a
acestei excepii poate avea un impact semnificativ asupra performanei. Excepie
0
de operaie invalid apare n cazul unor operaii ca: , sau 1 .
0
Avantajul principal al standardului IEEE este c ajut la scrierea unor
biblioteci de programe portabile. Acest standard are ns i unele dezavantaje:
1. Standardul a fost destinat iniial microprocesoarelor, astfel nct
cerinelor pentru implementrile cu performane ridicate nu li s+a
acordat o prioritate ridicat;
2. Standardul conine specificaii opionale. Pentru cei care implementeaz
standardul, este dificil s decid care din aceste specificaii vor fi
implementate. Pentru programatorii care doresc scrierea unor programe
portabile, problema este dac trebuie s evite utilizarea specificaiilor
opionale ale standardului;
3. Depirea inferioar gradual a fost implementat de obicei ntr-un mod
care este cu mai multe ordine de mrime mai lent dect setarea
rezultatului la zero, astfel nct de multe ori utilizatorii invalideaz
aceast tehnic;
4. Standardul nu descrie operaiile aritmetice cu numere ntregi i nici
funciile transcendentare (sin, cos, exp). n particular, standardul nu
specific acurateea necesar pentru funciile transcendentare, sau
valorile excepionale ale funciilor transcendentare, ca de exemplu 0 0 .

Standardul IBM S/360, S/370

8
Cursul 6 INFORMATIC APLICAT

Standardul prezint trei formate: precizie simpl (32 de bii), precizie dubl
(64 de bii) i precizie extins (80 de bii).
N 1 S 16 E 64 0.M (1.14.)
n cmpul exponentului se reprezint numere ntregi n exces de 64 i pentru
toate versiunile este format din 7 bii. Mantisa este un numr fracionar reprezentat
n semn-mrime nefolosindu-se soluia bit ascuns (hidden bit - 0.M ). Baza
nu mai este 2 ci 16 iar normalizarea se face n consecin, fiecare incrementare sau

N
decrementare a exponentului mutnd virgula la stnga sau la dreapta cu 4 poziii
binare.
n acest standard nu avem posibilitatea de a reprezenta situaii speciale de tip
NaN (Not a Number), nici de depire, nici de denormalizare, iar zero este
reprezentat cu zero peste tot. Datorit bazei 16 cmpul valoric de reprezentare a
numerelor este mult mai mare: 5.4 10 79 7.24 10 75 .

S-ar putea să vă placă și