3. Numere binare negative

Acasă » Electronică digitala » 02 - Aritmetică binară

Operaţia de scădere prin adunare

Operaţia de scădere se poate realiza asemănător cu cea de adunare prin considerarea unuia dintre numere ca fiind negativ. De exemplu, operaţia de scădere „7 - 5” este aceiaşi cu cea de adunare „7 + (-5)”, adică, adunarea unui număr pozitiv cu un număr negativ. Din moment ce ştim deja cum se realizează reprezentarea numerelor pozitive sub formă binară, tot ceea ce trebuie să facem este să reprezentăm şi numerele negative sub formă binară. De aici va rezulta direct operaţia de scădere.

Un număr zecimal negativ se reprezintă de obicei prin introducerea semnului minus(-) la stânga, la fel ca în exemplul de sus (-5). Totuşi, scopul notaţiei binare este realizarea circuitelor tip pornit/oprit pentru reprezentarea valorilor sub forma căderilor de tensiune (două valori alternative: „înaltă” şi „joasă”). În această situaţie, nu ne putem permite să introducem un al treilea simbol, precum semnul minus, din moment ce aceste circuite au doar două stări posibile, pornit sau oprit.

Bit-ul de semn

O soluţie o reprezintă utilizarea unui bit (circuit) doar pentru reprezentarea acestui semn matematic şi pentru nimic altceva:

1012 = 510 (pozitiv) Utilizând un bit adiţional (0 = pozitiv, 1 = negativ): 01012 = 510 (pozitiv) 11012 = -510 (negativ)

Dar, în această situaţie în care folosim biţi pentru alt scop decât pentru reprezentarea valorilor, trebuie să fim foarte atenţi, altfel, riscăm ca numărul 11012 să fie interpretat ca fiind 1310 în loc de -510. Pentru a nu crea astfel de confuzii, trebuie să ne decidem în primul rând de câţi biţi avem nevoie pentru a reprezenta cel mai mare număr posibil cu care vom lucra în aplicaţia noastră. Ne putem apoi asigura că nu vom depăşi această lungime (în biţi) atunci când aplicăm operaţiile aritmetice. În exemplul de mai sus, limita inferioară este -7 (11112) iar cea superioară 7 (01112), deoarece al patrulea bit este folosit pe post de semn. Doar prin stabilirea acestor numere putem fi sigur că nu vom amesteca un număr negativ cu un număr pozitiv, mai mare.

Pe cât de simplă pare această abordare, ea nu este foarte practică din punct de vedere al aritmeticii. De exemplu, cum efectuăm adunarea unui număr negativ (11012) cu un oricare alt număr, folosind tehnica standard al adunării binare? Ar trebui să inventăm o nouă metodă de realizare a adunării pentru ca această tehnică să fie practică. Dar, dacă realizăm acest lucru, nu vom mai avea avantajul utilizării numerelor negative pentru realizarea scăderii prin adunare obişnuită.

Reprezentarea în complement faţă de doi

Din fericire, există o altă metodă pentru reprezentarea numerelor negative ce este compatibilă cu operaţia de adunare obişnuită, şi anume, complementarea. Cu această strategie, bit-ul din stânga primeşte un statut special, asemenea bit-ului de semn din exemplul precedent. Totuşi, de această dată, bit-ul din stânga nu este doar un bit de semn, ci posedă şi o valoare. De exemplu, -5 este reprezentat astfel:

10112 = -510 (1 x -810) + (0 x 410) + (1 x 210) + (1 x 110) = -510

Utilizând cei trei biţi din dreapta pentru reprezentarea valorilor de la zero la şapte, bit-ul din stânga reprezentând fie zero fie -8, putem reprezenta orice număr întreg de la -7 (10012 = -810 + 110 = -710) la +7 (01112 = 010 + 710 = 710).

Reprezentarea numerelor pozitive utilizând această notaţie nu este diferită faţă de notaţia normală (bit-ul din stânga va fi tot timpul zero). Totuşi, reprezentarea numerelor negative nu este chiar aşa de intuitivă.

0 = 0000
1 = 0001          -1 = 1111
2 = 0010          -2 = 1110
3 = 0011          -3 = 1101
4 = 0100          -4 = 1100
5 = 0101          -5 = 1011
6 = 0110          -6 = 1010
7 = 0111          -7 = 1001
                  -8 = 1000

Observăm că numerele binare negative din coloana dreaptă, fiind suma celor trei biţi din dreapta plus bitul negativ din dreapta, egal cu minus opt, nu se „numără” în aceiaşi ordine precum numerele binare pozitive din coloana stângă. În schimb, cei trei biţi trebuie aduşi la forma necesară, astfel încât, după adunarea cu minus opt să se obţină rezultatul negativ dorit.

Spunem că cei trei biţi din dreapta sunt o reprezentare în complement faţă de doi al numărului pozitiv corespunzător. Să facem o comparaţie:

număr pozitiv         complementul faţă de doi
---------------       ------------------------
001                    111
010                    110
011                    101
100                    100
101                    011
110                    010
111                    001

Obţinerea numărului în complement faţă de doi

În acest caz (bit-ul al patrulea are valoarea de minus opt), reprezentarea în complement faţă de doi a oricărui număr pozitiv este valoarea necesară însumări cu minus opt pentru a rezulta aceiaşi valoare, dar cu semn schimbat. Din fericire, există o cale uşoară de calcul al complementului, pentru oricare număr binar: inversăm toţi biţii acelui număr, schimbând 1 cu 0 şi invers. Ajungem astfel la reprezentarea în complement faţă de unu a numărului. Pentru soluţia dorită de noi, mai trebuie să adăugăm un unu.

De exemplu, pentru obţinerea complementului lui cinci (1012), inversăm toţi biţii şi obţinem 0102(complement faţă de unu), apoi adăugăm un unu şi obţinem 0112, sau -510 în complement faţă de doi.

Este interesant de menţionat faptul că, obţinerea complementului faţă de doi a unui număr binar funcţionează la fel de bine şi dacă aplicăm inversarea tuturor biţilor, inclusiv bit-ului din stânga. Să luăm exemplul precedent, inversarea lui 5 în -5, dar aplicând operaţia de inversare tuturor biţilor. Trebuie să includem însă şi bit-ul din stânga numărului iniţial (01012). După inversarea tuturor biţilor, obţinem complementul faţa de unu (10102). Apoi, adăugăm un unu pentru obţinerea răspunsului final: 10112, sau -510 în complement faţă de doi, exprimat cu patru biţi.