3. Reprezentarea numerelor cu semn
Prezentare generală
Fie N un număr binar cu semn
N= bn-1bn-2…b1b0,b-1…b-m
Deoarece într-un SN cu un număr par de cifre nu putem reprezenta
direct numerele negative, se utilizează reprezentarea codificată.
Codificarea semnului
0 pentru numere pozitive
bs
1 pentru numere negative
Codificarea valorii.
• Cod direct (reprezentare prin mărime şi semn)
• Cod complementar
• Cod invers
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.3
4. Reprezentarea numerelor cu semn
Reprezentarea virgulă fixă prin mărime şi semn
Bitul de semn bs nu are pondere deci poate ocupa orice poziţie.
Pentru evitarea confuziilor, bs este plasat întotdeauna în poziţia
extremă stângă (bitul cel mai semnificativ).
Valoarea numărului se reprezintă, indiferent de semn, prin modulul
numărului.
În concluzie, numărul va fi reprezentat sub forma:
N=bsbn-1bn-2…b1b0b-1…b-m
În multe situaţii se consideră un caz particular al reprezentării şi
anume numerele sunt fracţionare. În acest caz bitul de semn apare
ca prima cifră de la partea întreagă (b0).
N=bsb-1…b-m
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.4
5. Reprezentarea numerelor cu semn
Exemple:
Fie numarul N=+0,74 reprezentat in format VF 1+15 prin
marime si semn.
0 1 0 1 1 1 1 0 1 0 1 1 1 0 0 0
Fie numarul N=-0,74 reprezentat in format VF 1+15 prin
marime si semn.
1 1 0 1 1 1 1 0 1 0 1 1 1 0 0 0
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.5
6. Reprezentarea numerelor cu semn
Complementul faţă de 2
Fie N un număr binar reprezentat pe n ranguri întregi şi m
ranguri fracţionare:
N=bn-12n-1+bn-22n-2+…+b121+b0+b-12-1+….b-m2m-1 =
n 1
i
= bi 2
i m
Se numeşte complement faţă de 2 al numărului N numărul
calculat cu relaţia
N =2n-N
şi reprezentat în acelaşi format ca şi numărul N.
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.6
7. Reprezentarea numerelor cu semn
Proprietate
n 1
i
Fie numarul real N= b i 2 . Atunci
i m
Complementul fata de 1 al lui N
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.7
8. Reprezentarea numerelor cu semn
Reprezentare virgulă fixă în cod complementar
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.8
9. Reprezentarea numerelor cu semn
Observații!
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.9
10. Reprezentarea numerelor cu semn
Exemple
Fie numarul N=+0,74 reprezentat in format VF 1+15 cod
complementar.
0 1 0 1 1 1 1 0 1 0 1 1 1 0 0 0
Fie numarul N=-0,74 reprezentat in format VF 1+15 cod
complementar.
1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.10
11. Deplasarea numerelor cu semn
Deplasarea spre stânga este echivalentă cu înmulţirea cu 2. Cifra
din extrema stângă se pierde iar prin dreapta se introduce 0, indiferent
de modul de reprezentare a numerelor.
Deplasarea spre dreapta este echivalentă cu împărţirea la 2
(înmulţirea cu 2-1). Cifra din extrema dreaptă se pierde, iar prin stânga
se introduce 0 în cazul numerelor reprezentate prin mărime şi semn
sau bitul de semn în cazul numerelor reprezentate în cod
complementar.
Observație!
Deplasarea numerelor cu semn afectează numai modulul numerelor, nu şi
bitul de semn.
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.11
12. Deplasarea numerelor cu semn
Exemple:
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.12
13. Deplasarea numerelor cu semn
Exemple
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.13
14. Adunarea în cod complementar
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.14
15. Adunarea în cod complementar
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.15
16. Adunarea în cod complementar
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.16
17. Adunarea în cod complementar
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.17
18. Adunarea în cod complementar
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.18
19. Adunarea în cod complementar
Concluzii!
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.19
20. Adunarea în cod complementar
Exemple (1)
2008 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.20
21. Adunarea în cod complementar
Exemple (2)
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.21
22. Adunarea în cod complementar
X Y
m+1 m+1
B[m..0] A[m..0]
c0
c-m-1
c-1 S[m..0]
m+1
OVERFLOW Z
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.22
23. Scăderea în cod complementar
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.23
24. Scăderea în cod complementar
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.24
25. Scăderea în cod complementar
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.25
26. Scăderea în cod complementar
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.26
27. Scăderea în cod complementar
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.27
28. Scăderea în cod complementar
Concluzii!
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.28
29. Scăderea în cod complementar
Exemple:
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.29
30. Scăderea în cod complementar
Exemple:
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.30
31. Scăderea în cod complementar
Exemple:
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.31
32. Scăderea în cod complementar
Exemple:
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.32
33. Sumator/scăzător în cod complementar
X Y
m+1
m+1 Complement fata Sum/Dif
de 1
B[m..0] A[m..0]
c0
c-m-1
c-1 S[m..0]
m+1
OVERFLOW Z
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.33
34. Adunarea în cod direct
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.34
35. Adunarea in cod direct
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.35
36. Adunarea în cod direct
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.36
37. Adunarea în cod direct
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.37
38. Adunarea în cod direct
Exemple:
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.38
39. Adunarea în cod direct
Exemple:
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.39
40. Înmulţirea prin adunare-deplasare
11001
10101 da nu
-------- I0=0
11001
Aduna deinmultitul la
00000
acumulator
11001
00000
11001
-------------- Deplasarea spre dreapta a
1000001101 ansamblului acumulator-inmultitor
nu Ultimul bit al da
inmultitorului?
STOP
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.40
43. Metoda lui Booth
Este utilizabilă pentru numere reprezentate în cod complementar.
Algoritmul de calcul:
y-iy-(i+1) ……. OPERATIA
0 0 ……. Deplasare produs partial cu un bit la dreapta
0 1 ……. Se scade deinmultitul si se deplaseaza produsul partial cu un bit la dreapta
1 0 ……. Se aduna deinmultitul si se deplaseaza produsul partial cu un bit la dreapta
1 1 ……. Deplasare produs partial cu un bit la dreapta
Observatii!
Bitul de referinţă pentru bitul cel mai puţin semnificativ este 0;
După ultima comparare nu se mai realizează deplasarea.
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.43
44. Metoda lui Booth - exemplu
Deinmultitul X = 1,0011 (-13/16)
Inmultitorul Y = 0,1010 (+10/16)
0,00000000 initializare registru combinat
00 deplasare dreapta 0,00000000 P1
10 se scade X 1,0011
0,11010000 P2
deplasare dreapta 0,01101000
01 se aduna X 1,0011
1,10011000 P3
deplasare dreapta 1,11001100
10 se scade X 1,0011
0,10011100 P4
deplasare dreapta 0,01101000
01 se aduna X 1,0011
1,01111110 rexultat (-130/256)
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.44
47. Împărţire prin comparare
Există trei metode de împărţire în binar:
Metoda comparării
Metoda cu refacerea restului parţial
Metoda fără refacerea restului parţial
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.47
48. Împărţire prin comparare
1001010 101
- 000 01110 Deplasarea spre stanga a
1001 ansamblului acumulator-cat
- 101
1000 da
(ACC)<(B) nu
- 101
0111 0à Q0 1à Q0
- 101
(ACC)-(B)à(ACC)
100
- 000
100 nu
Ultima deplasare da
?
STOP
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.48
50. Împărţire fără refacerea restului
ß[A]+[Q]
A=[A]-[D]
nu da
[A]>0
0à Q0 1à Q0
ß[A]+[Q] ß[A]+[Q]
A=[A]+[D] A=[A]-[D]
nu da
Ultima deplasare
?
STOP
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.50
51. Împărţire fără refacerea restului
divizor
Dn-1 ... D0
adunare/scadere Schema de
ALU deplasare stanga comanda
An-1 ... A0 Qn-1 ... Q0
rest deimpartit/cat
2007 Organizarea şi structura calculatoarelor -curs- Ionescu Augustin-Iulian 1.51