Sunteți pe pagina 1din 12

Facultatea de Inginerie și

Tehnologia informației

Unitatea aritmetică și logică

Arhitectura sistemelor de calcul, an I

Piroska Haller
piroska.haller@umfst.ro
Pentru uz intern
Este interzisă copierea și distribuirea neautorizată a acestui material.
Reprezentarea numerelor
• sume puterilor bazei
xkxk-1xk-2...x1x0=xk*bk+xk-1*b(k-1)+xk-2*b(k-2)+....x1*b1+x0*b0
baza 10: 2378 = 2*103+3*102+7*101+8*100
baza 2: 1011 = 1*23+0*22+1*21+1*20
n biți putem reprezenta 2n numere naturale cu valoarea între 0 – 2n-1
semnele din baza 16: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}
Numărul 2C4H = 0010 1100 0100 binar
Tabela de conversie hexazecimal – binar:
H B B B B H B B B B H B B B B H B B B B
0 0 0 0 0 4 0 1 0 0 8 1 0 0 0 C 1 1 0 0
1 0 0 0 1 5 0 1 0 1 9 1 0 0 1 D 1 1 0 1
2 0 0 1 0 6 0 1 1 0 A 1 0 1 0 E 1 1 1 0
3 0 0 1 1 7 0 1 1 1 B 1 0 1 1 F 1 1 1 1

Este interzisă copierea și distribuirea neautorizată a acestui material.


Unitatea logică

Este interzisă copierea și distribuirea neautorizată a acestui material.


Adunarea numerelor binare
adunare pe 1 bit înmulțire pe 1 bit adunare cu transport
Y X X+Y Y X X*Y Ci-1 Yi Xi Zi Ci
0 0 0 0 0 0 0 0 0 0 0
0 1 1 0 1 0 0 0 1 1 0
1 0 1 1 0 0 0 1 0 1 0
1 1 0 1 1 1 0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
Probleme: 1 1 1 1 1

1010 + 0111 = 0001 și transport 1


(10) + (7) = (1) și transport 1

unsigned char i =255;


i=i+1; reprezentare binară: 11111111 + 00000001 = 00000000

Este interzisă copierea și distribuirea neautorizată a acestui material.


Sumatoare seriale, paralele

Este interzisă copierea și distribuirea neautorizată a acestui material.


Numere negative
Variante:
• folosim reprezentarea numerelor naturale și adăugăm un
bit care va reprezenta semnul
• căutăm a reprezentare pentru care putem folosi circuitul
de adunare nemodificat, dar să obținem rezultatul corect
• Varianta 1 –
• dacă avem registre cu capacitatea de stocare de 4 biți din
care rezervăm 1 bit pentru semn, putem reprezenta
numerele între [-7 și 7]
• avem o problemă cu reprezentarea numărului 0, care nu
este unic
• trebuie să redefinim funcția de adunare

Este interzisă copierea și distribuirea neautorizată a acestui material.


Numere negative varianta 1
Exemple: Semn X2 X1 X0 Număr
zecimal
0100 + 1100 = 0000 0 0 0 0 0
0 0 0 1 1
0 0 1 0 2
(4) + (-4) = (0) 0 0 1 1 3
0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0 1 1 1 7
1 0 0 0 ????
1 0 0 1 -1
0101 + 1101 = 0010 1 0 1 0 -2
1 0 1 1 -3
(5) + (-5) = (2) ?????? 1 1 0 0 -4
1 1 0 1 -5
1 1 1 0 -6
1 1 1 1 -7

Este interzisă copierea și distribuirea neautorizată a acestui material.


Numere negative varianta 2
• Negarea bit cu bit a numerelor pozitive
• Dacă spațiul de stocare este de 4 biți, vom restricționa mulțimea numerelor ce
pot fi reprezentate la [-7 și 7] Semn X2 X1 X Număr 0
zecimal
Exemple: 0 0 0 0 0
0 0 0 1 1
0100 + 1011 = 1111 0 0 1 0 2
0 0 1 1 3
(4) + (-4) = (0?) 0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0101 + 1010 = 1111 0 1 1 1 7
1 1 1 1 0 ?????
1 1 1 0 -1
(5) + (-5) = (0?) 1 1 0 1 -2
1 1 0 0 -3
1 0 1 1 -4
0100 + 1001 = 1101 1 0 1 0 -5
1 0 0 1 -6
(4) + (-6) = (-2) 1 0 0 0 -7

• Rezultatul adunării nu este tocmai cel așteptat totdeauna

Este interzisă copierea și distribuirea neautorizată a acestui material.


Numere negative varianta 3
• Negarea bit cu bit a numerelor pozitive +1 – complementul față de 2
• Rezultatul adunării este totdeauna corect, fără schimbarea sumatorului
• pe 4 biți, vom restricționa mulțimea numerelor [-8 și 7] Semn X2 X1 X0 Număr
zecimal
Exemple:
0 0 0 0 0
0100 + 1100 = 0000 0 0 0 1 1
0 0 1 0 2
(4) + (-4) = (0) 0 0 1 1 3
0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0100 + 1010 = 1110 0 1 1 1 7
1 1 1 1 -1
(4) + (-6) = (-2) 1 1 1 0 -2
1 1 0 1 -3
1 1 0 0 -4
1 0 1 1 -5
0100 + 0110 = 1010 1 0 1 0 -6
1 0 0 1 -7
(4) + (6) = (-6) !!!!!!!!!! 1 0 0 0 -8

• Rezultatul adunării generează depășire!!!

Este interzisă copierea și distribuirea neautorizată a acestui material.


Condiția de depășire
Operația Operand A Operand B Rezultat
A+B >= 0 >= 0 <0
A+B <0 <0 >= 0
A-B >= 0 <0 <0
A-B <0 >= 0 >= 0

Unitatea aritmetică și logică este un circuit logic, nu


interpretează date, și lucrează cu o succesiune de biți stocați în
circuite cu număr de biți fixat!

Extinderea unui operand de 8 biți pe 16 biți – conversia de tip


din char în int în limbajul C
fie reprezentarea lui 2 pe 8 biți 00000010
convertirea lui pe 16 biți 00000000 00000010
fie reprezentarea lui -2 pe 8 biți 1111 1110
convertirea lui pe 16 biți 1111 1111 1111 1110

Este interzisă copierea și distribuirea neautorizată a acestui material.


Variabile cu semn și operatorii logici
int x=266; 0000000100001010 (266)
char y = 255; 11111111 (255)
x|y; 1111111111111111 (-1)
x&y; 0000000100001010 (266)
x&&y 0000000000000001 (1)

int x=266; 0000000100001010 (266)


unsigned char y = 255; 11111111 (255)
x|y; 0000000111111111 (511)
x&y; 0000000000001010 (10)
x&&y 0000000000000001 (1)

Este interzisă copierea și distribuirea neautorizată a acestui material.


Numere reale
Reprezentare în virgulă fixă
31 30 29 28 27 26 25 24 23 22 21 20 ... 2 1 0
S partea întreagă (I) partea fracționară (F)

nr = I.F
Reprezentare în virgulă mobilă
31 30 29 28 27 26 25 24 23 22 21 20 ... 2 1 0
S exponent (E) mantisă (F)

nr = (-1)S x (1+F) x 2E

X + Y = (XMx2XE - YE + YM) x 2YE


X - Y = (XMx2XE - YE - YM) x 2YE
X x Y = (XM x YM) x 2XE + YE
X : Y = (XM : YM) x 2XE - YE

Este interzisă copierea și distribuirea neautorizată a acestui material.

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