5. Depăşirea binară

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

Depăşirea valorii maxime

Una din problemele numerelor binare cu semn, este bit-ului de depăşire. Acesta apare în cazul în care rezultatul adunării sau scăderii efectuate între două numere binare este mai mare decât valoarea maximă ce poate fi reprezentată cu numărul de biţi alocaţi. Ţineţi minte că poziţia bit-ului de semn este fixată la începutul problemei. În exemplul precedent, am utilizat cinci biţi pentru reprezentarea unui număr, iar bit-ul din stânga a fost utilizat pe post de bit de semn, cu pondere negativă. Cu cinci biţi rămaşi pentru reprezentarea valorilor, cel mai mare număr ce-l putem scrie astfel este +3110(0111112), iar cel mai mic -3210(1000002). Dacă aplicăm o operaţie de adunare unor astfel de numere, iar rezultatul este mai mare decât 3110 sau mai mic decât -3210, răspunsul obţinut nu va fi corect.

Adunarea a două numere binare

Să luăm un exemplu:

1710 = 100012
1910 = 100112

Adăugând bit-ul de semn, adunarea celor două numere arată astfel:

    1  11  <--- biţi ce se trec mai departe
    010001
  + 010011
  -------- 
    100100 

Răspunsul (1001002) este egal cu -2810, nu cu +3610, aşa cum ar trebui să obţinem adunând +1710 cu +1910. Evident, acest răspuns nu este corect. Dar unde am greşit? Din moment ce valoarea reală a sumei (3610) depăşeşte limita permisă de cei cinci biţi (plus bit-ul de semn), ajungem la o eroare de depăşire binară.

Scăderea a două numere binare

O eroare similară obţinem şi în cazul adunării a două numere negative (scădere binară) a cărei sumă este mai mică decât -3210:

-1710 = 1011112
-1910 = 1011012

Aplicând operaţia de adunare celor două numere, obţinem:

    1 1111  <--- biţi ce se trec mai departe
     101111
   + 101101
   --------
    1011100 

După înlăturarea bit-ului în plus, rezultatul final este:

0111002 = +2810

Acest răspuns este, desigur, incorect.

Adăugarea unui bit suplimentar

Să reconsiderăm cele două exemple de mai sus, dar de această dată utilizând şase biţi pentru reprezentarea numărului. Al şaptelea bit va fi bit-ul de semn:

    1710 + 1910                     (-1710) + (-1910) 
 
     1  11                           11 1111
    0010001                           1101111
  + 0010011                         + 1101101
  ---------                         ---------
    01001002                         110111002 <--- înlăturarea bit-ului suplimentar
									
Răspunsuri: 01001002 = +3610
            10111002 = -3610

Utilizând un număr suficient de biţi pentru reprezentarea rezultatelor, răspunsurile sunt corecte.

În aceste exemple am putut determina erorile de depăşire prin realizarea „de mână” a operaţiilor de adunare sub formă zecimală. Această metodă de verificare nu este însă foarte eficientă. Până la urmă, întregul scop al complementării este realizarea adunării sub formă binară. Acest lucru este valabil mai ales în cazul proiectării circuitelor electronice: circuitul trebuie să poată sesiza singur existenţa unei erori de depăşire, fără ajutor uman.

Verificarea erorilor

Cea mai elegantă metodă de rezolvare a acestei situaţii constă în verificarea „semnului” sumei şi compararea acestuia cu semnele numerelor însumate. Desigur, rezultatul sumei a două numere pozitive este un număr pozitiv, iar suma a două numere negative, este un număr negativ. Putem observa că, de fiecare dată când avem o situaţie de depăşire, semnul sumei este invers faţă de semnul celor două numere adunate: +1710 plus +1910 ne-a dat -2810, sau, -1710 plus -1910 ne-a dat +2810. Prin simpla verificare a semnelor, putem să ne dăm seama că exista o eroare iar rezultatul este fals.

Ce se întâmplă în cazul în care unul din numere este pozitiv iar celălalt negativ? Care ar trebui să fie semnul sumei? Răspunsul este simplu: atunci când numerele însumate sunt de semne diferite, nu va exista niciodată o eroare de depăşire. Motivul este la fel de simplu: depăşirea are loc atunci când valoarea unui număr este mai mare decât cea permisă de numărul de biţi utilizaţi. În cazul numerelor de semn contrar, valoarea rezultatului trebuie să fie între cele două numere, prin urmare, nu poate fi mai mare sau mai mică decât limita maximă permisă de numărul de biţi.

Din fericire, această metodă de identificare a erorii de depăşire este uşor de implementat într-un circuit electronic.