5.6. Numere binare cu semn


În matematică, numerele pozitive (inclusiv zero) sunt reprezentate ca numere fără semn. Dar, atunci când ne confruntăm cu numere negative, folosim un semn în fața numărului pentru a arăta că numărul este negativ în valoare și diferit de o valoare fără semn pozitivă și același lucru este valabil și pentru numerele binare cu semn.

Totuși, în circuitele digitale nu există nicio prevedere pentru a pune un semn plus sau chiar un semn minus la un număr, deoarece sistemele digitale funcționează cu numere binare reprezentate în termenii "0" și "1". Atunci când sunt utilizate împreună în microelectronică, aceste "1" și "0", numite bit, intră în mai multe game de dimensiuni ale numerelor care sunt denumite cu nume comune, cum ar fi octet sau cuvânt.

Am văzut anterior că un număr binar pe 8 biți (un octet) poate avea o valoare cuprinsă între 0 (000000002) și 255 (111111112), adică 28 = 256 combinații diferite de biți care formează un singur byte (octet) pe 8 biți. De exemplu, un număr binar fără semn, cum ar fi: 010011012 = 64 + 8 + 4 + 1 = 7710 în zecimal. Dar sistemele digitale și computerele trebuie să poată utiliza și să manevreze numere negative, precum și numere pozitive.

Numerele matematice sunt în general alcătuite dintr-un semn și o valoare (mărime) în care semnul indică dacă numărul este pozitiv (+) sau negativ (-) cu valoarea indicând dimensiunea numărului, de exemplu 23, +156 sau -274. Prezentarea numerelor în acest mod se numește reprezentare "semn-magnitudine", deoarece cea mai din stânga cifră poate fi utilizată pentru a indica semnul iar cifrele rămase magnitudinea sau valoarea numărului.

Notația semn-magnitudine este cea mai simplă și una dintre cele mai comune metode de reprezentare a numerelor pozitive și negative fără zero (0). Astfel, numerele negative sunt obținute pur și simplu prin schimbarea semnului numărului pozitiv corespunzător deoarece fiecare număr pozitiv sau fără semn va avea un semn opus, de exemplu, +2 și -2, +10 și -10, etc.

Dar cum reprezentăm numerele binare cu semn dacă tot ce avem este o grămadă de unu și zero. Știm că cifrele binare sau biții au doar două valori, fie "1", fie "0" și convenabil pentru noi, un semn are numai două valori, fiind "+" sau "".

Atunci, putem folosi un singur bit pentru a identifica semnul unui număr binar cu semn ca valoare pozitivă sau negativă. Deci, pentru a reprezenta un număr binar pozitiv (+n) și un număr binar negativ (-n) binar, le putem folosi cu adăugarea unui semn.

Pentru numerele binare cu semn bitul cel mai semnificativ (MSB) este utilizat ca bit de semn. Dacă bitul semn este "0", înseamnă că numărul este pozitiv în valoare. Dacă bitul semn este "1", atunci numărul este negativ în valoare. Biții rămași din număr sunt utilizați pentru a reprezenta magnitudinea numărului binar în modul obișnuit de format binar fără semn.

Putem observa că notația Sign-and-Magnitude (SM) stochează valorile pozitive și negative împărțind biții "n" total în două părți: 1 bit pentru semn și n-1 biți pentru valoarea care este un număr binar pur. De exemplu, numărul zecimal 53 poate fi exprimat ca număr binar cu semn pe 8 biți, după cum urmează.

Numere binare cu semn pozitiv Numere binare cu semn negativ

Dezavantajul este că, înainte aveam un număr binar, fără semn, de gamă completă de n-biți întregi, acum avem un număr binar cu semn cu n-1 de biți, care oferă o gamă redusă de cifre de la:

-2n-1 până la ++2n-1

Deci, de exemplu: dacă avem 4 biți pentru a reprezenta un număr binar cu semn (1 bit pentru bitul Sign și 3 biți pentru biții Magnitude), atunci gama reală de numere pe care le putem reprezenta în notația semn-magnitudine ar fi :

-24-1 + 1 până la +24-1 - 1

-23 + 1 până la +23 - 1

-7 până la +7

În timp ce înainte, intervalul unui număr binar fără semn pe 4 biți ar fi fost de la 0 la 15 sau de la 0 la F în hexazecimal, acum avem un interval redus de -7 până la +7. Astfel, un număr binar fără semn nu are un singur semn-bit și, prin urmare, poate avea un interval binar mai mare, deoarece cel mai semnificativ bit (MSB) este doar un bit sau o cifră suplimentară, mai degrabă decât un bit de semnal folosit.

Un alt dezavantaj aici al formei semn-magnitudine este că putem avea un rezultat pozitiv pentru zero, +0 sau 00002 și un rezultat negativ pentru zero, -0 sau 10002. Ambele sunt valide, dar care este corectă?

Numere binare cu semn. Exemplul nr. 1

Convertiți următoarele valori zecimale în numere binare cu semn, utilizând formatul semn-magnitudine:

Rețineți că pentru un număr binar semnat pe 4 biți, 6 biți, 8 biți, 16 biți sau 32 de biți toți biții TREBUIE să aibă o valoare, prin urmare "0" se utilizează pentru a umple spațiile dintre bitul de semnal din stânga și prima sau cea mai mare valoare "1".

Reprezentarea sign-magnitude a unui număr binar este o metodă simplă de a utiliza și a înțelege reprezentarea numerelor binare cu semn, deoarece utilizăm acest sistem întotdeauna, în matematică, cu numere zecimale normale (baza 10). Adăugăm un “1” în fașa numărului binar dacă este negativ și un “0” dacă este pozitiv.

Totuși, utilizarea acestei metode de semn-magnitudine poate avea ca rezultat posibilitatea a două modele diferite de biți având aceeași valoare binară. De exemplu, +0 și -0 ar fi 0000, respectiv 1000, ca un număr binar pe 4 biți cu semn. Așadar, putem vedea că prin această metodă pot exista două reprezentări pentru zero, un zero pozitiv (0 0002) și un zero negativ (1 0002) care pot provoca complicații mari pentru computere și sisteme digitale.

Complementul față 1 al unui număr binar cu semn

Complementul lui 1 este o altă metodă pe care o putem folosi pentru a reprezenta numerele binare negative într-un sistem cu numere binare cu semn. În complementul lui 1, numerele pozitive (cunoscute și ca ne-complemente) rămân neschimbate ca mai înainte cu numerele semn-magnitudine.

Numerele negative sunt reprezentate prin luarea complementului față de 1 (inversiune, negare) a numărului pozitiv fără semn. Deoarece numerele pozitive încep întotdeauna cu un "0", complementul va începe întotdeauna cu un "1", pentru a indica un număr negativ.

Complementul față de 1 a unui număr binar negativ este complementul contrapartidei sale pozitive, astfel încât să luăm complementul unui număr binar, tot ce trebuie să facem este să schimbăm fiecare bit la rând. Astfel, complementul față de 1 a lui "1" este "0" și invers, atunci complementul lui 100101002 este pur și simplu 011010112 deoarece toate de 1 sunt schimbate în 0 și 0 în 1.

Cea mai ușoară modalitate de a găsi complementul față de 1 al unui număr binar cu semn atunci când construiți circuite de decodor aritmetic sau logic digital este să utilizați inversoare. Inversorul este în mod natural un generator de complement și poate fi folosit în paralel pentru a găsi complementul lui 1 al oricărui număr binar, așa cum este arătat.

Complementul lui 1 folosind inversoare

Vedem că este foarte ușor să găsești complementul față de 1 alunui număr binar N, deoarece tot ce trebuie să facem este să schimbăm pur și simplu cifrele 1 în 0 și 0 în 1 pentru a ne da un echivalent - N. De asemenea, la fel ca și reprezentarea precedentă semn-magnitudine, complementul lui 1 poate avea și notație n-bit pentru a reprezenta numerele cuprinse în intervalul de la: -2n-1 și +2n-1 - 1. De exemplu, o reprezentare pe 4 biți în format complement față de 1 poate fi utilizată pentru a reprezenta numerele zecimale în intervalul de la -7 la +7 cu două reprezentări ale lui zero: 0000 (+0) și 1111 (-0) la fel ca înainte .

Adunarea și scăderea utilizând complementul lui 1

Unul dintre principalele avantaje ale complementului lui 1 este adunarea și scăderea a două numere binare. În matematică, scăderea poate fi implementată într-o varietate de moduri ca A-B, este aceeași cu A+(-B) sau -B+A etc. Prin urmare, complicația scăderii a două numere binare poate fi efectuată pur și simplu folosind adunare.

Am văzut în tutorialul Binary Adder că adunarea binară respectă aceleași reguli ca pentru adunarea normală, cu excepția faptului că în binar există doar două biți (cifre), iar cea mai mare cifră este "1" (la fel cum "9" este cea mai mare cifră zecimală), astfel încât combinațiile posibile pentru adunarea binară sunt următoarele:

Atunci când cele două numere care trebuie adunate sunt ambele pozitive, suma A + B, acestea pot fi adunate împreună ca sumă directă (inclusiv numărul și semnul bit), deoarece atunci când se adună biți singuri "0 + 0", "0 + 1" sau "1 + 0" are ca rezultat o sumă de "0" sau "1". Acest lucru se datorează faptului că atunci când cei doi biți pe care dorim să îi adunăm împreună sunt diferiți ("0" + "1" sau "1 + 0"), rezultatul este "1". De asemenea, atunci când cei doi biți care urmează să fie adunați sunt egali ("0 + 0" sau "1 + 1"), rezultatul este "0" iar "1 + 1" dă "0" plus un transport (carry) "1". Să ne uităm la un exemplu simplu.

Scăderea a două numere binare

Este necesar un sistem digital pe 8 biți pentru a scădea următoarele două numere 115 și 27 unul din celălalt, folosind complementul lui 1. Deci, în zecimal, aceasta ar fi: 115 - 27 = 88.

Mai întâi avem nevoie să convertim cele două numere zecimale în binar și să ne asigurăm că fiecare număr are același număr de biți prin adăugarea de zero pentru a produce un număr de 8 biți (octet). Prin urmare:

11510 în binar este: 011100112

2710 în binar este: 000110112

Acum trebuie să găsim complementul celui de-al doilea număr binar (00011011), lăsând în același timp primul număr (01110011) neschimbat. Deci, prin schimbarea tuturor de 1 cu 0 și 0 cu 1, complementul lui 1 al 00011011 este, prin urmare, egal cu 11100100.

Adunând primul număr și complementul celui de-al doilea număr dă:

Deoarece sistemul digital trebuie să funcționeze cu 8 biți, doar primele opt cifre sunt folosite pentru a da răspuns la sumă și pur și simplu ignorăm ultimul bit (bit 9). Acest bit este un bit "overflow"(depășire). Depășirea apare atunci când suma celei mai semnificative coloane (cea mai din stânga) produce un transport (carry) înainte. Bitul de transport poate fi ignorat complet sau trecut la următoarea secțiune digitală pentru a fi utilizat în calculele sale. Overflow indică faptul că răspunsul este pozitiv. Dacă nu există o depășire, răspunsul este negativ.

Rezultatul de 8 biți de mai sus este: 01010111 (depășirea "1" se anulează) și pentru a-l converti înapoi din răspunsul complement lui 1 la răspunsul real trebuie să adunăm acum "1" la rezultatul complement lui 1, deci:

Deci, rezultatul scăderii 27 (000110112) din 115 (011100112) folosind complementul lui 1 în binar dă răspunsul: 010110002 sau (64 + 16 + 8) = 8810 în zecimal.

Vedem că numerele binare cu semn sau fără semn pot fi scăzute unul din celălalt utilizând Complementul lui Unu și procesul de adunare. Sumatorii binari, cum ar fi TTL 74LS83 sau 74LS283, pot fi utilizați pentru a aduna sau a scădea două numere binare pe 4 biți cu semn sau legate împreună pentru a produce sumatoare pe 8 biți compleți cu carry-out (transport).

Complementul lui 2 al unui număr binar cu semn

Complementul lui 2, sau față de 2, este o altă metodă, ca forma anterioară semn-magnitudine și complementul lui 1, pe care o putem folosi pentru a reprezenta numerele binare negative într-un sistem cu numere binare cu semn. În complementul lui 2, numerele pozitive sunt exact aceleași ca înainte pentru numerele binare fără semn. Un număr negativ, totuși, este reprezentat de un număr binar, care, atunci când este adăugat la echivalentul său pozitiv este zero.

În forma complement a lui 2, un număr negativ este complementul față de2 al numărului său pozitiv, cu scăderea a două numere fiind A-B = A + (complementul față de 2 al lui B) folosind același proces ca și mai înainte, în principiu, complementul lui doi este complementul lui 1 + 1.

Principalul avantaj al complementului lui 2 față de complementul lui 1 precedent este că nu există o problemă cu zero dublu și că este mult mai ușor să generezi complementul lui 2 al unui număr binar cu semn. Prin urmare, operațiile aritmetice sunt relativ mai ușor de realizat atunci când numerele sunt reprezentate în formatul de complement al lui 2.

Să aruncăm o privire la scăderea celor două numere de 8 biți 115 și 27 de mai sus folosind complementul lui doi și ne amintim de mai sus că echivalentele binare sunt:

11510 în binar este: 011100112

2710 în binar este: 000110112

Numerele noastre sunt de 8-biți, atunci sunt 28 cifre disponibile pentru a reprezenta valorile noastre și în binar acest lucru este egal cu: 1000000002 sau 25610. Atunci, complementul față de doi al lui 2710 va fi:

(28)2 - 00011011 = 100000000 - 00011011 = 111001012

Complementarea celui de-al doilea număr negativ înseamnă că scăderea devine o adunare, mult mai ușoară, a celor două numere, deci suma este:

115 + (complementul față de 2 a lui 27) care este:

01110011 + 11100101 = 1 010110002

Așa cum a fost anterior, al 9-lea bit, de depășire, este ignorat deoarece suntem interesați numai de primii 8 biți, deci rezultatul este: 010110002 sau

(64 + 16 + 8) = 8810 în zecimal, la fel ca înainte.

Rezumat Numere binare cu semn

Am văzut că numerele binare negative pot fi reprezentate prin utilizarea celui mai semnificativ bit (MSB) ca bit de semn. Dacă un număr binar n-bit este cu semn, bitul cel mai din stânga este utilizat pentru a reprezenta semnul lăsând n-1 biți pentru a reprezenta numărul.

De exemplu, într-un număr binar pe 4 biți, acest lucru lasă doar 3 biți pentru a ține numărul real. Dacă totuși, numărul binar nu este cu semn, atunci toți biții pot fi utilizați pentru a reprezenta numărul.

Reprezentarea unui număr binar cu semn este denumită în mod obișnuit notația semn-magnitudine și dacă bitul semn este "0", numărul este pozitiv. Dacă bitul semn este "1", atunci numărul este negativ. Atunci când se ocupă de operații aritmetice binare, este mai convenabil să se folosească complementul numărului negativ.

Complementarea este un mod alternativ de reprezentare a numerelor binare negative. Acest sistem de codare alternativ permite scăderea numerelor negative prin utilizarea adunării simple.

Deoarece numerele pozitive semn-magnitudine încep întotdeauna cu un zero (0), complementul său va începe întotdeauna cu un (1) pentru a indica un număr negativ, după cum se arată în tabelul următor.

Comparație număr binar cu semn pe 4 biți

Formele semn-complement ale numerelor binare pot utiliza complementul lui 1 sau complementul lui 2. Complementul lui 1 și complementul lui 2 al unui număr binar sunt importante deoarece permit reprezentarea numerelor negative.

Metoda aritmetică a complementului lui 2 este folosită uzual în computere pentru a manevra numerele negative, singurul dezavantaj fiind că, dacă vrem să reprezentăm numere binare negative în format de număr binar cu semn, trebuie să renunțăm la o parte din intervalul numărului pozitiv pe care l-am avut înainte.