Curs_1
-
Upload
diamond-crina -
Category
Documents
-
view
30 -
download
1
Transcript of Curs_1
STRUCTURA şi ARHITECTURA CALCULATOARELOR
Anul II seria 2007-2008 PrecedenŃe - Urmarea acestui curs presupune promovarea următoarelor
cursurilor:
- Analiza şi Sinteza Dispozitivelor Numerice (Proiectarea Logică a dispozitivelor numerice);
- Electronică Digitală şi Circuite de ComutaŃie (Electronică Digitală). - Programarea în limbaj de asamblare (PLA)
PrezenŃa la curs este facultativă. PrezenŃa la laborator este obligatorie. AbsenŃele la laborator se recuperează în
cadrul aceleaşi săptămâni.
Metoda de evaluare a cunoştinŃelor: evaluarea continuă la curs şi laborator Activitatea de laborator se încheie cu o lucrare de verificare a cunoştinŃelor CondiŃii de promovare: Nota minimă la laborator NL=5 Nota minimă la examen NE=5 Nota finală se calculează cu relaŃia NF=0.5*NL+0.5*NE Pentru prezentarea la examen este necesară promovarea laboratorului. Bibliografie 1. Găitan Vasile, ARHITECTURA SISTEMELOR DE CALCUL, vol.I,
Editura UniversităŃii din Suceava, 1998. 2. Nicolau Viorel, ARHITECTURA CALCULATOARELOR, Cartea
Universitară, Bucureşti, 2005. 3. Baruch Zoltan Francisc, ARHITECTURA CALCULATOARELOR, Editura
Todesco, Cluj-Napoca, 2000. 4. Baruch Zoltan Francisc, STRUCTURA SISTEMELOR DE CALCUL,
Editura Albastră, Cluj-Napoca, 2004. 5. Baruch Zoltan Francisc, SISTEME DE INTRARE/IESIRE ale
CALCULATOARELOR,Editura Albastră, Cluj-Napoca, 2000. 6. Palade Vasile, Istrate Adrian, CALCULATOARE şi SISTEME DE
OPERARE, Editura FundaŃiei Universitare „Dunărea de Jos”, GalaŃi,1999. 7. Toacşe Gheorghe, INTRODUCERE IN MICROPROCESOARE, Editura
StiinŃifică şi Enciclopedică, Bucureşti, 1985. 8. Dancea Ioan, MICROPROCESOARE, ARHITECTURA
INTERNA,PROGRAME, APLICATII, Editura Dacia, Cluj-Napoca,1979. 9. Mureşan T., şa, MICROPROCESORUL 8080 în APLICATII, Editura Facla,
Timişoara,1981.
10. Patrubani Mikloş, TOTUL DESPRE MICROPROCESORUL Z80, Editura Tehnică, Bucureşti, 1989.
Cap.1. BAZELE ARITMETICE ALE CALCULATOARELOR
Spre deosebire de calculatoarele analogice care operează cu mărimi continue calculatoarele numerice (digitale) au fost concepute să opereze asupra numerelor. Numerele permit o evaluare cantitativă a lumii înconjurătoare. Prin operaŃia de numărare se asociază fiecărei mulŃimi de obiecte un număr care reprezintă astfel cantitatea de obiecte care formează respectiva mulŃime. In aproape toate civilizaŃiile umane operaŃia de numărare a presupus mai întâi divizarea mulŃimii de obiecte în grupe mai mici, punându-se astfel bazele sistemului de numeraŃie. Deoarece la începuturile civilizaŃiilor umane aprecierea cantitativă a unei mulŃimi de obiecte se realiza prin compararea acesteia cu numărul degetelor de la mâni, se utilizează în prezent sistemul de numeraŃie zecimal (cu baza zece). Există însă indicii că au existat civilizaŃii care utilizau alte baze, de exemplu baza 12.
Baza de numeraŃie ne indică deci mărimea grupei în care grupăm obiectele în scopul numărării lor. In procesul de utilizare a calculatorului întâlnim sistemele de numeraŃie cu baza 10, 8, 16, 2. Din punct de vedere matematic sistemele de numeraŃie sunt echivalente. Dacă operatorului uman îi este foarte comod să lucreze în sistemul zecimal, nu acelaşi lucru îl putem spune despre un calculator. Din motive de reprezentare a cifrelor, calculatoarele se utilizează sistemul de numeraŃie binar îmbinat cu sistemul hexazecimal sau octal.
1.1. Sisteme de numeraŃie Prin sistem de numeraŃie se înŃelege totalitatea regulilor de reprezentare
ale numerelor cu ajutorul simbolurilor denumite cifre. Sistemele de numeraŃie pot fi poziŃionale sau nepoziŃionale. Un exemplu
de sistem poziŃional este sistemul zecimal, iar un sistem nepoziŃional este cel roman. Intr-un sistem poziŃional, un număr N cu parte întreagă şi parte fracŃionară, separate prin virgulă, se poate scrie sub oricare din următoarele forme:
mmnn aaaaaaaaN −−−−−−−= )1(210121 ...,... (1.1)
m
mn
nn
n qaqaqaqaqaqaqaN −−
−−
−−
−−
−− ++++++++= ...... 2
21
10
01
12
21
1 (1.2)
sau
in
miiqaN ∑
−
−=
=1
(1.3)
unde: q este baza sistemului de numeraŃie (întreg pozitiv);
a - reprezintă cifre: qai ≤≤0 , mnni −−−−−= ,...,2,1,0,1,...,2,1 ;
n este numărul de cifre întregi ale numărului;
m este numărul de cifre fracŃionare ale numărului. Intr-un sistem de numeraŃie, cifra este un simbol care reprezintă o
cantitate întreagă. Numărul de simboluri permise pentru reprezentarea numerelor într-un sistem de numeraŃie se numeşte baza sau rădăcina sistemului de
numeraŃie. Cifrele a, reprezintă coeficienŃii cu care se înmulŃesc puterile iq ale
bazei q în dezvoltarea polinomială a numărului pentru obŃinerea valorii sale. Cifra 1−na , din relaŃiile (1.1) şi (1.2) este cifra cea mai semnificativă
(c.m.s.) a numărului, iar cifra ma− este cifra cea mai puŃin semnificativă
(c.m.p.s.). In cazul sistemului de numeraŃie binar, pentru cifra binară se foloseşte prescurtarea de bit. Dacă m = 0, numărul N este întreg. Dacă n = 0, numărul N este fracŃionar şi subunitar. Dacă m şi n sunt întregi şi diferiŃi de zero, numărul N este mixt.
Exemple
2101210 10710210310610227,263 −− ×+×+×+×+×=
20456 212121212101,1110001 −×+×+×+×+×=
RelaŃia (1.2) explică motivul pentru care astfel de sisteme de numeraŃie sunt denumite poziŃionale. Fiecare cifră a contribuie la valoarea numărului respectiv cu o pondere dată de puterea i a bazei q.
Pentru un sistem de numeraŃie în baza q trebuie să existe q simboluri. La sistemele de numeraŃie cu baza q > 10 se introduc simboluri noi. De exemplu, pentru sistemul hexazecimal se introduc literele de la A la F. Reprezentarea primelor 16 numere în sistemul zecimal, binar şi hexazecimal este dată în tabelul 1.1.
Tabelul 1.1. Reprezentarea unor numere în sistemul zecimal, binar şi hexazecimal. 10=q 2=q 16=q
0 0 0 1 1 l 2 10 2 3 11 3 4 100 4 5 101 5 6 110 6 7 111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F
1.2. Conversia bazei de numeraŃie
Pentru a deduce o metodă sistematică de conversie dintr-un sistem de numeraŃie în altul, folosim rezultatul cunoscut că, dacă N şi q sunt numere întregi, există întotdeauna un singur întreg r (care nu este negativ) mai mic decât q şi un singur întreg C, astfel încât:
q
rC
q
N+= , qr <≤0 (1.4)
1.2.1. Conversia numerelor întregi
Aplicăm această regulă la conversia unui număr întreg Np din baza p în echivalentul său în baza q, adică Nq. Trebuie să determinăm valorile întregi nenegative 110 ,...,, −naaa , fiecare mai mic decât q, astfel ca:
00
11
22
1-1-n ...N qaqaqaqa n
p ++++= (1.5)
In relaŃia de mai sus cunoaştem numărul în vechea bază pN , noua
bază q şi trebuie să aflăm cifrele numărului din noua bază 110 ,..., , −naaa .
Prin împărŃire cu numărul q obŃinem:
q
aC
q
aqaqaqa
q
N nn
p 00
001
12
2-1- ... +=++++= (1.6)
unde C0 este partea întreagă, iar q
a0 este partea fracŃionară, deci 0
a este
restul împărŃirii întregi al numărului pN la q .
ImpărŃind câtul 0
C la q şi utilizând rezultatele de mai sus, obŃinem:
q
aC
q
aqaqa
q
C nn
11
102
3-1-
0 ... +=+++= (1.7)
unde 1
a reprezintă acum restul împărŃirii întregi dintre 0
C şi q .
OperaŃia se continuă până când se obŃine un cât egal cu zero. Algoritmul de conversie a numerelor întregi este deci următorul:
1. Se împarte numărul iniŃial p
N (în baza p) la noua bază q. Se obŃine
câtul 0
C şi restul 0
a .
2. Se împarte câtul 0
C la q. Se obŃine câtul 1
C şi restul 1
a .
3. Se continuă algoritmul până când se obŃine câtul 0=n
C . Resturile
obŃinute reprezintă cifrele numărului convertit, 0
a fiind cifra c.m.p.s.
Exemple
1. Conversia din zecimal în binar. Să considerăm numărul 137. Acesta trebuie împărŃit la 2 şi punem în evidenŃă resturile împărŃirii întregi dintre 137 şi 2.
10
02:1
02:2
02:4
12:8
02:17
02:34
12:68
2:137
7
6
5
4
3
2
1
0
=→
=→
=→
=→
=→
=→
=→
=→
a
a
a
a
a
a
a
a
S-a obŃinut:
210 10001001137 =
2. Conversia din zecimal în octal (baza 8).
20
18:2
18:17
8:137
2
1
0
=→
=→
=→
a
a
a
deci: 810
211137 =
3. Conversia din zecimal în hexazecimal (baza 16).
80
916:8
16:137
1
0
=→
=→
a
a
deci: 1610
89137 =
1.2.2. Conversia numerelor fracŃionare
Pentru conversia numerelor fracŃionare subunitare trebuie determinaŃi coeficienŃii întregi nenegativi m-2- ,...,, aaa 1- . Considerăm numărul
fracŃionar pN din baza p care, în noua bază q , are următoarea reprezentare:
-mm-
-33-
-22-
-11- ... qaqaqaqaNp ++++= (1.8)
unde maaa −−− ..., , , 21 sunt cifrele numărului reprezentat în noua bază.
Prin înmulŃire cu baza q obŃinem:
1112
31
21 ... FaqaqaqaaqN mmp +=++++= −
+−−
−−
−−− (1.9)
unde 1−a este partea întreagă, iar 1F este partea fracŃionară a valorii obŃinute.
InmulŃind partea fracŃionară 1
F cu q obŃinem:
222
1321 ... FaqaqaaqF mm +=+++= −
+−−−−− (1.10)
OperaŃia se continuă până când se obŃine o parte fracŃionară egală cu zero sau se ajunge la precizia cerută.
Algoritmul de conversie al numerelor fracŃionare este deci următorul:
1. Se înmulŃeşte numărul iniŃial Np (în baza p ) cu noua bază q. Se obŃine
partea fracŃionară 1F şi partea întreagă
1−a .
2. Se înmulŃeşte partea fracŃionară 1
F cu q. Se obŃine partea fracŃionară F2 şi
partea întreagă 2−a .
3. Se continuă algoritmul până când se obŃine partea fracŃionară 0=m
F sau
se ajunge la precizia cerută. Cifrele întregi obŃinute reprezintă cifrele numărului în baza q, 1−a fiind cifra c.m.s.
Exemple 1. Conversia din zecimal în binar.
02032,0
02016,0
12008,0
12504,0
12752,0
02876,0
2438,0
6
5
4
3
2
1
=→×
=→×
=→×
=→×
=→×
=→×
×
−
−
−
−
−
−
a
a
a
a
a
a
1024,0
02512,0
02256,0
02128,0
02064,0
11
10
9
8
7
=→
=→×
=→×
=→×
=→×
−
−
−
−
−
a
a
a
a
a
Deci 210 ...)10111000000,0(438,0 =
OperaŃia se continuă fără a se putea ajunge la 0=m
F . Deci, un număr
fracŃionar finit într-un sistem de numeraŃie nu poate fi reprezentat întotdeauna printr-un număr finit într-un alt sistem de numeraŃie.
2) Conversie din zecimal în octal
28048,0
08256,0
48032,0
38504,0
8438,0
4
3
2
1
=→×
=→×
=→×
=→×
×
−
−
−
−
a
a
a
a
Rezultă 810
...)3402,0(438,0 =
3) Conversie din zecimal în hexazecimal
Ca
a
a
a
a
→=→
=→×
=→×
=→×
=→×
×
−
−
−
−
−
12288,0
016768,0
216048,0
016128,0
716008,0
16438,0
5
4
3
2
1
Numărul rezultat este 1610 ...)7020,0(438,0 C=
Pentru numere fracŃionare mai mari decât 1, partea întreagă şi cea fracŃionară se calculează separat.
Conversia prin codificare In cazul particular în care baza finală q este o putere întreagă a bazei iniŃiale
p:
rpq = , Zr ∈
conversia se poate reliza printr-un procedeu mai simplu, deoarece unei cifre în baza q îi corespund r cifre în baza p. Numărul în baza p se partiŃionează în grupe de câte r cifre şi se înlocuieşte fiecare grup de la dreapta şi de la stânga virgulei cu echivalentul său în baza q . In tabelul de mai jos sunt prezentate
codurile binare ale cifrelor sistemelor hexazecimal şi octal.
16=q Cod binar
8=q Cod binar
0 0000 0 000 l 0001 1 001 2 0010 2 010 3 0011 3 011 4 0100 4 100 5 0101 5 101 6 0110 6 110 7 0111 7 111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111
Această proprietate o au bazele 2 şi 8 şi bazele 2 şi 16. Astfel, conversia
din binar în octal se poate efectua prin înlocuirea fiecărui grup de 3 cifre binare prin echivalentul său octal, iar conversia din binar in hexazecimal se poate efectua prin înlocuirea fiecărui grup de 4 cifre binare prin echivalentul său hexazecimal. Dacă ultima grupă de cifre binare de la stânga sau de la dreapta virgulei nu este completă, se adaugă zerouri la stânga, respectiv la dreapta, până la completarea grupei.
Exemple 0111101,11100
2= 100,110
2100 = 864,34
=201,10100011 1010 0011,162 4,30100 A=
Pentru conversia din q în p se înlocuieşte fiecare cifră a numărului din
baza q cu cele r cifre ale echivalentului (codului) din baza p .
Astfel, conversia din octal în binar şi cea din hexazecimal în binar se efectuează prin înlocuirea cifrelor octale, respectiv hexazecimale, printr-un
grup de 3, respectiv 4 cifre binare, care reprezintă codurile binare ale cifrelor.
Exemple
0014,123 8 = 010 011,2
100 =21,1010011
0101,53 16 =B 22 1011,10100111011,0011 =
Conversia din octal în hexazecimal şi din hexazecimal în octal se poate efectua după ce s-a efectuat conversia în binar.
Exemple 0014,123 8 = 010 0100,011 2 = 0101 0011,100
162 8,530 =
1010,716=EA 0101110,0111
2= 100 111,
827,247111 =
1.2.3. Conversia binar-zecimală
Conversia unui număr binar întreg în echivalentul său zecimal se poate efectua prin metoda înmulŃirii repetate cu 2, precizând faptul că operaŃia se efectuează în sistemul zecimal. Pentru cazul general se consideră numărul:
00
11
22
11 ... qaqaqaqaN n
nn
n ++++= −−
−− (1.11)
care mai poate fi scris sub forma
01321 )...))(...(( aqaqaqaqaN nnn +++++= −−− (1.12)
Pentru q = 2 rezultă următorul algoritm: 1. Se înmulŃeşte cifra c.m.s. a numărului binar cu 2 şi se adună la
rezultat următoarea cifră semnificativă. 2. Se înmulŃeşte rezultatul cu 2 şi se adună următoarea cifră semnificativă. 3. Se continuă până când s-a prelucrat şi cifra c.mp.s. a numărului binar. Rezultatul obŃinut este echivalentul zecimal al numărului binar dat. Exemplu
=+×→ 021101112
2
5122 =+×→ 11125 =+×→ 231211 =+×→
deci 102
2310111 =
Numerele fracŃionare (subunitare) a căror formă generală este m
mqaqaqaN −−
−−
−− +++= ...2
21
1 (1.13)
pot fi factorizare în modul următor:
++++= −+−−− ...
11...
11121
qaa
qa
qa
qN mm (1.14)
Pentru q = 2 rezultă următorul algoritm: 1. Se împarte cifra c.m.p.s. a numărului binar cu 2 şi se adună următoarea
cifră semnificativă. 2. Se împarte rezultatul cu 2 şi se adună următoarea cifră semnificativă. 3. Se continuă până când se efectuează împărŃirea care corespunde cifrei
c.m.s. a numărului fracŃionar.
Exemplu 5,112/11011,0 2 =+→
75,002/5.1 =+→ 375,112/75,0 =+→ 6875,02/375,1 =→ Deci
102 6875,01011,0 =
In calculul manual, operaŃiile de conversie a numerelor binare în zecimal se realizează mai simplu prin adunarea puterilor bazei 2.
Exemple
10
01234
2 23124016212121202110111 =++++=×+×+×+×+×=
10
4321
2
6875,0
0625,0125,005,0212120211011,0
=
=+++=×+×+×+×= −−−−
In mod identic se poate proceda pentru conversia unui număr din hexazecimal în zecimal.
10
012
16 4248160256168161016181 =++=×+×+×=A
1.3. OperaŃii aritmetice cu numere fără semn 1.3.1. Adunarea Adunarea a două cifre în baza q este o operaŃie modulo q, deci cifra cu
valoarea cea mai mare va fi 1−q (de exemplu, 9 în zecimal, 1 în binar, F în
hexazecimal). Dacă rezultatul adunării a două cifre de rang i depăşeşte această valoare, va apare un transport către rangul 1+i , care se va aduna la suma cifrelor de rang 1+i . ApariŃia unui transport de la cifra c.m.s. indică o depăşire a capacităŃii de reprezentare a rezultatului.
In cazul adunării binare, cifra sumei este 1 dacă unul din termenii adunării este 1. Cifra de transport este 1 numai dacă ambii termeni ai adunării sunt 1. In tabelul 1.2 se prezintă regula de adunare a două cifre binare x şi y .
Tabelul 1.2. Adunarea a două cifre binare.
x y Transportul Suma 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0
Exemple
10
10
29
32 +
1061
10011
10110 +
101001
16
16
14
326
DF
B +
16923B
1.3.2. Scăderea La scăderea a două cifre de rang i , dacă cifra descăzutului este mai mică
decât cifra scăzătorului, apare un împrumut de la rangul 1+i .
Tabelul 1.3. Scăderea a două cifre binare. x y Imprumutul DiferenŃa 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0
In cazul scăderii binare, diferenŃa este 1 dacă fie descăzutul, fie scăzătorul
este 1. Imprumutul apare numai dacă descăzutul este 0 şi scăzătorul este 1. In tabelul 1.3 se prezintă regula de scădere a două cifre binare x şi y .
Exemple
10
10
19
32 −
1013
2
2
10011
10110 −
200011
16
16
14
326
DF
B −
16411D
1.3.3. InmulŃirea InmulŃirea se efectuează de obicei prin adunarea repetată a unor produse
parŃiale. La înmulŃirea a două cifre binare, produsul este 1 numai dacă deînmulŃitul şi înmulŃitorul sunt 1. In tabelul 1.4 se prezintă regula de înmulŃire a două cifre binare x şi y .
Tabelul 1.4. InmulŃirea a două cifre binare. x y Produsul 0 0 0 0 1 0 1 0 0 1 1 1
Exemplu
0110
1100×
0000 1100 1100
0000
1001000
1.3.4. ImpărŃirea ImpărŃirea a două numere nu se poate efectua dacă împărŃitorul este egal
cu zero. Fiind dat deîmpărŃitul x şi împărŃitorul y , pentru operaŃia de împărŃire
trebuie să se determine câtul Q şi restul R , astfel încât să fie satisfăcută relaŃia: RyQX +⋅=
La împărŃirea în zecimal se determină cifrele câtului prin alegerea unei cifre şi scăderea din restul parŃial (care este iniŃial o parte a deîmpărŃitului) a produsului dintre această cifră şi împărŃitor. Dacă rezultatul scăderii este un număr pozitiv mai mic decât împărŃitorul, cifra aleasă este corectă. In caz contrar, se alege o altă cifră şi operaŃia se repetă. In fiecare etapă a operaŃiei se obŃine o cifră a câtului.
In cazul împărŃirii binare, dacă se alege în mod eronat o cifră a câtului, o nouă alegere nu mai este necesară, existând numai două cifre. OperaŃia de împărŃire se va reduce la o serie de scăderi ale împărŃitorului din restul parŃial, care se efectuează numai dacă restul parŃial este mai mare decât împărŃitorul, caz în care cifra câtului este 1; în caz contrar, cifra corespunzătoare a câtului este 0.
Exemplu 10010011 : 1011 = 1101 1011
1110 Rest parŃial 1011
1111 Rest parŃial 1011
100 Rest
1.4. Reprezentarea numerelor în calculator In funcŃie de soluŃia aleasă pentru a indica semnul numerelor sau poziŃia
virgulei, există mai multe moduri de reprezentare a numerelor în calculator. Numerele reprezentate în calculator pot fi fără semn sau cu semn.
Numerele fără semn sunt reprezentate în binar sau într-un cod binar zecimal. In cazul numerelor cu semn, se utilizează o cifră de semn pentru indicarea semnului. ConvenŃional, se atribuie cifra 0 pentru semnul plus şi cifra 1 pentru semnul minus. Cifra de semn este reprezentată pe poziŃia c.m.s. a numărului. Pentru reprezentarea unui număr binar cu semn de n cifre binare, sunt necesare deci 1+n poziŃii.
In general, un număr are o parte întreagă şi o parte fracŃionară, separate prin virgula binară. Virgula nu se reprezintă fizic, dar trebuie cunoscută localizarea
ei. După modul de amplasare a virgulei binare, există două forme de reprezentare a numerelor:
• Forma cu virgulă fixă; • Forma cu virgulă mobilă. In forma cu virgulă fixă, virgula care separă partea întreagă de cea
fracŃionară este aşezată într-o poziŃie bine definită a cuvântului binar. Există două posibilităŃi de poziŃionare. Dacă virgula este aşezată după cifra de semn, se operează cu numere fracŃionare, subunitare. Dacă virgula este aşezată după cifra c.m.p.s., se operează cu numere întregi. In continuare se presupune ultima poziŃionare, considerând că se lucrează cu numere întregi.
In forma cu virgulă mobilă, fiecare număr este caracterizat prin două valori: • Mantisa, care indică mărimea exactă a numărului într-un anumit domeniu; • Exponentul, care indică ordinul de mărime a numărului, fiind puterea la
care se ridică baza mantisei. Exponentul indică deci implicit poziŃia virgulei binare.
1.5. Reprezentarea numerelor în virgulă fixă 1.5.1. Reprezentarea numerelor cu semn In continuare vom nota cu x , y numerele în reprezentarea binară
obişnuită, la care se ataşează semnul. Un număr cu n cifre se va scrie sub forma:
0121 ... xxxxx nn −−±=± = in
iix 2
1
0
×∑−
=
De exemplu 10110111±
Vom nota cu X şi Y numerele exprimate în forma de reprezentare în calculator. După modul de exprimare a numerelor negative, există trei forme uzuale de reprezentare a numerelor cu semn în virgulă fixă:
• în mărime şi semn (MS); • în complement faŃă de 1 (C1); • în complement faŃă de 2 (C2). Pentru toate formele de reprezentare, un număr pozitiv x se exprimă în
acelaşi fel:
xxX nin
ii
n +×=×+×= ∑−
=
202201
0
(1.15)
Numărul pozitiv cu semn se reprezintă deci adăugând cifra 0 , de semn, în faŃa numărului fără semn:
0121 ...0 xxxxX nn −−=
Considerăm pentru simplitate numere reprezentate pe 4 biŃi şi un bit de semn. De exemplu, numărul fără semn 6 se reprezintă prin:
01106 → iar numărul cu semn 6+ prin:
06 →+ 0110 Reprezentarea numerelor negative depinde de modul de reprezentare
ale acestora. 1. In formă de reprezentare denumită în mărime şi semn )(MS , un număr
negativ x va avea următoarea expresie:
xxX nin
ii
n +×=×+×= ∑−
=
212211
0
(1.16)
Deci, numărul negativ se reprezintă prin adăugarea cifrei 1, de semn, în faŃa numărului fără semn:
0121 ...1 xxxxX nn −−=
De exemplu numărul 6− va fi reprezentat prin: 16 →− 0110
Acest mod de reprezentate are mai multe dezavantaje. Un prim dezavantaj este faptul că operaŃiile de adunare şi scădere necesită circuite mai electronice mai complexe. Al doilea dezavantaj constă în faptul că există două reprezentări distincte pentru cifra 0 :
00 →+ 0000 10 →− 0000
In aceste condiŃii este mai dificil să se verifice dacă o valoare este egală cu 0 .
2. In cazul reprezentării în complement faŃă de 1 )1(C , un număr negativ se
reprezintă prin complementul faŃă de 1 al numărului pozitiv cu aceeaşi valoare absolută. Complementul faŃă de 1 al unui număr binar se obŃine prin înlocuirea biŃilor de 1 cu 0, şi a celor de 0 cu 1. Un număr negativ x reprezentat în complement faŃă de 1 are expresia:
in
ii
n xX 2211
0
×+×= ∑−
=
(1.17)
unde xx i −=1 reprezintă complementul fată de 1 al cifrei ix .
Reprezentarea unui număr negativ se obŃine prin complementarea tuturor cifrelor numărului fără semn şi adăugarea cifrei de semn 1:
0
_
1
_
2
_
1
_
...1 xxxxX nn −−= De exemplu
06 →+ 0110 16 →− 1001
Si în acest caz există două reprezentari distincte pentru cifra 0 :
10
00
→−
→+ 1111
0000
3. Un număr negativ x reprezentat în complement faŃă de 2 )2(C are
următoarea expresie:
xxX nin
i
in −=×+×+×= +
−
=∑ 101
0
_
221221 (1.18)
Reprezentarea unui număr negativ se poate obŃine în mai multe moduri. Una dintre posibilităŃi este utilizarea relaŃiei de definiŃie (1.18).
OperaŃia de scădere se efectuează luând în considerare şi bitul de semn. De exemplu, considerând n = 4, reprezentarea numărului - 6 va fi:
−100000 00110
11010
O altă posibilitate este obŃinerea complementului faŃă de 2 în două etape:
1. Se obŃine complementul faŃă de 1. 2. Se consideră rezultatul ca un întreg fără semn, la care se adună valoarea 1. De exemplu:
001106 →+ +→− 11001)1(6 C
1 -------- 11010)2(6 →− C
Practic, complementul faŃă de 2 al unui număr se poate determina pornind de la numărul pozitiv cu semn, astfel:
1. Se scriu cifrele numărului începând cu cifra c.m.p.s., neschimbate, până la primul 1 inclusiv.
2. Se complementează cifrele întâlnite în continuare. In reprezentarea C2 există o singură codificare pentru cifra 0 . In plus,
operaŃiile de adunare şi scădere se efectuează cel mai simplu în C2. Să determinăm acum gama numerelor care pot fi exprimate în cele trei
forme de reprezentare. Pentru toate cele trei forme numărul maxim pozitiv care poate fi
reprezentat pe n biŃi este
0 1211...111 −= n In MS cel mai mare număr negativ care poate fi reprezentat este
1 )12(11...111 −−= n
In C1 numărul negativ maxim este 1 00...000 care corespunde numărului pozitiv
0 1211...111 −= n Putem trage concluzia că gama numerelor care pot fi exprimate pe n
biŃi în MS şi C1 este
12)12( −≤≤−− nnx
Numărul maxim negativ care poate fi reprezentat în C2 este 1 00...000
care corespunde numărului pozitiv
1 n200...000 = Deci pentru reprezentarea în C2 această gamă este
122 −≤≤− nn x In tabelul 1.5 se prezintă reprezentarea unor numere cu 4 biŃi şi un bit de
semn în MS, C1 şi C2.
Tabelul 1.5. Diferite moduri de reprezentare a unor numere cu semn. x MS C1 C2
+15 0 1111 0 1111 0 1111 +14 0 1110 0 1110 0 1110 ... ... ... ... +2 0 0010 0 0010 0 0010 +1 0 0001 0 0001 0 0001 0 0 0000
1 0000 0 0000 1 1111
0 0000
-1 1 0001 1 1110 1 1111 -2 1 0010 1 1101 1 1110 ... ... ... ... -14 1 1110 1 0001 1 0010 -15 1 1111 1 0000 1 0001 -16 - - 1 0000
1.5.2. Reguli de deplasare a numerelor cu semn De multe ori, în regiştrii procesorului, sunt necesare operaŃii de deplasare a
numerelor cu semn. Aceste deplasări trebuie efectuate astfel încât să se modifice numai valoarea numerelor, nu şi semnul. Deplasarea la stânga cu o poziŃie este echivalentă înmulŃirii cu 2, iar deplasarea la dreapta este echivalentă împărŃirii
cu 2 (înmulŃirii cu 12− ). Pentru stabilirea regulilor de deplasare, se consideră exemplele din tabelul
1.6. Tabelul 1.6. Stabilirea regulilor de deplasare a numerelor cu semn.
MS C1 C2 X + 6 0 0110 0 0110 0 0110
2×X +12 0 1100 0 1100 0 1100 12−×X + 3 0 0011 0 0011 0 0011
X - 6 1 0110 1 1001 1 1010
2×X -12 1 1100 1 0011 1 0100 12−×X - 3 1 0011 1 1100 1 1101
La deplasare participă numai cifrele numerelor. Din analizarea tabelului rezultă următoarele:
• In cazul deplasării numerelor pozitive, în poziŃiile rămase libere după deplasarea la stânga sau la dreapta se introduc cifre de 0.
• La numerele negative reprezentate în MS, în poziŃiile rămase libere după o deplasare la stânga sau la dreapta se introduc cifre de 0.
• La numerele negative reprezentate în C1, în poziŃiile rămase libere după o deplasare la stânga sau la dreapta se introduc cifre de 1.
• La numerele negative reprezentate în C2, în poziŃiile rămase libere după o deplasare la stânga se introduc cifre de 0, iar după o deplasare la dreapta se introduc cifre de 1 (deci, se repetă semnul numărului).