Date post: | 05-Jul-2015 |
Category: |
Documents |
Upload: | architeutis |
View: | 3,415 times |
Download: | 4 times |
4
BAZELE NUMERICE ALE CALCULATOARELOR
4.1 Sisteme de numeraţie
Un număr reprezintă informaţia a cărei semnificaţie este universal stabilită şi ale cărei prelucrări au la bază aritmetica. Numerele sunt incluse într-o clasă de codificare particulară, în care proprietăţile abstracte ale aritmeticii sunt translatate în mecanismele concrete de calcul asupra codurilor.
Sistemul de numeraţie este format din totalitatea regulilor de reprezentare a numerelor cu ajutorul unor simboluri numite cifre. Numărul de simboluri permise pentru reprezentarea cifrei este numit baza sau rădăcina sistemului de numeraţie.
Sistemele de numeraţie pot fi: poziţionale (sistemele: zecimal, binar, octal); nepoziţional (sistemul roman). În continuare sunt prezentate
simbolurile folosite în cadrul sistemului de numeraţie roman şi valorile zecimale corespunzătoare acestor simboluri:
I X C M V L D 1 10 100 1000 5 50 500
În studiul arhitecturii calculatoarelor ne interesează în mod deosebit (tabelul 4.1):
reprezentarea binară (baza=2); reprezentarea octală (baza=8); reprezentarea zecimală (baza=10); reprezentarea hexazecimală (b=16).
Sisteme de calcul şi operare
Exemple de sisteme de numeraţie
Tabelul 4.1
Sistem de numeraţie Baza (b) Cifrele Binar 2 (0,1) Octal 8 (0,1,2,3,4,5,6,7) Zecimal 10 (0,1,2,3,4,5,6,7,8,9) Hexazecimal 16 (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)
Fiind dat un număr întreg N, se numeşte reprezentare în baza b, orice succesiune de cifre care satisface următoarele proprietăţi:
n n-1a , a , ...,a0
cifrele lui sunt numere naturale cu proprietatea : 0 ≤ ai ≤ b-1 (i = 0÷n)
există egalitatea: N = anbn + an-1bn-1 + ….a0b0
Când succesiunea de cifre are proprietăţile enumerate, prin definiţie, se poate scrie:
N = anan-1 ….a0 sau (N)b = anan-1 ….a0
Un număr întreg admite o reprezentare unică în baza b. Fiind dat un număr real R, se numeşte reprezentare în baza b, orice succesiune de cifre an,an-1,...,a0,a-1, a-2,...,a-m ce îndeplineşte proprietăţile:
cifrele ai sunt numere naturale cu proprietatea : 0 ≤ ai ≤ b-1 (i m, n= − ) ;
nu există un rang k astfel încât să avem: ak = ak-1 = ak-2 = … = b-1
există egalitatea: R = anbn + an-1bn-1 + ….a0b0 + a-1b-1 +….+ a-mb-m
În situaţia în care succesiunea de cifre are proprietăţile enumerate prin definiţie se scrie:
R = anan-1….a0, a-1a-2 …. a-m
an este cifra cea mai semnificativă (CCMS) a numărului R, iar a-m este cifra cea mai puţin semnificativă (CCMPS).
Bazele numerice ale calculatoarelor
4.2 Conversia bazei de numeraţie
Fiind dat un număr reprezentat în sistemul de numeraţie cu baza b, calculul cifrelor reprezentării în baza q, q>1 se numeşte conversia din baza b în baza q.
Conversia numerelor dintr-un sistem de numeraţie b în alt sistem de numeraţie cu baza q se efectuează examinând separat partea întreagă şi partea fracţionară.
Fie (N)b=(NI)b + (NF)b, unde (NI)b – reprezintă partea întreagă a numărului (N)b iar (NF)b reprezintă partea fracţionară.
4.2.1 Conversia numerelor întregi
În noua bază de numeraţie q, partea întreagă [(NI)b] se va scrie:
(N ) = a q + a q + + a qI b nn
n-1n-1
00⋅ ⋅ ⋅ ⋅ ,
unde ia (i = 0, n) sunt cifre ce aparţin sistemului de numeraţie în baza q. Conversia părţii întregi (NI)b în baza q se va reduce la determinarea coeficienţilor ia (i = 0, n) , ce se obţin prin împărţirea succesivă a lui (NI)b cu q, astfel:
(NI)b/q=(anqn-1+an-1qn-1+,...,+a1) + a0/q → a0 (NI1)b - partea întreagă Rest a câtului
( NI1)b/q= (anqn-2+⋅⋅⋅⋅+a2) + a1/q → a1
(NI2)b
⋅ ⋅
b/q= anqn-k-1+an-1qn-k-2+⋅⋅⋅+ak+1 + ak/q → ak(NIk)
(NI(k+1))b
⋅ ⋅ (NI(n-1)b/q= an + an-1/q → an-1
(NIn)b
(NIn)b/q= 0 + an/q → an
Sisteme de calcul şi operare
Algoritmul se încheie când partea întreagă a câtului devine nulă. Cifra an reprezintă cifra cea mai semnificativă iar a0 este cifra cea mai puţin semnificativă.
Exemplul 1
Fiind dat numărul (248)10 să se facă conversia sa în sistemele: binar,
octal şi hexazecimal. (Numerele reprezentate în sistemul zecimal, în mod obişnuit, se scriu fără specificarea bazei de numeraţie.)
Rezolvare. a. Conversia în binar
248/2=124 + 0/2 → 0 (a0) 124/2= 62 + 0/2 → 0 (a1) 62/2= 31 + 0/2 → 0 (a2) 31/2= 15 + 1/2 → 1 (a3) 15/2= 7 + 1/2 → 1 (a4) 7/2= 3 + 1/2 → 1 (a5) 3/2= 1 + 1/2 → 1 (a6) 1/2= 0 + 1/2 → 1 (a7) (248)10=(11111000)2 b. Conversia în octal 248/8=31 + 0/8 → 0 (a0) 31/8= 3 + 7/8 → 7 (a1) 3/8= 0 + 3/8 → 3 (a2) (248)10=(370)8 c. Conversia în hexazecimal 248/16=15 + 8/16 → 8 (a0) 15/16= 0 + 15/16→ F (a1) (248)10=(F8)H
Bazele numerice ale calculatoarelor
Calculul simplificat pentru conversia în:
binar octal hexazecimal
248 0 248 0 248 8
124 0 31 7 15 15
62 0 3 3 0
31 1 0
15 1
7 1
3 1
1 1
0
Aşadar, (248)10=(11111000)2=(370)8=(F8)H
4.2.2 Conversia rapidă
În cazurile în care între cele două baze de numeraţie (implicate în
conversie) există o relaţie de genul: b1=b2
p
(b1 şi b2 sunt cele două baze, p este număr natural mai mare sau egal cu 2) atunci conversia se poate realiza mai rapid.
Pentru a face conversia din baza b2 (baza mai mică) în baza b1, se împarte numărul reprezentat în b1 în grupe de câte p cifre, de la dreapta la stânga pentru partea întreagă şi de la stânga la dreapta pentru partea fracţionară. Dacă ultimul grup de cifre nu are exact p cifre, se completează cu zerouri pentru a se obţine un grup de p cifre.
Pentru a face conversia din baza b1 (baza mai mare) în baza b2, pentru fiecare cifră a numărului din baza b1 se asociază un grup de p cifre în baza b2, obţinându-se astfel numărul în noua bază b2.
Sisteme de calcul şi operare
Exemplul 2. Pentru a face conversia din baza 2 în baza 8 sau 16 se poate porni de
la reprezentarea în baza 2 a numărului şi deoarece 8=23 iar 16=24, se pot face grupări de 3 respectiv 4 cifre binare pentru a obţine reprezentarea în aceste baze. În cazul numerelor întregi gruparea se face începând de la CCMPS (de la dreapta la stânga numărului).
(248)10=( 11 111 000 )2=(370)8 (248)10=( 1111 1000 )2=(F8)H
Exemplul 3. Pentru a face conversia din baza 8 în baza 2 vom înlocui fiecare
cifră a numărului scris în baza 8 cu un grup de 3 cifre binare, conform tabelului 4.2.
Conversia rapidă din baza 8 în baza 2
Tabelul 4.2
Cifra din baza 8 Grupul de cifre în baza 2 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111
Folosind datele din tabelul anterior, numărul (734)8 = (111 011 100)2
prin conversie directă.
Exemplul 4. Pentru a face conversia din baza 16 în baza 2 vom înlocui fiecare
cifră a numărului scris în hexazecimal cu un grup de 4 cifre binare, conform tabelului 4.3.
Conversia rapidă din baza 16 în baza 2
Bazele numerice ale calculatoarelor Conversia rapida din baza 16 in baza 2
Tabelul 4.3
Cifra din hexazecimal Grupul de cifre în baza 2 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111
Folosind datele din tabelul anterior, numărul (5A2)16 = (0101 1010 0010)2 prin conversie directă.
4.2.3 Conversia numerelor fracţionare
Partea fracţionară se poate scrie:
(NF)b=a-1q-1 + a-2q-2 + a-3q-3 + ⋅⋅⋅
unde: a-j reprezintă cifre aparţinând sistemului de numeraţie q. Conversia părţii fracţionare se va reduce la determinarea coeficienţilor a-k (k=1,2,⋅⋅⋅) prin înmulţiri succesive:
(NF)b⋅q=a-1 + a-2q-1 + a-3q-2 + ⋅⋅⋅ → a-1
(NF1)b
(NF1)b⋅q=a-2 + a-3q-1 + a-4q-2 + ⋅⋅⋅ → a-2
(NF2)b
Sisteme de calcul şi operare
unde: a-1 reprezintă cifra cea mai semnificativă a părţii fracţionare. Teoretic, algoritmul ar trebui să se încheie când partea fracţionară devine egală cu zero, ceea ce se întâmplă într-un număr limitat de cazuri.
În practică, procedeul are un număr finit de paşi, în funcţie de precizia aleasă. De exemplu, pentru a obţine o precizie bună, pentru fiecare cifră zecimală trebuie calculate 4 cifre binare (în cazul conversiei din zecimal în binar).
Exemplul 5
Fiind dat numărul (0,251)10 să se realizeze conversia în sistemele: binar, octal şi hexazecimal.
Rezolvare.
a. Conversia în octal 0,251⋅8=2 + 0,008 → 2 (a -1) 0,008⋅8=0 + 0,064 → 0 (a -2) 0,064⋅8=0 + 0,512 → 0 (a -3) 0,512⋅8=4 + 0,096 → 4 (a -4) 0,096⋅8=0 + 0,768 → 0 (a -5) (0,251)10=(0,20040)8 b. Conversia în hexazecimal 0,251⋅16=4 + 0,016 → 4 (a -1) 0,016⋅16=0 + 0,256 → 0 (a -2) 0,256⋅16=4 + 0,096 → 4 (a -3)
(0,251)10=(0,404)H
Bazele numerice ale calculatoarelor
c. Conversia în binar
0,251⋅2=0 + 0,502 → 0 (a -1) 0,502⋅2=1 + 0,004 → 1 (a -2) 0,004⋅2=0 + 0,008 → 0 (a -3) 0,008⋅2=0 + 0,016 → 0 (a -4) 0,016⋅2=0 + 0,032 → 0 (a -5) 0,032⋅2=0 + 0,064 → 0 (a -6) 0,064⋅2=0 + 0,128 → 0 (a -7) 0,128⋅2=0 + 0,256 → 0 (a -8) 0,256⋅2=0 + 0,512 → 0 (a -9) 0,512⋅2=1 + 0,024 → 1 (a-10) 0,024⋅2=0 + 0,048 → 0 (a-11) 0,048⋅2=0 + 0,096 → 0 (a-12) 0,096⋅2=0 + 0,192 → 0 (a-13) 0,192⋅2=0 + 0,382 → 0 (a-14) 0,382⋅2=0 + 0,762 → 0 (a-15) 0,762⋅2=1 + 0,524 → 1 (a-16) 0,524⋅2=1 + 0,048 → 1 (a-17)
(0,251)10=(0,01000000010000011)2 Calculul simplificat pentru conversia în:
binar octal hexazecimal
0 251 0 251 0 251 0 502 2 008 4 016 1 004 0 064 0 256 0 008 0 512 4 096 0 016 4 096 0 032 0 768 0 064 0 128 0 256 0 512 1 024
Sisteme de calcul şi operare
Conversia în octal sau hexazecimal se realizează şi din reprezentarea binară a numărului, prin gruparea a câte trei, respectiv patru cifre binare. Gruparea se va face de la stânga spre dreapta (invers decât în cazul părţii întregi).
Astfel, (0,251)10 = (0, 010 000 000 100 000 110)2 = (0, 200405)8 (0,251)10 = (0, 0100 0000 0100 0001 1000)2 = (0, 40418)H
Exemplul 6 Fie numărul (23,65)10. Să se realizeze conversia în sistemele: binar,
octal şi hexazecimal. Rezolvare.
Conversia părţii întregi
Conversia părţii fracţionare
23 1 0 6511 1 1 305 1 0 602 0 1 201 1 0 400 0 80 1 60 1 20 0 40
Deci: (23,65)10=(23)10 + (0,65)10=(10111)2 + (0,10100110)2 (23,65)10 = (1 0 111,1010 0110 )2 = (27,514)8 = (17,A6)H
Bazele numerice ale calculatoarelor
Exemplul 7.
Să se facă conversia din binar în zecimal a numărului (1100011)2. (1100011)2=1⋅26 + 1⋅25 + 0⋅24 + 0⋅23 + 0⋅22 + 1⋅21 + +1⋅20 = (99)10
Exemplul 8. Conversia din binar în zecimal a numărului (110,101)2 (110,101)2=1⋅22 + 1⋅21 + 0⋅20 + 1⋅2-1 + 0⋅2-2 + 1⋅2-3 = 6 + 0,5 + 0,125 =
= (6,625)10
Exemplul 9. Conversia din octal în zecimal a numărului (235)8. (235)8=2 ⋅ 82 + 3⋅81 + 5⋅80=128 + 24 + 5=(157)10
Exemplul 10. Conversia din hexazecimal în zecimal a numărului (23F)H. (23F)H=2⋅162 + 3⋅161 + 15⋅160=512 + 48 + 15=(575)10
4.3 Reprezentarea binară a informaţiei numerice
Informaţia numerică se reprezintă în calculatoare într-unul dintre
formatele: în virgulă fixă (VF); în virgulă mobilă (VM); prin coduri numerice (cel mai utilizat este codul 8421).
Sisteme de calcul şi operare
4.3.1 Reprezentarea în virgulă fixă (VF)
a) Reprezentarea prin mărime şi semn (Cod direct - CD). Un număr reprezentat prin mărime şi semn se poate scrie conform
relaţiei:
N a 2 + a 2
CDn
n
i= m
n-1
ii= ⋅ ⋅
−∑
na = 0 N 1 N 0
dacã dacã
≥⎧⎨⎩
0p
an este bit de semn, iar ai ∈ {0,1} pentru i m, (n 1)= − − şi au fost obţinute în urma conversiei numărului (N) în sistemul de numeraţie binar. Macheta de reprezentare a numărului N este:
Observaţie. S-a considerat că partea întreagă se reprezintă prin n cifre binare, iar partea fracţionară prin m cifre binare:
dacă n = 0 → se obţine reprezentarea numerelor subunitare; dacă m = 0 → se obţine reprezentarea numerelor întregi.
Bazele numerice ale calculatoarelor
Exemplu. Să se reprezinte în cod direct (pe 16 biţi) numărul (27)10, respectiv
numărul -(27)10. Rezolvare.
(27 ) = (11011) - -- (27 ) (0000000000011011)
- (27 ) (1000000000011011)
10 2 10
CD
10
CD
=
=
f
b
2
2
semn
b) Reprezentarea prin complement faţă de 1 ( cod invers - CI) Un număr reprezentat în cod invers se poate scrie:
N
0 2 + a 2 N 0
1 a 2 N 0
CIn
i= m
n-1i i
i= m
n-1
ii
=
+
⋅ ≥
⋅
⎧
⎨
⎪⎪
⎩
⎪⎪
∑ ⋅
⋅ ∑
-
n
-
dacã
dacã 2 p
a i i= −1 a pentru i m, (n 1)= − − iar ai reprezintă cifrele binare ale numărului ⏐N⏐.
Observaţie. Reprezentarea prin complement faţă de 1 se obţine astfel:
1. Fie calculând: N
CI= n+12 -| N CD| - - m2
⏐N⏐CD este reprezentarea în cod direct a valorii absolute a numărului N.
Sisteme de calcul şi operare
2. Fie prin inversarea cifrelor binare (inclusiv cifra de semn) din
reprezentarea în cod direct a numărului în valoare absolută.
Exemplu. Să se reprezinte în cod invers numerele (14)10 şi -(14)10
(reprezentarea pe un octet). Rezolvare. * Numerele pozitive se reprezintă în CI la fel ca şi în CD.
(14 10) = (1110 2) (14 10)
CD, CI= ( 1110 )
0000
↑ semn
CI pentru -(14)10 se poate calcula în două variante: 1.
NCI= ∑ ⋅8
i=0
7i i 02 - a 2 2 -
ai ( i 1,6= ) reprezintă cifrele binare ale numărului (14)10, iar a7="0" este cifra de semn. Calculând:
1 0000 0000 - 0000 1110
Aşadar:
- (14) (1111 0001)
CI
2=↑ semn
1111 0010 - 1 1111 0001
Bazele numerice ale calculatoarelor
2. Acelaşi rezultat se obţinea dacă se pornea de la reprezentarea în
CD a
c. Reprezentarea prin complement faţă de 2 (cod compl tar - CC)
unde:
şi
numărului în valoare absolută, adică (14)10, şi se inversau toate cifrele binare.
(14 10)
CD= (0000 1110 2)
- (14 10)
CI= (1111 0001 2)
emen
Forma de scriere în cod complementar este:
N
0 2 + a 2
1 ~a 2 pentru N 0
CCn
i= m
n-1i i
i= m
n-1i
i=
+
⋅ ≥⎧
⎨
⎪⎪
⎩
⎪⎪
−
−
∑
⋅ ∑
pentru N 0
n2 p
~a 2 = a 2 + 2 i= m
ii
i= mi
i -m
− −∑ ∑ ⋅n-1 n-1
a ai i= −1 iar ai (pentru i=n-1, n-2,...,0,...,-m) reprezintă cifrele binare umărulu
Codul complementar al unui număr se poate obţine astfel:
1. Fie calculând:
| N| are aceeaşi semnificaţie
ale n i | N|.
CC N 2 - |N|n 1
CD= +
Sisteme de calcul şi operare
ca la reprezentarea în CI; 2. Fie adunând un 1 la CCMPS a reprezentării numărului în CI; 3. Dacă se consideră reprezentarea în CD a numărului în valoare
absolută, pentru obţinerea codului complementar, începând de la CCMPS - se lasă neschimbate toate cifrele de zero, inclusiv prima cifră binară a cărei valoare este 1; apoi toate celelalte cifre binare se vor inversa, inclusiv cifra de semn.
Exemplu.
Să se reprezinte în CC numerele 14 şi -14 (pe un octet). Rezolvare.
14 (0000 1110 )
CD,CI,CC
2=↑
semn
Pentru a calcula CC al numărului -14 vom folosi cele trei metode. 1.
- (14 ) 2 a 2
10
CC8
i=0
7
ii= - ∑ ⋅ ai (i=1÷6) fiind cifrele binare ale
numărului zecimal 14, iar a7 = 0 cifra de semn.
- (14 ) (1111 0010 )10
CC
2= 1 0000 0000 - 0000 1110 1111 0010
Bazele numerice ale calculatoarelor
2.
- (14) (1111 0001)
1
- (14) (1111 0010 )
CI
2
CC
2
=
=
Cifre binare nemodificate
odifica 0 → 1 şi 1 → 0.
În sistemul octal sau hexazecimal vom avea:
Gruparea a trei cifre binare (respectiv patru cifre binare) se face
Obse . ulatoarele IBM-PC reprezentarea în virgulă fixă se face pentru
nume
• format întreg pe cuvânt (word), având macheta:
3.
14 000011 10 2=CD
( )
Cifrele binare se vor m
− =14 11110010 2CC
( )
- (14) (362 ) = (F2 )
CC
8 H=
începând de la CCMPS (pentru numerele întregi).
rvaţie În calcrele întregi. Se utilizează formatele:
Sisteme de calcul şi operare
• formatul scurt:
• formatul lung:
unde S este bitul de semn şi ⎪⎩
⎪⎨
⎧
<
≥
0 N dacă 1
0 N dacă 0 = S
iar Ii (i=0÷14|30|62) sunt cifrele reprezentării binare a numărului. Dacă N<0 (număr negativ) se utilizează reprezentarea prin complement faţă de 2 (cod complementar).
În tabelul 4.4 sunt prezentate formatul, precizia şi domeniul de valori ale datelor reprezentate în virgulă fixă pentru Intel.
Lungimea, precizia şi domeniul de valori
ale datelor reprezentate în virgulă fixă la Intel
Tabelul 4.4
Tipul Lungime Precizie Domeniul de valori (binar)
Domeniul de valori (zecimal)
Format word
16 15 -215 – 215-1 -32768 ÷ 32767
Format scurt
32 31 -231 – 231-1 -2.14*109 ÷ 2.14*109
Format lung
64 63 -263 – 263-1 -9.22*1018 ÷ 9.22*1018
Bazele numerice ale calculatoarelor
Există o serie largă de aplicaţii ce necesită numere care nu sunt întregi. Există, de asemenea, mai multe modalităţi de reprezentare a numerelor reale fracţionare.
Una dintre modalităţi este virgula fixă, în care folosim aritmetica numerelor întregi şi ne imaginăm virgula undeva în altă parte decât la dreapta bitului CMPS.
Adunarea a două numere astfel reprezentate poate fi făcută în acelaşi mod ca şi o adunare întreagă, în timp ce înmulţirea necesită o deplasare de biţi.
De-a lungul anilor au fost propuse şi alte reprezentări ce utilizau fie
stocarea logaritmului numerelor şi executarea unei înmulţiri prin adunarea logaritmilor, fie foloseau o pereche de întregi (a,b) pentru reprezentarea fracţiei a/b.
Dintre toate aceste propuneri, una singură a avut succes pe scară largă: reprezentarea în virgulă mobilă, prezentată în continuare.
4.3.2 Reprezentarea în virgulă mobilă
În cazul reprezentării numerelor în virgulă mobilă, se pleacă de la
faptul că un număr N se poate scrie sub forma: N=±(f)b*bE, unde:
b – reprezintă baza sistemului de numeraţie utilizat (mai frecvent se utilizează baza 2 sau 16);
E – exponentul real; f – partea fracţionară a numărului.
Reprezentarea în calculator, implică existenţa a trei câmpuri, acestea
fiind: bitul de semn:
⎪⎪⎩
⎪⎪⎨
⎧
<
≥
0 N dacă 1
0 N dacă 0
= S
La unele calculatoare reprezentarea numerelor reale pozitive diferă
de reprezentarea numerelor negative numai prin bitul de semn.
Sisteme de calcul şi operare
Exponentul (cunoscut şi sub denumirea de caracteristică), are o
valoare determinată prin relaţia:
EXP = exponent real + constantă în exces
Constanta în exces se stabileşte în funcţie de format şi de calculator şi are ca scop eliminarea unei zone în care să fie specificat semnul corespunzător exponentului real. Se pot reprezenta în acest mod şi numere negative folosind acelaşi tip de reprezentare.
Fracţia (sau mantisa). Numărul de cifre binare corespunzătoare acestei zone variază, de asemenea, în funcţie de calculator şi formatul utilizat. De regulă, fracţia trebuie să fie normalizată, respectând relaţia:
1< )(fb1
b≤ Pentru reprezentarea în virgulă mobilă a unui număr real N, într-un
calculator din familia IBM-PC se consideră:
N=±2E (f)2 1≤(f)2<2 iar (f)2=I0f1f2...fn (I0 = 1 iar valoarea lui n depinde de
formatul ales). De regulă se utilizează următoarele formate:
1) Formatul real binar
simplă precizie, având macheta:
Bazele numerice ale calculatoarelor
dublă precizie:
S este bit de semn (S=0 dacă N≥0 şi S=1 dacă N<0); fn - cifrele binare ale fracţiei normalizate; Ei - cifrele binare ale zonei de exponent; EXP=E + (81)H.
Dacă zona exponent este egală cu zero, numărul zecimal este egal cu
zero. Dacă zona exponent este diferită de zero, atunci numărul zecimal va fi determinat astfel:
2) Formatul real sau formatul IEEE (Institute of Electrical and Electronics Engineers) 754, apărut în anul 1985:
2*)>fractie< 0.1 ( >S>=<N< )(80>EXP<2
h−∗
simplă precizie (format scurt), având macheta:
dublă precizie (format lung), cu macheta:
unde:
S - bit de semn (S=0 dacă N≥0 şi S=1 dacă N<0);
fi - cifrele binare ale zonei exponent (EXCES=127 sau 1023);
EXP = E + 127 [(7F)H] - pentru format scurt;
EXP = E + 1023 [(3FF)H] - pentru format lung.
Sisteme de calcul şi operare
format temporar (sau real extins), cu macheta:
unde:
S - bit de semn;
I0 - bitul părţii întregii, ce se memorează în formatul temporar, implicit în formatul scurt şi lung;
fi - cifrele binare ale fracţiei;
Ei - cifrele binare ale zonei exponent,
EXP = E + 16383 [(3FFF)H] Dacă exponentul este egal cu zero, atunci numărul este egal cu zero.
Dacă exponentul nu este egal cu zero, numărul zecimal se va calcula după relaţia:
<N>=<S>*(1.<fracţie>)2*2<EXP>-EXCES
Exemplu.
Să se reprezinte în virgulă mobilă (în format binar cât şi în format real) simplă precizie numerele: N1 = 1 şi N2 = -1.
Rezolvare. N1 = 1⋅20 ; N2 = -1⋅20 a) Format binar
1
VM
HN (8100 0000)=
Bazele numerice ale calculatoarelor
2
VM
HN (8180 0000)=
b) Format real
N1=(3F800000)H
N2=(BF800000)H
Exemplu Fie N1 = (8561 0000)H - reprezentarea în virgulă mobilă simplă
precizie format binar. Să se determine numărul din zecimal. Rezolvare.
N1=25⋅(0,1110000100...0)2=25x(2-1+2-2+2-3+2-8) = 24+23+22+2-3=28,125
4.3.3 Numere şi valori speciale
În cadrul reprezentării valorilor numerice pentru microprocesorul
Intel, există o serie de numere şi valori ce au o reprezentare specială, prezentate în continuare. Există astfel:
Zerouri cu semn. În acest sens, valoarea 0 poate fi reprezentată drept +0 sau -0 în funcţie de bitul de semn. Ambele reprezentări sunt egale ca valoare. Semnul unui rezultat cu valoare 0 depinde de operaţia efectuată şi de modalitatea de rotunjire.
Numere finite normalizate si denormalizate. +∞, -∞ reprezintă valoarea maximă pozitivă, respectiv valoarea minimă negativă pentru numere reale ce poate fi reprezentată în virgulă mobilă. Valoarea infinit este totdeauna reprezentată de o fracţie 0 şi de exponentul maxim permis de formatul respectiv (de exemplu 255 în format simplă precizie). Sunt generate excepţii atunci când utilizarea unei valori infinite ca operand sursă conduce la o operaţie invalidă.
Sisteme de calcul şi operare
Valori NaN (Not a Number). Aceste valori nu fac parte din mulţimea numerelor reale. Reprezentarea lor se face prin intermediul unui exponent maxim acceptat de reprezentarea respectivă şi a unei fracţii diferită de zero. În acest caz bitul de semn este ignorat.
Numere finite normalizate şi denormalizate În această categorie intră numerele diferite de zero finite. Numerele
normalizate reprezintă numerele ce pot fi codificate într-o formă normalizată între 0 şi ∞. În reprezentarea de mai jos, acest grup include toate numerele cu exponenţi modificaţi între 1 şi 254 (între –126 şi 127).
Atunci când exponentul modificat este 0, numerele mai mici pot fi reprezentate făcând bitul părţii întregi zero. Numerele din acest domeniu se numesc numere denormalizate. Acest lucru duce la scăderea preciziei (numărul de biţi semnificativi ai fracţiei este redus datorită apariţiei zerourilor de la început).
În momentul normalizării calculelor în virgulă mobilă, unitatea în virgulă mobilă operează cu numere normalizate şi produce rezultate normalizate. Numerele denormalizate reprezintă o condiţie de excepţie denumită underflow. Un număr denormalizat este calculat prin intermediul unei tehnici denumită gradual underflow. În figura 4.1 este prezentat un exemplu al procesului de denormalizare, iar în figura 4.2 sunt înfăţişate reprezentările valorilor +0, -0 şi a numerelor normalizate şi denormalizate finite.
Figura 4.1 Exemplu de denormalizare
Bazele numerice ale calculatoarelor
Figura 4.2 Reprezentări pentru +0, -0, numere normalizate şi denormalizate finite
Valori NaN (Not A Number) Standardul IEEE defineşte două clase de valori NaN:
QNaN (quiet NaN) –au bitul CMS setat (valoarea 1)
SNaN (signaling NaN) – au bitul CMS zero.
Valorile QNaN se propagă prin operaţiile aritmetice fără a indica o excepţie, pe când valorile SNaN semnalizează în general o excepţie (operaţie invalidă) atunci când apar ca operanzi în operaţii aritmetice. În figura 4.3 sunt înfăţişate modalităţile de reprezentare pentru valorile speciale +∞, -∞ şi NaN. În figura 4.4 sunt prezentate operaţiile ce generează valorile speciale despre care am discutat.
Figura 4.3 Reprezentări pentru +∞, -∞, valori NaN
Sisteme de calcul şi operare
Figura 4.4 Operaţii ce generează valori speciale
4.3.4 Reprezentarea numerelor întregi zecimale codificate binar (BCD)
Pentru reprezentarea numerele folosind codificarea BCD (Binary
Coded Decimal) se utilizează două formate: formatul împachetat (packed BCD) şi formatul despachetat (unpacked BCD).
Reprezentarea în BCD format împachetat conţine două cifre zecimale pe un octet (cifra zecimală mai puţin semnificativă pe biţii 0 ÷ 3 şi cifra zecimală mai semnificativă pe biţii 4 ÷ 7).
Datele reprezentate în BCD format despachetat conţin o cifră zecimală pe octet - memorată în biţii 0 ÷ 3, iar biţii 4 ÷ 7 conţin informaţia (F)H [(1111)2].
Microprocesorul acceptă datele în format BCD împachetat sau despachetat, având următoarea machetă de reprezentare pe un octet:
Bazele numerice ale calculatoarelor
Exemplu. Să se reprezinte în zecimal codificat binar (în BCD) numerele
zecimale N1=9450 şi N2=78431. Rezolvare.
N1=(1001 0100 0101 0000)2 - format împachetat N2=(0111 1000 0100 0011 0001)2 - format împachetat
N1=(F9F4F5F0)H - format despachetat N2=(F7F8F4F3F1)H - format despachetat
Pentru reprezentarea numerelor nu s-a impus o anumită lungime a
secvenţelor şi nu s-a ţinut cont de semnul numărului. Pentru calculatoarele compatibile IBM-PC coprocesorul matematic
memorează numerele întregi zecimale pe zece octeţi - în format împachetat. În acest caz macheta de reprezentare este:
unde:
S - bit de semn ( 0 pentru numere pozitive, 1 pentru numere negative); Di - cifră zecimală (două cifre per octet); X - biţi nefolosiţi.
Numerele negative se deosebesc de cele pozitive prin bitul de semn.
4.4 Operaţii aritmetice în sistemul binar
4.4.1 Adunarea în binar
Tabela operaţiei de adunare în binar este:
+ 0 1
0 0 1 1 1 *10
* 1 se transportă la rangul următor
Sisteme de calcul şi operare
Exemplu. Să se însumeze în binar (00010101)2 cu (10010111)2. Vom avea: (00010101)2 + (21)10 + (10010111)2 ⇔ (151)10 (10101100)2 (172)10
4.4.2 Scăderea în binar
Tabela operaţiei de scădere în binar este:
Descăzut - 0 1
Scăzător 0 0 1
1 *1 0
* Rezultat datorită împrumutului din rangul superior
Exemplu. Să se scadă în binar: (11011)2 - (27)10
(01111)2 ⇔ (15)10 (01100)2 (12)10
Observaţie. În calculator operaţia de scădere se reduce la o operaţie de adunare prin utilizarea codului invers sau a codului complementar.
Bazele numerice ale calculatoarelor
4.4.3 Înmulţirea în binar Tabela înmulţirii în binar este:
• 0 1
0 0 01 0 1
Exemplu.
Să se efectueze înmulţirea: (1101)2 x (1001)2.
11012• 10012 11012 00002 00002 11012 11101012 Deci (1101)2 x (1001)2 = (1110101)2
(13)10 x (9)10=(117)10
Sisteme de calcul şi operare
4.4.4 Împărţirea în binar Cea mai simplă metodă este scăderea repetată a împărţitorului din
deîmpărţit. Exemplu.
Să se efectueze împărţirea: (1010001)2:(1001)2=(1001)2.
În acest caz împărţirea s-a efectuat fără rest: (81)10 :(9)10=(9)10.
Exemplu. Să se efectueze împărţirea: (100011)2 : (110)2= (101,110)2.
În această situaţie operaţia de împărţire poate continua, astfel încât aproximarea rezultatului să fie cât mai bună.
Operaţiile în sistemul octal sau hexazecimal se vor efectua conform
regulilor de adunare şi înmulţire ce sunt prezentate în tabelele 4.5 ÷ 4.8.
Bazele numerice ale calculatoarelor
Adunarea în sistemul hexazecimal
Tabelul 4.5
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 0 1 2 3 4 5 6 7 8 9 a B C D E F
1 1 2 3 4 5 6 7 8 9 A B C D E F 1
2 2 3 4 5 6 7 8 9 A B C D E F 10 1
3 3 4 5 6 7 8 9 A B C D E F 10 11 1
4 4 5 6 7 8 9 A B C D E F 10 11 12 1
5 5 6 7 8 9 A B C D E F 10 11 12 13 1
6 6 7 8 9 A B C D E F 10 11 12 13 14 1
7 7 8 9 A B C D E F 10 11 12 13 14 15 1
8 8 9 A B C D E F 10 11 12 13 14 15 16 1
9 9 A B C D E F 10 11 12 13 14 15 16 17 1
A A B C D E F 10 11 12 13 14 15 16 17 18 1
B B C D E F 10 11 12 13 14 15 16 17 18 19 1
C C D E F 10 11 12 13 14 15 16 17 18 19 1 1
D D E F 10 11 12 13 14 15 16 17 18 19 1 1 1
E E F 10 11 12 13 14 15 16 17 18 19 1 1 1 1
F F 10 11 12 13 14 15 16 17 18 19 1 1 1 1 1
Sisteme de calcul şi operare
Înmulţirea în sistemul hexazecimal
Tabelul 4.6
* 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 A B C D E F
2 0 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E
3 0 1 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D
4 0 4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C
5 0 5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B
6 0 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A
7 0 7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69
8 0 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78
9 0 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87
A 0 A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96
B 0 B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5
C 0 C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4
D 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3
E 0 E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2
F 0 F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1
Bazele numerice ale calculatoarelor
Adunarea în sistemul octal
Tabelul 4.7
+ 0 1 2 3 4 5 6 7 0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 10
2 2 3 4 5 6 7 10 11
3 3 4 5 6 7 10 11 12
4 4 5 6 7 10 11 12 13
5 5 6 7 10 11 12 13 14
6 6 7 10 11 12 13 14 15
7 7 10 11 12 13 14 15 16
Înmulţirea în sistemul octal
Tabelul 4.8
* 0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7
2 0 2 4 6 10 12 14 16
3 0 3 6 11 14 17 22 25
4 0 4 10 14 20 24 30 34
5 0 5 12 17 24 31 36 43
6 0 6 14 22 30 36 44 52
7 0 7 16 23 34 45 52 61
Sisteme de calcul şi operare
4.5 Operaţiile aritmetice în virgulă fixă (VF) 4.5.1 Adunarea în cod direct (CD)
Se adună mărimile numerelor, fără cifra de semn şi se dă rezultatului semnul comun celor două numere. Fie:
1
CDn n
i= m
n-1i i i
2
CDn n
i= m
n-1i i i
N a 2 a 2 a
N b 2 b 2 b {0,1}
= +
= +
⋅ ∑ ⋅ ∈
⋅ ∑ ⋅ ∈
−
−
{0,1}
2 )t + b + a( + 2 a N + N iiii
1 -n
m = i
nn
CD
21 = ∑
−
⋅
Însumarea se face începând de la bitul cel mai puţin semnificativ al
reprezentării numerelor, ţinându-se cont de transportul de la rangul anterior (ti). Se consideră t-m=0, iar dacă va apare tn (transport de la bitul CMS al
mărimii) avem de-a face cu depăşire binară. Rezultatul operaţiei poate fi corect când nu apare transport de la cifra cea mai semnificativă a mărimii rezultatului şi poate fi incorect când apare transport.
Pentru simplitate, vom lucra cu numere întregi reprezentate pe un octet, primul bit fiind bitul de semn iar următorii şapte biţi pentru mărime (-128 < N < 127).
Bazele numerice ale calculatoarelor
Exemplu Să se însumeze N1 cu N2, având N1=(40)10 şi N2=(60)10. Rezolvare.
1
CD
2
2
CD
2
1 2
CD
2
N (00101000 )
N (00111100 )
N + N (01100100 )
=
=
=
Verificând rezultatul o să obţinem: N1+N2=+(1⋅26+1⋅25+0⋅24+0⋅23+1⋅22+0⋅21+0⋅20)=(100)10
Exemplu Să se calculeze N1 + N2, având N1=40 şi N2=90. Rezolvare.
Bitul CMS al mărimii rezultatului
N (00101000 )
N (01011010 )
N + N (10000010 )
1
CD
2
2
CD
2
1 2
CD
2
=
=
=
Deoarece în acest caz rezultă transport de la bitul CMS, rezultatul este
incorect. (Rezultatul însumării celor două numere nu poate fi reprezentat utilizând doar şapte cifre binare).
Sisteme de calcul şi operare
Exemplu Să se calculeze N1+N2, având N1= -25 şi N2= -30. Rezolvare. Verificând:
N (1 0011001)
N (1 0011110 )
N + N (1 0110111)
1
CD
2
2
CD
2
1 2
CD
2
=
=
=
N1+N2 = -(0⋅26+1⋅25+1⋅24+0⋅23+1⋅22+1⋅21+1⋅20)
N1+N2 = -55, rezultat corect
Exemplu Să se calculeze N1+N2, având N1= -75 şi N2= -80 Rezolvare.
N (11001011)
N (11010000 )
N + N (10011011)
1
CD
2
2
CD
2
1 2
CD
2
=
=
=
Apare transport de la bitul CMS, rezultat incorect.
Bazele numerice ale calculatoarelor
Dacă cele două numere au semne diferite procedura de lucru este asemănătoare celei ce urmează, când numerele sunt reprezentate în cod invers.
4.5.2 Adunarea/scăderea în cod invers (CI)
Adunarea/scăderea numerelor cu acelaşi semn
a) Dacă ambele numere sunt pozitive, reprezentarea lor în cod invers este identică reprezentării în cod direct.
b) Numerele sunt negative, fie N1 < 0 şi N2 < 0 (În continuare se va lucra cu numere întregi reprezentate pe un octet). Vom nota prin ⏐N1⏐CD ,⏐N2⏐CD reprezentarea în cod direct a valorilor
absolute ale numerelor N1 şi N2.
2|N2N
2|N2 N
0CD2
8CI
2
0CD1
8CI
1
- |-=
- |-=
1 2
CI8 8 2 CD 2 CD
0 0N + N 2 2 N | -|N | - 2 - 2= + -|
Având în vedere că rezultatul trebuie să fie de forma:
1 2
CI8 1 CD 2 CD
0N + N 2 N | +|N | ) - 2= -(|
apare necesar ca transportul de la cifra de semn să fie adunat la cifra cea mai puţin semnificativă,
Sisteme de calcul şi operare
Bitul CMPS
Rezultat Transport de la cifra de semn
Exemplu.
Să se calculeze N1+N2, având: N1= -30 şi N2= -14.
Rezolvare
1 2
CI8
1 CD 2 CD0 8N + N 2 0= - (| N | +| N | ) - 2 + 2 - 2
N ( 1110 0001)
N ( 1111 0001)
N + N (1 1101 0010 ) +
N + N (1101 0011)
N + N (1010 1100 )
1
CI
2
2
CI
2
1 2CI
2
1 2
CI
2
1 2
CD
2
=
=
=
=
=
1
Verificând: N1+N2= - (1⋅25+1⋅23+1⋅22)=-44, rezultat corect.
Bazele numerice ale calculatoarelor
Exemplu. Să se calculeze N1+N2, având N1= -81 şi N2= -72 Rezolvare.
Rezultatul este eronat, deoarece cel mai mic număr întreg ce se poate reprezenta în cod invers pe un octet este -127.
Adunarea/scăderea numerelor cu semne diferite Fie N1>0 şi N2<0. Reprezentarea lui N1 este aceeaşi în cod direct şi cod invers.
În urma operaţiei de adunare obţinem:
1
CI
2
2
CI
2
1 2
CI
2
N ( 1010 1110 )
N ( 1011 0110 )
N + N (1 0110 0100 ) +
=
=
=1
1 2
2 1 2N + N (0110 0101) N + N > 0=CI
2CI
8 2 CD0N 2 N | - 2= -|
1 2
CI8 2 CD 1 CD
0N + N 2 N | -|N | ) - 2= -(|
Rezultatul este pozitiv sau negativ, după valorile absolute ale numerelor N1 şi N2.
Sisteme de calcul şi operare
Exemplu. Să se calculeze N1 + N2, având N1=91 şi N2=-20. Rezolvare.
→ rezultat corect
Exemplu. Să se calculeze N1+N2, având N1= -91 şi N2= 20. Rezolvare.
N ( 0101 1011)
N ( 1110 1011)
N + N (1 0100 0110 ) +
N + N (0100 0111)
1
CI
2
2
CI
2
1 2
CI
2
1 2CI
2
=
=
=
=
1
1
CI
2 2
CI
2
1 2
CI
2 1 2
CD
2
N ( 1010 0100) N ( 0001 0100)
N + N (1011 1000) N + N (1100 0111)
= =
= =
Şi în acest caz rezultatul este corect. Pentru verificarea rezultatului se va ţine seama de bitul de semn:
dacă acesta este "0" → reprezentarea rezultatului este acelaşi în cod invers şi cod direct.
dacă acesta este "1" → rezultatul este în cod invers şi diferă de reprezentarea lui în cod direct.
Scăderea a două numere binare se rezumă la adunarea celor două
numere, utilizând reprezentarea în cod invers. Fie N1>0 şi N2>0. Relaţia N1 - N2 este echivalentă cu N1 + (-N2).
Bazele numerice ale calculatoarelor
Observaţie. Adunarea în cod invers, ca şi în cod complementar, operează asupra tuturor cifrelor binare, inclusiv asupra cifrei de semn.
4.5.3 Adunarea/scăderea în cod complementar (CC)
Adunarea /scăderea numerelor cu acelaşi semn a) Dacă ambele numere sunt pozitive, reprezentarea lor în cod
complementar este identică reprezentării în CD. b) Numerele sunt negative. Fie N1<0 şi N2<0:
1CC
8 1 CD 2CC
8 2 CDN 2 N | N 2 N |= -| = -|
Prin ⏐N1⏐CD, ⏐N2⏐CD am notat reprezentările în cod direct ale valorilor absolute pentru numărul N1, respectiv N2. Deci:
Forma de reprezentare a rezultatului Transportul de la bitul
1 2
CC8 1 CD 2 CD
8N + N 2 N | +| N | ) + 2= -(|
de semn Ţinând seama de forma de reprezentare a rezultatului, apare necesar
ca transportul de la cifra de semn să se neglijeze.
Sisteme de calcul şi operare
Exemplu. Să se calculeze: N1+N2, având N1=-14 şi N2=-72 Rezolvare.
Se ignoră Pentru verificarea rezultatului se va calcula:
Observaţie. Dacă în urma însumării a două numere cu acelaşi semn, rezultatul are semn contrar → acesta este eronat (valoarea rezultatului nu se poate încadra pe numărul de biţi utilizat).
Adunarea/scăderea numerelor cu semn diferite Fie N1>0 şi N2<0.
Prin adunare avem:
N ( 1111 0010 ) N ( 1011 1000 )
N + N (1 1010 1010 )
1
CC
2 2
CC
2
1 2CC
2
= =
=
1 2
CD
26 4 2 1N + N (11010110 ) = - (1 2 + 1 2 + 1 2 + 1 2 ) = - 86= ⋅ ⋅ ⋅ ⋅
2
CC8 2 CDN 2 N |= -|
1 2
CC8
CD2 CD1N + N 2 |N | |N |= -( - )
Dacă ⏐N1⏐ > ⏐N2⏐ rezultatul va fi pozitiv, iar pentru ⏐N1⏐ < ⏐N2⏐ rezultatul va fi negativ.
Bazele numerice ale calculatoarelor
Exemplul. Să se calculeze N1 + N2, având N1= 33 şi N2= -23. Rezolvare.
Transport care se neglijează
Verificarea: N1+N2 = 1 ⋅23+1 ⋅21=(10)1 0
Exemplu.
Să se calculeze N1+N2, având N1 = -33 şi N2 = 3
Pentru verificarea rezultatului se va ţine seama de valoarea bitului de semn:
dacă acesta este "0" - rezultatul este pozitiv şi reprezentarea este aceeaşi în CD şi CC;
dacă acesta este "1" - rezultatul negativ şi avem reprezentări diferite în CD şi CC.
Verificarea rezultatului anterior:
1
CC
2 2
CC
2N ( 0010 0001) N ( 1110 1001) = =
1
CC
2 2
CC
2
1 2
CC
2
N ( 1101 1111) N ( 0001 0111)
N + N ( 1111 0110 )
= =
=
1 2
CD
2 1 2 10N + N (1000 1010) N + N = - (10)= _
1 2
CC
2N + N (1 0000 1010 ) =
Sisteme de calcul şi operare
4.6 Operaţii aritmetice în virgulă mobilă (VM)
a) Adunarea/scăderea Fie numerele N1>0 şi N2>0, ce se pot scrie:
1n1
11 12 13 1k 2n1
1 2
2n 2
21 22 23 2k 2n 2
2 2
N = 2 x (0, b b b ... b ) = 2 x(f )
N = 2 x (0, b b b ... b ) = 2 x(f )
unde bij∈ {0,1} pentru i=1,2 şi j = 1, k , valoarea lui k depinde de numărul de cifre binare utilizate pentru reprezentarea părţii fracţionare. a1) n1=n2
N1+N2=2n 1×(f1+f2)
Dacă f1+f2 ≥ 1 sau f1-f2 < 1/2 , rezultatul se va normaliza, prin deplasarea cu o poziţie spre stânga sau dreapta virgulei, concomitent cu adunarea sau scăderea unei unităţi din zona exponent.
a2) n1≠n2, n1 > n2 . Pentru a aduna/scădea cele două numere, trebuie să aibă acelaşi
exponent. Deoarece n1 > n2, putem scrie:
2 n221 22 2[k-(n -n )]N =2 x(0, 0....0 b b ....b )1
1 2
Un număr de (n1-n2) zerouri În continuare se va proceda ca în cazul precedent; dacă în urma
efectuării adunării/scăderii fracţia rezultat nu este normalizată se va normaliza modificând corespunzător şi exponentul.
Bazele numerice ale calculatoarelor
b) Înmulţirea şi împărţirea
N = 2 (f ) N = 2 (f )
N * N = 2 x (f x f ) iar
N / N = 2 x (f / f )
1 n 1 2 2 n 2 2
1 2 n +n21 2
1 2 n -n21 2
1 2
1 2
1 2
⋅ ⋅
Operaţiile de înmulţire/împărţire asupra zonelor de fracţie se realizează prin însumări (scăderi) repetate. Dacă nu este normalizată, fracţia rezultat se va normaliza.
4.7 Operaţii aritmetice în codul numeric 8421
4.7.1 Adunarea în 8421
Adunarea numerelor în zecimal codificat binar (8421) se face binar, rang cu rang pe fiecare grup de patru cifre binare, cu adăugarea, eventual, a unor corecţii.
Fie a şi b două cifre zecimale codificate binar (în 8421) care se adună; rezultatul c = a + b poate fi:
corect, şi nu este necesar să se aplice nici o corecţie dacă: 0000< c< 1001;
incorect şi se impune corecţia, adunând 0110 în situaţiile: 1010< c< 1111 - această reprezentare nu corespunde unei cifre
în zecimal. Adunând 0110 va determina în transport la rangul următor.
0000< c< 1001, dar a rezultat a cincea cifră binară, aceasta fiind 1 şi reprezintă transportul pentru tetrada binară superioară.
ccorectat = c + 0110
Sisteme de calcul şi operare
Exemplu. Să se adune în codul numeric 8421 numerele N=883 şi M= 592.
4.7.2 Scăderea în 8421
Fie a şi b două cifre zecimale codificate binar, în codul 8421 ce se
scad astfel: dacă c = a-b este un număr pozitiv, acest rezultat este corect; dacă rezultatul este negativ, se realizează un împrumut de la
tetrada binară superioară (-0001)2, care va reprezenta pentru tetrada unde este necesar împrumutul valoarea (10000)2=16.Această configuraţie de cifre [(10000)2] se adună la tetrada a şi din aceasta se scade tetrada b, obţinându-se un număr pozitiv. Noului rezultat i se aplică o corecţie prin scăderea cifrei 610, adică (0110)2. Scăderea este necesară deoarece în zecimal valoarea împrumutului este 10, iar prin reprezentarea într-un cod cu 4 cifre binare împrumutul este 16.
Bazele numerice ale calculatoarelor
Exemplu Să se scadă, în codul 8421, din numărul N= 1032, numărul M = 974.