Curs
Dr
agulici Dumitru Daniel
Facultatea de matematic
a si informatic
a,
Universitatea Bucuresti
2014
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a
Bibliografie:
Adrian Atanasiu:
Arhitectura calculatorului,
Ed. InfoData, 2006
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a
Conceptul de performanta
Performanta poate avea mai multe acceptiuni:
(1) la un PC, suntem interesati de timpul de r
aspuns al unui program:
este timpul fizic scurs ntre momentul c
and lans
am cererea si momentul c
and
primim rezultatul; el trebuie s
a fie c
at mai mic;
(2) la un centru de calcul, suntem interesati de productivitate (throughput):
num
arul de sarcini executate n unitatea de timp; el trebuie s
a fie c
at mai mare.
Obs: (1) = (2) dar (2) =
6
(1).
De exemplu, centrul de calcul poate avea calculatoare lente dar multe; atunci
pe fiecare calculator vom avea timpi de r
aspuns mari, dar num
arul de sarcini
executate n unitatea de timp n centrul de calcul va fi tot mare.
Ambele acceptiuni ale performantei necesit
a abord
ari complexe, asa c
a pentru
simplitate trebuie s
a ne limit
am la una din ele.
In cele ce urmeaz
a, performanta se va referi la timpul de r
aspuns.
El priveste rularea unui program cu niste date si depinde de mai multi factori:
codul programului, datele cu care se ruleaz
a, promptitudinea cu care utilizatorul
introduce datele c
and sunt cerute, sistemul de operare, nc
arcarea sistemului
(activitatea concomitent
a a altor utilizatori), arhitectura hardware, etc.
Conceptul de performanta
(P) si a descrie dependenta
ei descresc
atoare n raport cu timpul de r
aspuns (T ), adopt
am formula:
P=
1
(1)
T
Deja putem s
a compar
am performantele sau s
a calcul
am un raport al
performantelor unui program cu niste date fixate, pe dou
a masini X si
def
PX > PY TX < TY ,
Y:
PX
def TY
= n
= n (2)
PY
TX
Conceptul de performanta
Timpul de r
aspuns (al unui program cu niste date) are urm
atoarele
componente:
(1) Timpul consumat cu executarea unor operatii din program;
(2) Timpul consumat cu executarea unor operatii din sistemul de operare, dar
legate de programul nostru (ex: apeluri sistem cerute de program);
(3) Timpul consumat de program n asteaptarea unor evenimente/resurse (ex:
programul este adormit n scanf() astept
and ca utilizatorul s
a introduc
a date
de la consol
a);
(4) Timpul n care programul este suspendat de sistemul de operare, pentru a
executa operatii adminstrative si sarcini legate de alte programe (care ruleaz
a
n paralel cu al nostru).
Not
am (1) + (2) = Timpul CPU
Deci timpul CPU este timpul consumat de program cu executarea unor operatii
(calcule), fie ele din program sau din sistemul de operare dar legate de
program. El este inclus n timpul de r
aspuns, iar ceea ce r
am
ane este timpul
consumat de program n asteptare, fie c
a asteapt
a un eveniment/resurs
a, fie c
a
este suspendat de sistemul de operare pentru a executa operatii adminstrative
si sarcini legate de alte programe.
Conceptul de performanta
Pe anumite sisteme exist
a comenzi cu ajutorul c
arora se pot m
asura si afisa
diferite componente ale timpului de r
aspuns pentru o anumit
a cerere. De
exemplu, n Linux comanda:
time cmd
afisaz
a diferite componente ale timpului de r
aspuns obtinute la executarea
comenzii cmd . De exemplu, poate afisa:
real
user
sys
2m39.000s
1m30.700s
0m12.900s
(timpul de r
aspuns)
(timpul utilizator, (1))
(timpul sistem, (2))
Conceptul de performanta
Distingem ntre:
performanta sistemului = timpul de r
aspuns pe un sistem nenc
arcat;
performanta CPU = timpul CPU.
In cele ce urmeaz
a restr
angem si mai mult domeniul abord
arii si vom considera
c
a performant
a nseamn
a performanta CPU (deci n formula (1) este vorba
de timpul CPU).
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a
Masurarea performantei
Timpul (CPU) se poate m
asura n:
secunde (s)
cicli de ceas (c)
Leg
atura dintre cele dou
a este dat
a de peroada de ceas (durata ciclului) D
(m
asurat
a n secunde (s), nanosecunde (ns), etc.) sau frecventa F (m
asurat
a
n herzi (Hz), megaherzi (MHz), etc.), dup
a formula:
F =
1
D
C
and m
asur
am n cicli nu mai conteaz
a fizica circuitelor (durata ciclului) ci
doar mp
artirea programului n operatii masina (logica programului) si a
operatiilor masin
a n ciclii (logica circuitelor) - avem astfel posibilitatea s
a
compar
am d.p.v. logic o gam
a mai larg
a de masini.
Masurarea performantei
O m
arime care ne d
a indicatii asupra performantei este num
arul total de cicli
executati C .
El depinde de program, de date si de mp
artirea instructiunilor n cicli (am
presupus programul scris n limbaj masin
a); nu depinde de durata ciclului.
Performanta este cu at
at mai mare cu c
at C este mai mic.
Dac
a presupunem programul scris ntr-un limbaj de nivel nalt, conteaz
a si
mp
artirea codului surs
a n instructiuni masin
a - deci intervine si performanta
compilatorului.
Atunci putem calcula timpul CPU
dup
a formula:
C
(3)
F
Aceast
a formul
a arat
a c
a putem reduce timpul T (deci m
ari performanta)
reduc
and num
arul de cicli executatiC sau/si durata ciclului D .
T =C D =
Este dificil ns
a de redus simultan ambii factori - de obicei reducera unuia
atrage cresterea celuilalt.
Masurarea performantei
Pentru exemplificare, s
a consider
am urm
atorul model simplificat de circuit, care
execut
a c
ate o operatie la fiecare ciclu:
zW
}| {
H
CK
El este construit prin conectarea altor circuite mai simple, n serie, n paralel,
etc. (a se vedea capitolul de circuite logice), are o anumit
a l
atime w , dat
a de
num
arul de intr
ari si de conect
ari n paralel, si o anumit
a naltime H , dat
a de
num
arul de niveluri de conectare n serie; W este cu at
at mai mare cu c
at
datele de prelucrat au o dimensiune mai mare (mai multi biti), iar H este cu
at
at mai mare cu c
at operatia este mai complex
a.
La fiecare tact de ceas (CK ), datele de intrare sunt prelucrate prin circuit si
transformate n niste date de iesire, care la urm
atorul tact vor fi preluate ca
date intrare de un circuit conectat n continuare. Aceast
a prelucrare necesit
a
un anumit timp, iar D trebuie s
a fie acest timp - altfel, dac
a urm
atorul
tact vine prea devreme (nainte ca iesirile s
a fie stabile), vor fi culese (si trimise
mai departe) niste date eronate.
Masurarea performantei
Cresterea D nu este influientat
a de W , deoarece intr
arile sunt procesate n
paralel, ci de H (lungimea traseelor ce trebuie parcurse); n capitolul de
circuite logice vom vedea, de exemplu, c
a o adunare pe 32 biti se face la fel de
repede ca o adunare pe 64 biti (deoarece bitii operanzilor sunt procesati n
paralel), dar o adunare se face mai repede dec
at o nmultire.
S
a consider
am acum c
a circuitul desenat mai sus execut
a o operatie pe
parcursul mai multor cicli - deci sunt necesare mai multe treceri prin el pentru a
se efectua toate prelucr
arile necesare.
Intruc
at efectuarea unei anumite operatii necesit
a o anumit
a cantitate de
prelucr
ari (care depinde de natura matematic
a a operatiei), proiectantul
circuitului va avea de ales ntre dou
a variante:
- va mp
arti prelucrarea n etape putine, realizate c
ate una la ficare ciclu, dar
atunci la fiecare etap
a trebuie f
acute calcule multe, deci H va fi mare si astfel
D va fi mare; atunci, la executarea programului vom avea C mic si D mare;
- va mp
arti prelucrarea n etape multe si atunci la fiecare etap
a trebuie f
acute
calcule putine, deci H si D vor fi mici; atunci, la executarea programului vom
avea C mare si D mic.
Exercitiu rezolvat
Exercitiu rezolvat:
Un program (cu niste date fixate) dureaz
a pe masina A, av
and frecventa
400 MHz , 10 secunde. Dorim o masina B pe care rularea sa dureze
secunde. Proiectantul spune c
a poate creste frecventa, dar programul va
necesita de 1.2 ori mai multi cicli. Care va fi frecventa masinii B ?
Exercitiu rezolvat
Rezolvare:
Din enunt ni se dau:
(3)
ip
A
FB = TCBB = 1.2C
=
TB
= 800 MHz
Comentariu:
Exercitiu rezolvat
Sfat:
In redactarea rezolv
arilor, la efectuarea calculelor, mentionati la fiecare pas si
unit
atile de m
asur
a; utilitatea este urm
atoarea:
Conventie:
In cele ce urmeaz
a, m
arimea fizic
a va fi notat
a cu liter
a mare iar unitatea de
m
asur
a cu liter
a mic
a, pe c
at posibil acceasi liter
a.
De exemplu, C = 10 c nseamn
a c
a num
arul total de cicli executati este
10 (cicli).
Masurarea performantei
Alte dou
a m
arimi care ne dau indicatii asupra performantei sunt num
arul total
de instructiuni executate I si num
arul mediu ce cicli per instructiune
executati (engl: cycles per instruction) CPI , calculat dup
a formula:
CPI =
C
(4)
I
CPI
Masurarea performantei
CPI
ne permite s
a compar
am dou
a implement
ari hardware diferite ale unui
acelasi set de instructiuni.
De exemplu, s
a presupunem c
a avem de implementat o list
a ce contine
instructiunile + (adunare) si (nmultire).
Presupunem c
a avem dou
a implement
ari, n care num
arul de cicli necesari
fiec
arei instructiuni este dat de tabelul:
Implementare 1
Implementare 2
Nr. cicli
10 c
12 c
Nr. cicli
100 c
70 c
Masurarea performantei
Din formulele
I CPI
(5)
F
Ea leag
a cei trei factori cheie ai performantei: num
arul de instructiuni
executate I , num
arul mediu de cicli pe instructiune executati CPI si durata
ciclului D (sau frecventa F ).
Exist
a interdependente ntre factori; de exemplu, sc
aderea CPI poate atrage
cresterea D (deoarece la fiecare ciclu se vor executa operatii mai multe si/sau
mai complexe).
Acesti factori trebuie considerati simultan atunci c
and analiz
am un sistem,
altfel putem trage concluzii eronate privind performanta - a se vedea urm
atorul
exercitiu rezolvat.
Masurarea performantei
este greu de m
asurat - el depinde de program, de date si de arhitectur
a
(mp
artirea instructiunilor n cicli).
CPI
este ns
a greu de m
asurat - el depinde de program, de date si de
arhitectur
a (mp
artirea instructiunilor n cicli).
Masurarea performantei
Uneori poate fi suficient
a o aproximare a lui C , obtinut
a urm
arind executia
programului pe clase de instructiuni. Mai exact:
Consider
am n clase de instructiuni.
De exemplu: clasa instructiunilor de salt (din care face parte goto), clasa
instructiunilor aritmetice aditive (din care fac parte adunarea, sc
aderea), clasa
instructiunilor aritmetice multiplicative (din care fac parte nmultirea,
mp
artirea).
Pentru fiecare clasa
media numerelor
Masurarea performantei
Atunci pentru programul, datele si arhitectura considerate, vom avea:
C'
n
X
(CPIk Ik ) (6)
k=1
Valorile n si CPIk , k {1, . . . , n}, depind doar de arhitectur
apentru o masin
a dat
a ele sunt fixate si pot fi comunicate prin documentatia
masinii.
Valorile Ik ,
arhitectur
a.
Astfel, pe o masin
a dat
a, dac
a vrem s
a afl
am (cu aproximatie) num
arul de cicli
C consumati la rularea unui anumit program cu anumite date, este suficient sa
afl
am valorile Ik , k {1, . . . , n}, iar acestea sunt mai usor de aflat,
deoarece instructiunile se num
ar
a mai usor dec
at ciclii.
Masurarea performantei
Valoarea
calculat
a cu formula (6) este ns
a doar una aproximativ
a.
De exemplu, presupunem c
a pe o masin
a dat
a avem:
Clasa
aditive
multiplicative
Rezult
a
Instructiuni
adunare
sc
adere
nmultire
mp
artire
Consider
am un program si niste date a.. la rulare se execut
a o adunare si o
nmultire.
Valoarea exact
a a lui C este: 1 + 10 = 11.
Valoarea lui C calculat
a cu formula (6) este: 2 + 20 = 22.
Consider
am acum un program si niste date a.. la rulare se execut
a o sc
adere si
o mp
artire.
Valoarea exact
a a lui C este: 3 + 30 = 33.
Valoarea lui C calculat
a cu formula (6) este tot: 2 + 20 = 22.
Masurarea performantei
Intr-adev
ar, cu formula (6) am considerat de fiecare dat
a c
a se execut
ao
instructiune aditiv
a si o instructiune multiplicativ
a, nesesiz
and c
a la primul
program se execut
a cele mai rapide instructiuni din cele dou
a clase, iar la al
doilea program cele mai lente.
Valoarea lui C calculat
a cu formula (6) se apropie de valoarea exact
a cu at
at
mai mult cu c
at din fiecare clas
a instructiunile se execut
a cu ponderi mai
apropiate (cam tot at
atea adun
ari c
ate sc
aderi, cam tot at
atea nmultiri c
ate
mp
artiri).
Exercitiu rezolvat
Exercitiu rezolvat:
Pe o masin
a dat
a, avem urm
atoarele clase de instructiuni si
clasa
A
B
C
CPI
asociate:
CPIclasa
1
2
3
Consider
am dou
a programe si niste date, pentru care s-au m
asurat:
Program
programul
programul
1
2
A
2
4
B
1
1
C
2
1
Exercitiu rezolvat
Rezolvare:
a) Not
am:
Exercitiu rezolvat
b) Not
am:
Exercitiu rezolvat
c) Not
am:
CPI 1 =
CPI 2 =
C1
I1
C2
I2
=
=
c
10c
5i = 2 i (sau 2cpi ).
9c
c
6i = 1.5 i (sau 1.5cpi ).
Comentariu:
1
2
Am obtinut CPI > CPI , ceea ce pare s
a arate c
a programul 2 este
mai performant, ca la b) (si n contradictie cu a)).
Intruc
at am v
azut c
a b) ofer
a r
aspunsul corect, rezult
a c
a, cel putin n acest
caz, m
arimea CPI descrie performanta mai bine dec
at m
arimea I .
R
aspunsul de la c) era de asteptat, deoarece programul 2 este mai rapid desi
execut
a mai multe instructiuni si de aceea trebuie ca instructiunile executate de
el s
a fie mai rapide.
Oricum, acest exercitiu ilustreaz
a ce am spus mai devreme, c
a factorii care
influienteaz
a performanta trebuie considerati simultan atunci c
and analiz
am un
sistem, altfel putem trage concluzii eronate privind performanta.
Masurarea performantei
O alt
a m
arime care ne d
a indicatii asupra performantei este frecventa de
executare a instructiunilor:
FI =
Intruc
at de obicei valorile lui
FI
I
(7)
T
(m
asurate n instructiuni pe secund
a) sunt
MIPS =
106 la numitor,
I
(8)
T 106
m
asurat
a n milioane de instructiuni pe secund
a (millions instructions per
second).
Masurarea performantei
Ca si n cazul altor m
arimi discutate mai devreme, FI si MIPS trebuie
considerate mpreun
a cu ceilalti factori atunci c
and analiz
am un sistem, altfel
putem trage concluzii eronate privind performanta - a se vedea urm
atorul
exercitiu rezolvat.
Exercitiu rezolvat
Exercitiu rezolvat:
Pe o masin
a dat
a, av
and frecventa de
de instructiuni si CPI asociate:
clasa
A
B
C
Consider
am dou
a programe si niste date, pentru care s-au m
asurat:
Program
programul
programul
1
2
A
5
10
B
1
1
C
1
1
Exercitiu rezolvat
Rezolvare:
Situatia seam
an
a cu cea din exercitiul precedent si atunci la fel ca acolo putem
afla num
arul total de cicli executati. Acum stim n plus si frecventa, iar aceasta
ne va permite ca din num
arul de cicli s
a afl
am timpii CPU.
Not
am:
Exercitiu rezolvat
a) Folosind formula (6), avem:
T 1 = CF = 50010c
MHz =
= 2 2 108 s
T 2 = CF = 50015c
MHz =
1
10c
500106 Hz
15c
500106
2
c
s
10c
500106
c
s
= 3 108 s
Exercitiu rezolvat
b) Avem:
I1
T 1 106 mips
I2
T 2 106 mips
7i
= 2108
106 mips = 350 mips
= 31012i
8 106 mips = 400 mips
1
2
Comentariu: am obtinut MIPS < MIPS , ceea ce pare s
a arate c
a
programul 2 este mai performant, n contradictie cu a).
MIPS 1 =
MIPS 2 =
Am v
azut ns
a c
a r
aspunsul corect este cel dat de a). Explicatia erorii de la b)
const
a n faptul c
a programul 2 execut
a instructiuni rapide (deci execut
a multe
instructiuni pe secund
a), dar foarte multe (si astfel necesit
a multe secunde, mai
multe dec
at programul 1).
Asadar, un MIPS mare nu nseamn
a neap
arat un timp mai scurt.
Deci, parametrii performantei trebuie analizati mpreun
a, nu izolat.
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a
|
b
|-------| cat0 |
b
.
|-------.
| cat1
.
.
Obtinem reprezentarea:
rest1
.
C1
.
cat(n-1) |
b
.
|-------.
| 0
.
restn
Cn
<======= citim
-----------Cn ... C1 C0
| 16
|----| 264 | 16
16 |------ | 16 | 16
104
16 |----96
-- | 1 | 16
-0
0 |----==8
0
- | 0
8
1
1
<=======
Dac
a b are (n baza 10) doar o cifr
a, atunci catk si restk se pot calcula
mintal, iar calculele se pot redacta mai simplu:
x
cat0
cat1
| rest0
| rest1
|
.
.
.
cat(n-1) | restn
0
|
C0
C1
Cn
/\
||
||
||
||
||
|| citim
Obtinem reprezentarea:
-----------Cn ... C1 C0
|
|
|
|
|
|
|
|
1
0
0
1
0
1
1
/\
||
||
||
||
||
||
- p
an
a c
and se aplic
a procedeul:
dac
a la un moment dat nt
alnim o parte fractionar
a 0, nmultind cu b
obtinem o nou
a parte ntreag
a (i.e. o nou
a zecimal
a) 0 si o nou
a parte
fractionar
a 0, etc., deci continu
and vom obtine noi zecimale 0 nesemnificative;
de aceea ne putem opri si conchidem c
a am obtinut o fractie zecimal
a finit
a;
dac
a la un moment dat obtinem o parte fractionar
a care a mai fost
nt
alnit
a, continu
and procedeul vom obtine aceeasi succesiune de zecimale ca
dup
a prima nt
alnire; de aceea ne putem opri si conchidem c
a am obtinut o
fractie zecimal
a periodic
a (simpl
a sau mixt
a); perioada este succesiunea de
zecimale generate dupa prima nt
alnire;
|
|
|
|
1
1
1
/\
||
||
|
|
|
|
|
zecimala_1
zecimala_2
|
|
|
|
|
1
1
0
0
||
||
||
\/
|| citim
||
||
||
\/
Exemplu: (7.8)5 = ?
7
1
0
|
|
|
2
1
0.8
0
|
|
4
stop, am intalnit partea fractionara 0
Dac
a num
arul x este dat (n baza surs
a, 10) printr-o fractie zecimal
a periodic
a
(simpl
a sau mixt
a), nu putem efectua direct calculele regulii de conversie,
deoarece nu stim s
a nmultim fractii zecimale infinite.
Regula de conversie se bazeaz
a ns
a pe propriet
ati matematice, care nu depind
de modul de reprezentare a numerelor; de aceea, o putem aplica, dar vom alege
alte reprezent
ari, convenabile - anume prin fractii ordinare.
Exemplu: (4.(3))2 = ?
4
2
1
0
|
|
|
|
0
0
1
baza b baza 10
Trecerea dintr-o baz
a b n baza 10 (b N
I , b 2):
Regul
a:
- nlocuim cifrele cu numerele pe care le reprezint
a (scrise n baza 10) si
scrierea pozitional
a cu scriere polinomial
a n puterile succesive ale lui b (scris
tot n baza 10);
- facem calculele n baza 10.
Exemple:
3
2
1
0
(1101)1
2 = 1 2 + 1 2 + 0 2 + 1 2 = 13
2
1
0
(A2C )1
16 = 10 16 + 2 16 + 12 16 = 2604
1
0
1
(12.4)1
=7+
5 = 15 +25 +45
4
5
39
5
= 7.8
Observatii:
- n primul exemplu, n st
anga primului =, 0 si 1 nseamn
a cifre (n baza 2),
iar n dreapta numere (n baza 10); n al doilea exemplu confuzia ntre cifre si
numere este mai mic
a;
- n ultimul exemplu vedem c
a pentru cifrele p
artii fractionare exponentii scad
n continuare, la valori negative.
baza b baza 10
Dac
a reprezentarea n baza b de la care pornim este o fractie zecimal
a
periodic
a (simpl
a sau mixt
a), scrierea polinomial
a rezultat
a este infinit
a.
O asemenea sum
a se poate calcula folosind instrumentul matematic al seriilor.
Putem evita folosirea seriilor dac
a nlocuim fractia zecimal
a surs
a cu o fractie
ordinar
a (n baza b).
Regula de trecere de la fractie zecimal
a la fractie ordinar
a n baza b este la fel
ca n baza 10, cu diferenta c
a 9 se nlocuieste cu b 1.
Exemplu:
(10.1(011))1
2 = (10 +
2+
10
14
38
14
19
7
10111 1
)2
1110
= (10)1
2 +
1
(1011)1
2 (1)2
(1110)1
2
=2+
111
14
= 2.(714285)
baza b1 baza b2
baza b1 baza b2
Trecerea baza b1 baza b2 se poate face mai simplu, f
ar
a a mai trece prin
baza 10, dac
a una din baze este putere a celeilalte:
Trecerea b k b (b, k N
I b 2, k 1)
Regul
a:
- nlocuim fiecare cifr
a a bazei b k cu c
ate un grup de k cifre ale bazei b;
- elimin
am 0-le extreme (din st
anga p
artii ntregi si din dreapta p
artii
fractionare);
Trecerea b b k (b, k N
I b 2, k 1)
Regul
a:
- grup
am c
ate k cifre, de la virgul
a spre st
anga si spre dreapta, complet
and
eventual cu 0-uri grupurile extreme (pentru a avea grupuri de k cifre); aceste
0-uri se pun la st
anga n grupul aflat cel mai la st
anga al p
artii ntregi si la
dreapta n grupul aflat cel mai la dreapta al p
artii fractionare;
- nlocuim fiecare grup de k cifre ale bazei b cu c
ate o cifr
a a bazei b k .
baza b1 baza b2
Observatii:
- pentru a aplica regulile de mai nainte, este necesar s
a stim cele 2k
k
corespondente posibile ntre o cifr
a a bazei b si un grup de k cifre ale bazei b;
acestea se pot determina aplic
and trecerea prin baza 10 (baza bk baza 10
baza b) si se pot retine ntr-un tabel (cu 2k linii);
- explicatia intuitiv
a a acestor reguli este urm
atoarea: dac
a n scrierea
am c
ate
polinomial
a n puterile succesive ale lui b, cu coeficienti 0, b 1, grup
k termeni consecutivi si d
am factor comun puterea lui b cea mai mic
a, obtinem
o scriere polinomial
a n puterile succesive ale lui b k , cu coeficienti 0, b k 1;
din unicitatea acestor scrieri rezult
a c
a ele dau reprezent
arile n bazele b si b k .
baza b1 baza b2
Exemplu:
S
a se converteasc
a 1A.C 16 n baza 2 si 11011.1012 n baza 16.
Bin
0000
0001
0010
0011
Hex
0
1
2
3
Zec
4
5
6
7
Bin
0100
0101
0110
0111
Hex
4
5
6
7
Zec
8
9
10
11
Bin
1000
1001
1010
1011
Hex
8
9
A
B
Zec
12
13
14
15
Bin
1100
1101
1110
1111
Atunci avem:
1A.C 16 |{z}
1 |{z}
A . |{z}
C 0001
00011010.1100
11010.112
| {z } 1010
| {z } . 1100
| {z }
11011.1012 |{z}
1 1011
101 0001
1 |{z}
B . |{z}
A 1B.A16
| {z } . |{z}
| {z } 1011
| {z } . 1010
| {z } |{z}
Hex
C
D
E
F
baza b1 baza b2
Observatie: metodele de mai sus nu se pot aplica pentru a trece direct din baza
8 n baza 16 sau invers, deoarece 16 este multiplu al lui 8, dar nu putere a lui
8. Putem ns
a proceda n doi pasi, trec
and prin baza 2, de exemplu:
baza 8 baza 2 baza 16
1011 + 110
Tabla adun
arii n baza 2 este:
+
0
1
0
0
1
1
1
10
De exemplu: 1 + 1 = 1 + 1 = 2 = 10.
Atunci, avem:
1 0 1 1 +
1 1 0
--------1 0 0 0 1
Pe pozitia unit
atilor am avut 1 + 0 = 1, f
ar
a transport; pe urm
atoarea pozitie
am avut 1 + 1 = 10 (adic
a num
arul 2), s-a p
astrat 0 si s-a propagat 1; pe
urm
atoarea pozitie am avut 0 + 1 + 1 (ultimul 1 provenit din transport) = 10,
s-a p
astrat 0 si s-a propagat 1; etc.
BA - 9B
Avem:
B A 9 B
----1 F
Pe pozitia unit
atilor avem A B = 10 11 < 0; de aceea, mprumut
am 1 de
pe pozitia urm
atoare si atunci calculul este 1 16 + 10 11 = 15 = F . Pe
pozitia urm
atoare avem B 1 9 (acel 1 a fost cedat la mprumut)
= 11 1 9 = 1 = 1.
110.11 x 1.001
Avem:
1 1 0.1 1 x
1.0 0 1
----------1 1 0 1 1
1 1 0 1 1
----------------1 1 1.1 0 0 1 1
Inmultirea ntr-o baz
a oarecare se face tot dup
a reguli asem
an
atoare ca n baza
10, dar pentru baza 2 aceste reguli se pot simplifica, deoarece singurele cifre
sunt 0 si 1, care desemneaz
a respectiv numerele 0 si 1, care sunt factor
anulator, respectiv element neutru, la nmultire; nmultirea cu un 0 presupune
scrierea unui r
and de 0-uri, care nu conteaz
a la adunare si se pot omite, iar
nmultirea cu un 1 revine la a scrie o copie a denmultitului; asadar, pentru a
face nmultirea, este suficient s
a parcurgem nmultitorul de la dreapta spre
st
anga si pentru fiecare 1 nt
alnit s
a mai scriem o copie a denmultitului, cu
cifra unit
atilor aliniat
a la acel 1, iar n final s
a adun
am r
andurile scrise - ceea ce
am f
acut mai sus; n final, num
arul de zecimale ale produsului este suma
numerelor de zecimale ale factorilor, la fel ca n cazul bazei 10.
10000.01 : 11
Avem:
1 0 0 0 0.0 1 | 1 1
1 1
|--------| 1 0 1.0 1(1 0)
= = 1 0 0
1 1
----= = 1 0 1
1 1
----= 1 0 0
1 1
----= = 1 0
C
and facem o mp
artire, trebuie s
a urm
arim dac
a c
atul rezult
a ca o fractie
zecimal
a finit
a sau se formeaz
a o perioad
a. Pentru aceasta, dup
a ce la
demp
artit am trecut de virgul
a si am cobor
at ultima cifr
a nenul
a, retinem
resturile succesive obtinute ntr-o list
a; dac
a la un moment dat un rest este 0,
ne oprim, a rezultat o fractie zecimal
a finit
a; dac
a la un moment dat un rest se
repet
a, ne oprim, a rezultat o fractie zecimal
a periodic
a, iar perioada ncepe cu
cifra generat
a la prima aparitie a restului care s-a repetat.
In exemplul nostru, dup
a ce la demp
artit am trecut de virgul
a si am cobor
at
ultima cifr
a nenul
a, am obtinut succesiv urm
atoarele resturi: 10, 1, 10
(repetitie).
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a
Reprezentarea n calculator
Fie M N
I , Z/, R
I o multime de numere pe care dorim s
a le reprezent
am n
calculator.
Consider
am o locatie de n biti: bn1 . . . b0 (de obicei n este multiplu de 8).
Not
am Cn = {cn1 . . . c0 |ci {0, 1}}, multimea configuratiilor de 0, 1 pe n
pozitii.
O reprezentare este o functie [.]n : M Cn bijectiv
a.
Observatii:
- M, n si [.]n trebuie alese a.. [.]n s
a fie bijectiv
a, deoarece noi reprezent
am
numerele n calculator, oper
am asupra lor cu calculatorul, dar la sf
arsit dorim s
a
putem interpreta rezultatul (s
a afl
am ce num
ar are reprezentarea respectiv
a),
ori aceasta nseamn
a s
a aplic
am [.]1
n ;
- [.]n nu poate fi (.)2 (reprezentarea binar
a folosit
a n matematic
a), deoarece
avem valori de biti pentru a desemna doar 0 si 1, nu si , ., etc.; deci, trebuie
facut
a o alt
a codificare;
- n plus, regula de reprezentare prin care este definit
a [.]n trebuie aleas
a a.. s
a
permit
a o implementare usoar
a si eficient
a a unor operatii hardware pe Cn prin
care s
a traducem operatiile aritmetice pe M.
Reprezentarea n calculator
Consider
am urm
atoarele operatii hardware la nivel de bit:
a
0
0
1
1
b
0
1
0
1
a|b (or)
0
1
1
1
a&b (and)
0
0
0
1
a b (xor)
0
1
1
0
a
0
1
a (not)
1
0
Reprezentarea n calculator
Pe Cn putem considera mai multe operatii hardware (lor le corespund
instructiuni n limbajul masin
a sau de asamblare), de exemplu:
- Operatii logice binare pe biti:
| (or),
& (and),
a
(xor), etc.; ele se efectueaz
aplic
and bit cu bit operatiile logice respective, conform tabelului anterior.
Exemplu (n = 8):
11000101
01000110
01000100
&
01000110
01000110
00001011
11000101
(n primul caz am avut un transport din pozitia 7, care s-a pierdut, iar n al
doilea caz s-a cerut un mprumut la pozitia 6, cererea s-a transmis la pozitia 7,
unde mprumutul s-a primit automat din afar
a, iar c
and acesta s-a transmis
la pozitia 6, unde a fost generat
a cererea, a lasat n urm
a un 1 pe pozitia 7).
Exemplu (n = 8):
Reprezentarea n calculator
cn1 . . . c0 se efectueaz
a neg
and fiecare bit ci si apoi adun
and 1 aritmetic (cu
eventuala propagare a transportului);
Exemplu (n = 8):
01001100
10110011
01001100
10110100
Observatie:
cn1 . . . c0 se poate obtine mai simplu astfel:
- dac
a cn1 = . . . = c0 = 0, nu se schimb
a nimic;
- altfel, dac
a k = min{i {0, . . . n 1}|ci = 1}, atunci bitii cn1 , . . . , ck+1 se
neag
a iar bitii ck , . . . , c0 se las
a neschimbati.
Reprezentarea n calculator
Se constat
a c
a operatiile hardware pe Cn considerate nu sunt independente
logic (se pot exprima unele prin altele):
Teorem
a: Pentru orice , Cn avem:
=(
+1
)
=
+ (
)=
+ ((
+ 1)
)
(am notat prin 1 configuratia 0 . . . 01 Cn ).
Exemplu: ntr-un exemplu anterior am calculat c
a 00001011
01000110 =
11000101; s
a verific
am c
a obtinem acelasi rezultat si cu formula pentru
din
teorem
a:
Dac
a = 00001011 si = 01000110, atunci:
= 10111001
(
+ 1 = 10111001
+ 00000001 = 10111010
)
+ ((
)
+
1)
=
00001011
+ 10111010 = 11000101
Reprezentarea n calculator
De aceea,
+ si
, desi exist
a ca instructiuni diferite n limbajul masin
a sau de
asamblare, intern sunt realizate cu un acelasi circuit, numit sumator.
La fel, exist
a instructiuni masin
a pentru aplicarea algoritmilor de nmultire si
mp
artire, care intern sunt realizate prin combinatii de aceleasi c
ateva circuite
simple (de exemplu, nmultirea = adunare repetat
a, mp
artirea = sc
adere
repetat
a).
Operatiile din limbajele de nivel nalt sunt traduse de compilator prin
combinatii de operatii implementate hardware. Cu c
at limbajul este de nivel
mai jos (i.e. mai apropiat de hardware), cu at
at combinatia este mai simpl
a.
De exemplu, n limbajul C exist
a operatorii |, &, ^, ..., iar ei pot fi tradusi prin
c
ate o singur
a operatie
|,
&,
, ... (de aceea am notat asa).
Reprezentarea n calculator
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a
Din modul cum se fac operatiile implementate hardware discutat mai devreme,
rezult
a c
a operatiile cu numerele naturale reprezentate astfel se fac mod 2n ,
mai exact:
Teorem
a:
u u 1
Dac
a op = +, , . . . atunci: [[x]un
op [y ]n ]n
= (x op y ) mod 2n
(mod 2n se calculeaz
a a.. s
a produc
a un rezultat {0, . . . , 2n 1}).
u u 1
In particular, dac
a x op y M, atunci: [[x]un
op [y ]n ]n
= x op y .
Asadar, dac
a reprezent
am x si y si aplic
am
op din calculator, obt
inem
reprezentarea lui x op y din matematic
a modulo 2n ; dac
a nu avem dep
asire,
este chiar x op y din matematic
a.
<-----|
0 [----------] 255
|
------>
Intuitiv, ne imagin
am c
a intervalul [0,...,255] se multiplic
a de-a lungul axei
reale, determin
am punctul aflat la distanta 400 de origine, apoi m
asur
am
deplasamentul acestui punct fat
a de nceputul intervalului n care se afl
a,
obtin
and rezultatul 144 (desenul din st
anga).
Sau, ne imagin
am c
a valoarea 400 se nf
asoar
a parcurg
and circular intervalul
[0,...,255] si ce r
am
ane n interval este rezultatul 144 (desenul din dreapta).
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a
[.]n :=
[.]sn
: {2
n1
,...,2
n1
1} Cn ,
[x]sn
x 0
x <0
n = 8,
M = {128, . . . , 127}.
Ilustr
am modul de reprezentare a c
atorva valori:
127:
126:
...
1:
0:
-1:
-2:
...
-127:
-128:
01111111 = (127)n2
01111110 = (126)n2
-128
-1 0
127
--[-------][-------]-\
\
|
\
|\
|
\
| \
|
n
00000001 = (1)2
\
| \
|
\
|
\
|
00000000 = (0)n2
\
|
\
|
11111111 = (255)n2 = (256 1)n2
\ |
\ |
n
n
\|
\|
11111110 = (254)2 = (256 2)2
\
\
|\
|\
n
n
| \
| \
10000001 = (129)2 = (256 127)2
| \
| \
n
n
|
\
|
\
10000000 = (128)2 = (256 128)2
|
\ |
\
|
\ |
\
Deci, intervalul {0, . . . , 127} este l
asat pe loc, intervalul
|
\|
\
|
\
\
{128, . . . , 1} este mapat n intervalul {128, . . . , 255},
|
|\
\
apoi numerele naturale rezultate sunt reprezentate ca ntregi --[-------][-------]-0
127 128
255
f
ar
a semn.
Ne putem imagina c
a intervalul {128, . . . , 127} este parcurs circular:
<-----------|
[------------|------------]
-128|
0
|127
------------->
Teorem
a:
(1) Dac
a [x]sn = cn1 . . . c0 , atunci: x 0 cn1 = 0
(cn1 s.n. bitul de semn)
s
(2) Dac
a x, x M, atunci [x]sn =
[x]sn = (
+1
[x]n )
s
s
s
(3) Dac
a x, y , x y M, atunci [x y ]n = [x]n
+(
[y ]sn ) = [x]sn
+((
+1)
[y ]n )
(4) Dac
a x {2p1 , 2p1 1}, [x]sp = cp1 . . . c0 si p < q, atunci:
[x]sq = cp1 . . . cp1 cp1 . . . c0 (se extinde bitul de semn).
{z
}
|
q p ori
s
Observatie: Dac
a efectu
am
[x]sn , adic
a (
+1, pentru x = 2n1 , vom
[x]n )
obtine tot [x]sn , ceea ce, cu punctul (2) din teorema anterioar
a, pare s
a nsemne
c
a (2n1 ) = 2n1 (deoarece au aceeasi reprezentare).
Totusi, nu exist
a nici o contradictie aritmetic
a sau cu bijectivitatea lui [.]sn ,
deoarece formula de la punctul (2) din teorema anterioar
a se aplic
a doar dac
a
x, x M, iar n acest caz x 6 M.
p = 8 */
q = 16 */
se reprezinta -127 ca intreg cu semn pe 8 biti */
se extinde reprezentarea din x de la 8 biti la 16 biti,
prin propagarea bitului de semn */
Verificati c
a valoarea reprezentat
a n y este tot 127 (punctul (4) din teorema
anterioar
a).
Avem: [127]s8 = (256 127)82 (deoarece 127 < 0) = (129)82 = 10000001.
Prin propagarea bitului de semn la 16 biti, obtinem: 1111111110000001 =
16
16
((216 1) (27 1) + 1)16
2 = (65535 127 + 1)2 = (65409)2
Aceasta este reprezentarea ca ntreg cu semn a unui num
ar z < 0, deoarece
bitul 15 (de semn) este 1.
16
Atunci [z]s16 = (65536 + z)16
2 = (65409)2 , deci 65536 + z = 65409, deci
z = 127.
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a
Notatia stiintifica
Notatia stiintific
a si aritmetica sistemelor de calcul n virgula mobil
a folosesc
un mod de reprezentare a unei aproximatii a unui num
ar real care s
a suporte un
domeniu larg de valori. Numerele sunt, n general, reprezentate aproximativ
printr-o valoare cu un num
ar fixat de cifre semnificative care este scalat
a cu
ajutorul unui exponent:
a be
a este mantisa (engl: mantissa, significand, coefficient), b este baza de
enumeratie n care sunt scrise numerele si baza scal
arii (de obicei 2, 10 sau 16),
e este exponentul; semnul + se poate omite.
Notatia stiintifica
Scalarea cu ajutorul exponentului permite acoperirea unui domeniu larg de
valori, at
at foarte mici c
at si foarte mari, cu aceeasi precizie relativ
a. De
exemplu cu 9 cifre semnificative putem descrie, n functie de exponentii folositi,
at
at distante n astronomie cu precizie de 1 an lumin
a, c
at si distante n fizica
atomic
a cu precizie de 1 femtometru (1015 metri) - ambele precizii fiind
acceptabile n domeniul respectiv.
Faptul c
a se retine un num
ar fix de cifre pentru mantis
a si exponent face ca
multimea numerelor reale reprezentabile s
a fie de fapt o multime finit
a de
numere rationale, dintr-un interval fixat.
Mai mult, folosirea scal
arii face ca aceste numere s
a nu fie uniform spatiate n
intervalul respectiv: valorile mici, apropiate de 0, sunt reprezentate cu pasi mici
(ex. 1 femtometru), n timp ce valorile mari, apropiate de extremele
intervalului, sunt reprezentate cu pasi mari (ex. 1 an lumin
a).
Denumirea de virgul
a mobil
a se refer
a la faptul c
a virgula (engl: radix point),
numit
a n functie de baz
a si virgul
a zecimal
a (engl: decimal point), virgul
a
binar
a (engl: binary point), etc., poate fi mutat
a oriunde n raport cu cifrele
semnificative, modific
and corespunz
ator exponentul:
Notatia stiintifica
In informatic
a, termenul de virgul
a mobil
a (engl: floating point) denumeste
aritmetica sistemelor de calcul ce foloseste reprezent
ari ale numerelor pentru
care virgula binar
a nu este fixat
a.
O reprezentare n virgul
a mobil
a este notatie stiintific
a dac
a are o singur
a cifr
a
n st
anga virgulei si este notatie stiintific
a normalizat
a dac
a n plus acea cifr
a
este nenul
a (i.e nu are 0-uri la nceput).
Constat
am c
a notatia stiintific
a normalizat
a pentru un num
ar real nenul este
unic
a.
b0
fractie (n k 1 biti)
k1
bias = 2
iar n c
ampul de
n si k (sau de p , Emin ,
s {0, 1},
Emin E Emax este un numar ntreg,
c1 , . . . , cp1 {0, 1}
(numere reale nenule normalizate).
Ele sunt reprezentate astfel:
bn1 = s , semnul;
Numerele de forma
s {0, 1},
c1 , . . . , cp1 {0, 1} si cel putin unul dintre ci
este
s {0, 1}.
Ele sunt reprezentate astfel:
bn1 = s , semnul;
+, 1 = );
bn2 . . . bnk1 = 2 1, reprezentat prin sirul de biti 1 . . . 1;
bnk2 . . . b0 = 0 . . . 0, fractia nula.
k
Exist
a dou
a feluri de
operatie invalid
a de fiecare dat
a c
and apare ca operand ntr-o operatie;
manifestarea exceptiei poate diferi de la o implementare la alta si poate fi de
ignorare sau poate consta n setarea unor flag-uri si/sau executarea unui trap
(ntrerupere) care lanseaz
a o rutin
a ce primeste NaN -ul ca parametru;
k1
[22
n+k
k1
n+k
(2nk 1)]
[0, 22
k1
n+k
(2nk 1)]
22
+2
|0.0 .{z
. . 01}2 = 22
k1
n+k+3
reprezentat:
0 0| .{z
. . 0} 0| . .{z. 0 1}
|{z}
22
1.1
. . . 1}2 = 22
| {z
k1
n+k
(2nk 1),
reprezentat:
0 1| . .{z. 1 0} 1| .{z
. . 1}
|{z}
[2 , 2
i+1
(0, 22
[22
k1
k1
n+k+3
n+k+3
n+k+3
k1
, 22
+3
sunt
k1
[22 1 , 22
2k1 n+k
sunt reprezentate cu pasul 2
.
n+k
(2nk 1)]
...
(numere nereprezentabile)
k1
2k1 +2
0.0 . . . 012 = 22 +2 2n+k+1
0
. . 0} 0
| . .{z. 0 1} = 2
|{z} 0
| .{z
k1
s(1) c(k)
f(n-k-1)
= 22
(cel mai mic num
ar nenul reprezentabil)
...
n+k+3
k1
pas 22 n+k+3
k1
. . 1} = 22 +2 0.1 . . . 12
0 0
. . 0} 1
| .{z
|{z}
| .{z
s(1)
c(k)
f(n-k-1)
k1
= 22 +2 (2nk1 1) 2n+k+1
k1
= 22 n+k+3 (2nk1 1)
k1
pas 22 n+k+3
k1
. . 0} = 22 +2 1.0 . . . 02
0 0
. 0 1} 0
| .{z
|{z}
| . .{z
s(1) c(k)
f(n-k-1)
...
k1
pas 22
n+k+3
= 22
k1
+2
c(k)
f(n-k-1)
k1
+2
1.1 . . . 12
2k1 +2
=2
(2nk 1) 2n+k+1
2k1 n+k+3
=2
(2nk 1)
k1
pas 22 n+k+3
k1
k1
. . 0} = 22 +2 10.0 . . . 02 = 22 +3 1.0 . . . 02
0 0
| .{z
|{z}
| . . .{z0 1 0} 0
s(1)
...
c(k)
f(n-k-1)
= 22
k1
+3
k1
pas 22 n+k+4
k1
0 0
. . 1} = 22 +3 1.1 . . . 12
| .{z
|{z}
| . . .{z0 1 0} 1
s(1)
c(k)
f(n-k-1)
k1
= 22 +3 (2nk 1) 2n+k+1
k1
= 22 n+k+4 (2nk 1)
k1
pas 22 n+k+4
k1
k1
0 0
. . 0} = 22 +3 10.0 . . . 02 = 22 +4 1.0 . . . 02
|{z}
| . . .{z0 1 1} 0
| .{z
s(1)
c(k)
f(n-k-1)
= 22
k1
+4
...
k1
0 1
. . 0} = 22
|{z}
| . . .{z1 0 1} 0
| .{z
s(1)
c(k)
f(n-k-1)
...
1.0 . . . 02
k1
= 22
k1
pas 22 n+k1
k1
k1
. . 1} = 22 2 1.1 . . . 12 = 22 2 (2nk 1)2n+k+1
0 1
|{z}
| . . .{z1 0 1} 1
| .{z
k1
s(1)
c(k)
f(n-k-1)
= 22 n+k1 (2nk 1)
2k1 n+k1
pas 2
k1
k1
k1
0 1
. 1 0} 0
. . 0} = 22 2 10.0 . . . 02 = 22 1 1.0 . . . 02 = 22 1
|{z}
| . .{z
| .{z
s(1)
...
c(k)
f(n-k-1)
k1
pas 22 n+k
k1
k1
0 1
. 1 0} 1
. . 1} = 22 1 1.1 . . . 12 = 22 1 (2nk 1) 2n+k+1
| .{z
|{z}
| . .{z
k1
s(1) c(k)
f(n-k-1)
= 22 n+k (2nk 1)
(cel mai mare num
ar nenul reprezentabil)
0 |1 . .{z
. 1 0} 1| .{z
. . 1}
|{z}
s(1)
c(k)
f(n-k-1)
+:
. . 0}
0 1| .{z
. . 1} 0| .{z
|{z}
s(1)
c(k)
f(n-k-1)
ceea ce exprim
a ideea c
a
n = 1 + k + (p 1) = k + p .
Rezult
a:
2126 0.0
. . 01}2 = 2149 ,
| .{z
24 cifre ale mantisei
reprezentat:
0 0| .{z
. . 0} 0| . .{z. 0 1}
|{z}
2127 1.1
. . . 1}2 = 2104 (224 1),
| {z
24 cifre ale mantisei
reprezentat:
0 1| . .{z. 1 0} 1| .{z
. . 1}
|{z}
149
(0, 2149 )
[2149 , 2125 ]
Pentru orice
...
(numere nereprezentabile)
126
0 0
. . 0} 0
0.0 . . . 012
|{z}
| .{z
| . .{z. 0 1} = 2
s(1) c(8)
f(23)
(cel mai mic num
ar nenul reprezentabil)
...
= 2126 223
= 2149
pas 2149
...
pas 2149
= 2126
...
pas 2148
0 0
. . 1} = 2125 1.1 . . . 12 = 2125 (224 1) 223
|{z}
| . . .{z0 1 0} 1
| .{z
s(1) c(8)
f(23)
= 2148 (224 1)
pas 2148
. . 0} = 2125 10.0 . . . 02 = 2124 1.0 . . . 02 = 2124
0 0
| .{z
|{z}
| . . .{z0 1 1} 0
s(1) c(8)
f(23)
...
0 1
. . 0} = 2126 1.0 . . . 02
|{z}
| . . .{z1 0 1} 0
| .{z
s(1)
c(8)
f(23)
...
= 2126
pas 2103
...
= 2127 1.0 . . . 02
= 2127
pas 2104
0 1
. 1 0} 1
. . 1} = 2127 1.1 . . . 12 = 2127 (224 1) 223
|{z}
| . .{z
| .{z
s(1)
c(8)
f(23)
= 2104 (224 1)
(cel mai mare num
ar nenul reprezentabil)
21022 0.0
. . 01}2 = 21074 ,
| .{z
53 cifre ale mantisei
reprezentat:
0 0| .{z
. . 0} 0| . .{z. 0 1}
|{z}
21023 1.1
. . . 1}2 = 2971 (253 1),
| {z
53 cifre ale mantisei
reprezentat:
0 1| . .{z. 1 0} 1| .{z
. . 1}
|{z}
1074
(0, 21074 )
[21074 , 21021 ]
Pentru orice
...
(numere nereprezentabile)
1022
0 0
. . 0} 0
0.0 . . . 012
|{z}
| .{z
| . .{z. 0 1} = 2
s(1) c(11)
f(52)
(cel mai mic num
ar nenul reprezentabil)
...
= 21022 252
= 21074
pas 21074
...
pas 21074
= 21022
...
pas 21073
0 0
. . 1} = 21021 1.1 . . . 12 = 21021 (253 1) 252
|{z}
| . . .{z0 1 0} 1
| .{z
s(1)
c(11)
f(52)
= 21073 (253 1)
pas 21073
. . 0} = 21021 10.0 . . . 02 = 21020 1.0 . . . 02 = 21020
0 0
| .{z
|{z}
| . . .{z0 1 1} 0
s(1)
c(11)
f(52)
...
. . 0} = 21022 1.0 . . . 02
0 1
| .{z
|{z}
| . . .{z1 0 1} 0
s(1) c(11)
f(52)
= 21022
...
pas 2970
0
. . 1} = 21022 1.1 . . . 12 = 21022 (253 1) 252
|{z} 1
| . . .{z1 0 1} 1
| .{z
s(1) c(11)
f(52)
= 2970 (253 1)
970
pas 2
. . 0} = 21022 10.0 . . . 02 = 21023 1.0 . . . 02 = 21023
0
. 1 0} 0
| .{z
|{z} 1
| . .{z
s(1)
...
c(11)
f(52)
pas 2971
0 1
. 1 0} 1
. . 1} = 21023 1.1 . . . 12 = 21023 (253 1) 252
|{z}
| . .{z
| .{z
s(1) c(11)
f(52)
= 2971 (253 1)
(cel mai mare num
ar nenul reprezentabil)
Formatul double are ca avantaj fat
a de formatul single at
at domeniul mai mare
al exponentului c
at, mai ales, precizia mai mare, datorat
a mantisei mai mari.
S
a se reprezinte n format single si double num
arul real
x = 4.75.
Reprezent
am x n baza 2:
4 : 2 = 2 rest 0
2 : 2 = 1 rest 0
1 : 2 = 0 rest 1
0.75 2 = 1.5
0.5 2 = 1.0
Rezult
a (x)2 = 100.11
In notatia stiintific
a normalizat
a (n baza 2) avem: x = 1.0011 22
Deci:
semnul =
exponentul = 2
mantisa = 1.0011
In formatul single, deoarece 126 2 127, vom avea:
s = 1
c = (2 + 127)2 = (129)2 = 10000001
f = 00110000000000000000000
11000000100110000000000000000000
Determin
am si reprezentarea hexa a lui x ca single:
1100
|{z} 0000
|{z} 1001
|{z} 1000
|{z} 0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z}
C
C0980000
11000000000100110000000000000000
00000000000000000000000000000000
Determin
am si reprezentarea hexa a lui x ca double:
1100
|{z} 0000
|{z} 0001
|{z} 0011
|{z} 0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z}
C
0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z}
0
C013000000000000
S
a se determine valoarea x reprezentat
a de urm
atorul format
single:
11000000101000000000000000000000
Identific
am valorile c
ampurilor componente:
1 10000001
|
{z
}
|{z}
| {z } 01000000000000000000000
s
Deci:
s = 1
c = 10000001 = (27 + 1)2 = (129)2
f = 01000000000000000000000
Intruc
at 0 < c < 28 1 = 255, rezult
a (pentru single bias = 127):
x = (1)1 2129127 1.010000000000000000000002 =
= 22 (20 + 22 ) = 4 (1 + 0.25) = 4 1.25 = 5