Documente Academic
Documente Profesional
Documente Cultură
INTREGI
Prin particularitile ei, aritmetica binar se preteaz la automatizare mai
bine dect aritmetica n orice alt baz de numeraie. Acesta este motivul pentru
care n calculatoare se folosete aritmetica n baza 2. Pentru a valorifica la
maximum posibilitile tehnice actuale, pe lng reprezentarea obinuit a
numerelor n baza 2, se mai practic, dup cum vom vedea, i alte moduri de
reprezentare (alte codificri ale numerelor ntregi).
Dimensiuni i tipuri de reprezenri
Fiind vorba de calcule efectuate cu o main, se impun firesc o serie de
condiii. Cea mai important dintre ele este dimensiunea de reprezentare. Numrul
de cifre binare din reprezentarea unui numr este o constant a calculatorului,
fixat la proiectarea sistemului de calcul respectiv.
Fie n numrul de bii ai unei locaii care conine un numr ntreg. Valorile
lui n la calculatoarele actuale pot fi: 8, 16, 32 i 64, respectiv 1 octet, 2 octei, 4
octei i 8 octei. Acestea sunt singurele dimensiuni de locaii cu care se execut
operaii binare asupra numerelor ntregi. Excepiile de la aceast regul sunt att
de rare, nct nu merit s ne ocupm de ele.
Mai mult, dimensiunile a doi operanzi care particip la o operaie, precum
i dimensiunile rezultatului sunt de asemenea constante ale calculatorului,
indiferent de tipul de codificare a numerelor. Pentru a preciza regulile de
dimensionare n operaiile binare asupra numerelor ntregi, vom folosi sintagma
"operaie pe n bii".
R1) Operaiile de adunare pe n bii i scdere pe n bii presupun c ambii
termeni sunt reprezenai pe cte n bii, iar rezultatul, suma sau diferena, se va
reprezenta tot pe n bii.
R2) Inmulirea pe n bii presupune c ambii factori sunt reprezentai pe cte
n bii, iar produsul lor va fi reprezentat pe 2n bii.
R3) Imprirea pe n bii (oarecum invers fa de nmulire), impune condiia
ca dempritul s fie reprezentat pe 2n bii, iar mpritorul pe n bii. Operaia
furnizeaz dou rezultate: ctul reprezentat pe n bii i restul reprezentat tot pe n
bii.
n-1 n-2
...
2 1 0
Postulm faptul c bitul 0 este cel mai puin semnificativ, conine cifra unitilor i
se afl la dreapta locaiei. Bitul 1 este urmtorul ca ordin de semnificaie, conine
cifra "zecilor" (n baza 2) i se afl la stnga bitului 0 i la dreapta bitului 2.
Continund, se ajunge, n final, la bitul n-1, care este bitul cel mai semnificativ i
se afl la stnga locaiei de reprezentare. In legtur cu aceast structur, n 4.5
vom reveni pe larg cu o serie de precizri foarte importante.
R4) Dac rezultatul unei operaii nu ncape n locaie (apare depire),
atunci se vor pierde biii cei mai semnificativi, rmnnd biii 0, 1, 2 .a.m.d.
In ceea ce privete tipurile de numere ntregi cu care se opereaz, exist
dou (clase de) convenii de reprezentare:
- convenia de reprezentare fr semn, n care se opereaz numai cu numere
naturale;
- convenii de reprezentare cu semn, n care se opereaz att cu numere
pozitive, ct i cu numere negative. (Am folosit pluralul "convenii", deoarece,
dup cum vom vedea, exist mai multe astfel de reprezentri).
In seciunile urmtoare vom detalia fiecare dintre acestea. Ca moduri de
scriere, vom folosi n principal scrierea binar, dar vom folosi frecvent i scrierea
hexazecimal.
Aritmetica numerelor ntregi fr semn
Convenia de reprezentare fr semn
Aceast convenie se rezum la scrierea binar a numrului ntreg i
reprezentarea lui pe n bii. Gama numerelor posibile de reprezentat este:
[0, 2n - 1] adic [0...0 ; 1...1] ,
unde apar n zerouri, respectiv n cifre 1. Concret, aceste intervale sunt:
n=8
n = 16
[ 0 , 255 ]
[ 0 , 65535 ]
n = 32
n = 64
In situaia n care un numr binar necesit mai puin de n cifre binare, restul
biilor de la stnga (cei mai semnificativi), vor fi completai cu zerouri.
De exemplu, pentru n = 8, avem reprezentrile:
12 = 00010010 = (18)10
16 2
F3
= 11110011 = (243)10
16 2
Pentru n = 16, avem reprezentrile:
023F =
16
028A =
16
005A =
16
FFFF =
16
0000001000111111 = (575)10
2
0000001010001010 = (650)10
2
0000000001011010 = (90)10
2
1111111111111111 = (65535)10
2
2) Dac ntr-o operaie de scdere desczutul este mai mic dect scztorul,
atunci are loc depire la scdere, dar operaia se execut, fcndu-se "mprumut
fictiv" de la un rang inexistent.
Dm, n continuare, cteva exemple de operaii. Pentru fiecare operaie,
vom scrie mai nti operanzii n baza 10, apoi n baza 16 i apoi n baza 2.
Numrul de bii pe care se lucreaz reiese din context.
18+
18
-36
12+
12
-24
00010010+
00010010
-------00100100
24318
--225
F312
-E1
1111001100010010
-------11100001
243+
18
--261
F3+
12
-05
18243
---225
12F3
-1F
575+
650
--1225
023F+
028A
---04C9
650575
--75
028A023F
---004B
65536+
90
----65626
FFFF+
005A
---0059
11110011+
00010010
-------00000101 Depire la adunare!
0001001011110011
-------00011111 Depire la scdere!
0000001000111111+
0000001010001010
---------------0000010011001001
00000010100010100000001000111111
---------------0000000001001011
1111111111111111+
0000000001011010
---------------0000000001011001
Depire la adunare!
575650
---75
023F028A
---FFB5
00000010001111110000001010001010
---------------1111111111010101 Depire la scdere!
=1110 1101
1011
=0111
0000
=1111
1011
---=100
Intr-adevr, 147 mprit la 11 d ctul 13 i restul 4.
valori iniiale
deplasare
i=1
scdere i 1 la ct
deplasare
i=2
scdere i 1 la ct
deplasare
i=3
deplasare
i=4
scdere i 1 la ct
[x ] D =
, daca x 0
, daca x < 0
x
2
n -1
[x ] D =
, daca x 0
- x , daca x < 0
[18] = 12 = 00010010
D 16 2
[-18] = 92 = 10010010
D 16 2
Codul invers
Fie x R, x < 1, cu maxim n-1 cifre binare dup virgul.
DEFINITIA 4.5 Numrul x reprezentat n cod invers n convenie
subunitar nseamn:
, daca x 0
[x ] I =
2-2
- n+1
+ x , daca x < 0
[x ] I =
2 - 1 + x , daca x < 0
[18] = 12 = 00010010
I 16 2
[-18] = ED = 11101101
I 16 2
Situaie de excepie. n reprezentarea numerelor ntregi folosind codul
invers, numrul 0 are dou reprezentri i anume:
Codul complementar
Fie x R, x < 1, cu maxim n-1 cifre binare dup virgul.
DEFINITIA 4.7 Numrul x reprezentat n cod complementar n convenie
subunitar nseamn:
[x ] C =
, daca x 0
2 + x , daca x < 0
[x ] C =
2 + x , daca x < 0
In specificarea hexazecimal, cele mai din dreapta cifre zero se vor pstra, prima
cifr diferit de zero va fi nlocuit cu diferena ei pn la 16, iar restul vor fi
nlocuite cu diferenele lor pn la 15.
Regula de mai sus este aplicabil la orice configuraie de n bii. In literatur
ea este cunoscut sub numele de complementare fa de 2, iar inversnd spre
stnga toi biii ncepnd cu primul bit 1 exclusiv ai reprezentrii unui numr x se
obine complementul fa de 2 al lui x. Denumirea s-a ncetenit de la convenia
subunitar, unde apare numrul 2. Deoarece la calculatoarele actuale se folosete
practic numai codul complemtar, se mai spune simplu, complementare respectiv
complement.
Vom reprezenta acum numerele (18) 10 i (-18)10 n cod complementar pentru
n = 8.
[18] = 12 = 00010010
C 16 2
[-18] = EE = 11101110
C 16 2
S remarcm un rezultat simplu care leag codul invers de cel
complementar. Are loc:
TEOREMA 4.4 Dac x < 0, atunci [x]C = [x]I + 1
Intr-adevr, [x]C = 2n + x = 2n-1 + x + 1 = [x]I + 1.
Situaie de excepie. n reprezentarea numerelor ntregi folosind codul
complementar, numrul 0 are reprezentare unic!
n schimb exist o configuraie de bii care nu reprezint nici un numr:
10...0
Recomandm totui s se considere numai intervalul: (-2 n-1 , 2n-1). Aceasta pentru
simplul motiv c la nivelul aceleiai maini, unele produse software admit numrul
-2n-1, iar altele nu-l admit ca pe o valoare ntreag reprezentabil! De exemplu, n
specificaiile Turbo Pascal se spune c ntregii aparin [-32768 , 32767] i, totui,
numrul -32768 nu este acceptat de ctre compilator !
Pentru diferite valori ale lui n intervalele la care pot aparine numerele
ntregi n cod complementar sunt:
n= 8
n=16
n=32
n=64
[-127 , 127]
[-32767 , 32767]
[-2 147 483 647 , 2 147 483 647]
[-9 223 412 376 694 775 807, +9 223 412 376 694 775 807]
x + y , daca x + y < 2n
x, y [0, 2 n ) x y =
n
n
x + y - 2 , daca x + y 2
Practic, aceast operaie este adunarea ntregilor fr semn care elimin din sum
cifrele binare de ordin mai mare dact n-1.