ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Complement faţă de doi - Wikipedia

Complement faţă de doi

De la Wikipedia, enciclopedia liberă

Complementul faţă de doi (sau codul complementar) este o metodă de reprezentare binară a numerelor întregi în calculator în virgulă fixă. Această metodă simplifică efectuarea operaţiilor de adunare şi scădere a numerelor întregi comparativ cu reprezentarea în cod direct. Comparativ cu reprezentarea în complement faţă de unu, permite operarea cu toate cele 2n numere reprezentabile pe n biţi, existând o unică reprezentare pentru 0.

Cuprins

[modifică] Reprezentarea numerelor în cod complementar

În complementul faţă de doi, din gama de 2n numere reprezentabile pe n biţi, se pot reprezenta 2n − 1 (de la − 2n − 1 până la -1) numere negative, 0 şi 2n − 1 − 1 (de la 1 la 2n − 1 − 1) numere pozitive.[1] Ca şi în alte metode de reprezentare în virgulă fixă, cum sunt codul direct şi complementul faţă de unu, bitul cel mai semnificativ este folosit pentru reprezentarea semnului numărului, 0 reprezentând semnul +, iar 1 reprezentând semnul -. Acest bit se numeşte bit de semn. Ceilalţi n-1 biţi au semnificaţie diferită pentru numerele pozitive şi cele negative.

Complement faţă de doi Zecimal
0111 7
0110 6
0101 5
0100 4
0011 3
0010 2
0001 1
0000 0
1111 −1
1110 −2
1101 −3
1100 −4
1011 −5
1010 −6
1001 −7
1000 −8

Reprezentarea numerelor pe 4 biţi în complement faţă de doi

[modifică] Numerele pozitive

La reprezentarea numerelor întregi pozitive, pe cei n-1 biţi se trece reprezentarea în bază doi a valorii absolute a numărului. Astfel, reprezentarea pe 4 biţi a numărului zecimal 3 este 0011, primul 0 fiind bitul de semn, iar 011 fiind reprezentarea binară a numărului 3.

[modifică] Numerele negative

Matematic, reprezentarea unui număr negativ în complement faţă de doi este valorii 2nV, unde V este valoarea absolută a numărului reprezentat. De exemplu, numărul -9 se reprezintă pe 8 biţi astfel: se calculează valoarea absolută a numărului, care este 9, reprezentată binar pe 8 biţi este 00001001.

100000000-
 00001001=
---------
 11110111

Altfel, pentru a obţine reprezentarea în complement faţă de doi un număr negativ, se ia reprezentarea valorii absolute a acestuia, se inversează bit cu bit (inclusiv bitul de semn) şi apoi se adună 1 la rezultat. Luând acelaşi exemplu, avem:

00001001
--------
11110110+ (inversat)
       1
--------
11110111

Se observă astfel că valoarea 11111111 reprezintă numărul − 255 = 28 − 1, spre deosebire de complementul faţă de unu, unde aceeaşi valoare era o reprezentare alternativă pentru numărul 0. Se elimină astfel o ambiguitate şi se lărgeşte puţin domeniul de reprezentare.

[modifică] Algebra complementului faţă de doi

Cele 2n numere reprezentabile pe n biţi formează inelul claselor de echivalenţă a resturilor modulo 2n. Fără bit de semn, acestea pot reprezenta numerele de la 0 la 2n − 1. Însă, întrucât în aceste clase de resturi fiecare număr este echivalent cu el însuşi minus 2n, ele pot reprezenta la fel de bine şi numerele de la − 2n − 1 până la 2n − 1 − 1.

[modifică] Adunarea şi scăderea în complement faţă de doi

Cum conversia unui număr în complementul său este o operaţie simplă, scăderea numerelor în această metodă de reprezentare se reduce la adunarea descăzutului la complementul faţă de doi al scăzătorului. Adunarea se face bit cu bit, incluzând aici şi bitul de semn, iar eventualul transport rezultat din adunarea biţilor de semn se neglijează. [2]

[modifică] Detecţia depăşirilor

Depăşirile apar atunci când rezultatul adunării sau scăderii este mai mare decât valoarea maximă (caz în care se numeşte overflow) sau mai mic decât valoarea minimă (caz în care se numeşte underflow) reprezentabilă pe n biţi. Deoarece în caz de depăşire rezultatul operaţiei este unul eronat, este important ca unitatea aritmetică şi logică să poată detecta această condiţie de eroare. Aceasta se poate face urmărind transportul la momentul adunării bitului de semn. Dacă la adunarea bitului de semn se generează un transport diferit de cel de la bitul imediat următor, atunci se ştie că a avut loc depăşirea.

[modifică] Note

  1. ^ Diatcu (1997), p. 82
  2. ^ Diatcu (1997), p. 84

[modifică] Bibliografie

  • Diatcu E. (1997). Elemente fundamentale ale teoriei sistemelor şi calculatoarelor, Tertişco A., Iacob F., Tache M., Racoviţă Z., Bucureşti: Editura Hyperion.


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -