Download - 4.2-Aritmetica-binara.pdf
-
www.circuiteelectrice.ro Electronic digital Aritmetica binar
6
2 Aritmetic binar
2.1 Valori i sisteme de numeraie
2.1.1 Invariabilitatea valorilor
Este foarte important s nelegem c sistemul de numeraie ales pentru reprezentarea valorilor (numerelor)
nu are absolut niciun impact asupra rezultatului aplicrii operaiilor aritmetice de adunare, scdere, nmulire,
mprire, rdcini, puteri sau algoritmi. O valoare este tot timpul aceiai, indiferent de modul n care alegem s o
simbolizm. Fie c reprezentm temperatura de 35o
2.2 Adunarea binar
sub aceast form (zecimal) sau sub forma 100011 (binar),
aceasta nu schimb valoarea real a temperaturii ce o resimim. Ea rmne aceiai, ceea ce se modific este modul
de reprezentare a acesteia.Operaiile eseniale i legturile matematice nu sunt afectate de modificarea sistemului de
numeraie pentru reprezentarea valorilor. Aceast distincie ntre valori i sisteme de numeraie este foarte
important i trebuie neleas.
Aceast distincie esenial dintre cei doi termeni este asemntoare distinciei dintre cuvinte i obiectele
asociate acestor cuvinte. O cas este tot o cas, indiferent de limba pe care o folosim pentru desemnarea acesteia
(romn, englez, german, etc.). Obiectul este ceva real, palpabil, pe cnd cuvntul este doar un simbol pentru
reprezentarea acelui obiect.
Acestea fiind spuse, o simpl operaie de aritmetic sub form binar, precum adunarea, pare ciudat pentru
o persoan obinuit s lucreze doar cu sistemul de numeraie zecimal. n acest capitol vom analiza tehnicile
folosite pentru efectuarea operaiilor aritmetice simple cu numere binare. Aceste tehnici vor fi folosite pentru
proiectarea circuitelor electronice care s realizeze exact acelai lucru. Chiar dac suntem obinuii cu operaiile de
adunare i scdere folosind un calculator de mn, calculatorul folosete numerele binare pentru obinerea
rezultatului final.
http://www.circuiteelectrice.ro/
-
www.circuiteelectrice.ro Electronic digital Aritmetica binar
7
Adunarea numerelor binare este relativ simpl, foarte asemntoare cu adunarea numerelor zecimale.
Adunarea se realizeaz adunnd pe coloane fiecare bit, pe rnd, de la dreapta la stnga, la fel ca n cazul adunrii
zecimale. Spre deosebire de aceasta ns, exist puine reguli de memorat:
0 + 0 = 00 + 1 = 11 + 0 = 11 + 1 = 1
1 + 1 + 1 = 1 1
Cnd rezultatul adunrii pe coloane este format din doi bii (de ex, 1 + 1 = 10), bitul din dreapta (0, n acest
caz) se scrie iar cel din stnga se trece mai departe (1, n acest caz):
1 1 1 1 11 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 0 0 1 1 1
+ 0 0 1 0 0 1 0 + 0 0 1 1 0 0 1 + 0 0 1 0 1 1 01 0 1 1 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 0 1
Adunarea din stnga nu a dat niciunde doi bii, pe fiecare coloan suma fiind fie 1, fie 0. n celelalte dou
adunri, exist sume care dau fie 10 fie 11, iar n acest caz bitul din stnga (0 sau 1) se trece mai departe la
urmtoarea adunare.
Dup cum vom vedea mai trziu, se pot construi circuite electronice care s realizeze exact aceast operaie
aritmetic de adunare, prin reprezentarea fiecrui bit a fiecrui numr prin intermediul unui semnal de tensiune.
Acest principiu reprezint baza efecturii tuturor operaiilor aritmetice realizate de calculatoarele moderne.
2.3 Numere binare negative
2.3.1 Operaia de scdere prin adunare
Operaia de scdere se poate realiza asemntor cu cea de adunare prin considerarea unuia dintre numere ca
fiind negativ. De exemplu, operaia de scdere 7 - 5 este aceiai cu cea de adunare 7 + (-5), adic, adunarea
unui numr pozitiv cu un numr negativ. Din moment ce tim deja cum se realizeaz reprezentarea numerelor
pozitive sub form binar, tot ceea ce trebuie s facem este s reprezentm i numerele negative sub form binar.
De aici va rezulta direct operaia de scdere.
http://www.circuiteelectrice.ro/
-
www.circuiteelectrice.ro Electronic digital Aritmetica binar
8
Un numr zecimal negativ se reprezint de obicei prin introducerea semnului minus(-) la stnga, la fel ca n
exemplul de sus (-5). Totui, scopul notaiei binare este realizarea circuitelor tip pornit/oprit pentru reprezentarea
valorilor sub forma cderilor de tensiune (dou valori alternative: nalt i joas). n aceast situaie, nu ne
putem permite s introducem un al treilea simbol, precum semnul minus, din moment ce aceste circuite au doar
dou stri posibile, pornit sau oprit.
2.3.2 Bit-ul de semn
O soluie o reprezint utilizarea unui bit (circuit) doar pentru reprezentarea acestui semn matematic i
pentru nimic altceva:
Utiliznd un bit adiional (0 = pozitiv, 1 = negativ):
Dar, n aceast situaie n care folosim bii pentru alt scop dect pentru reprezentarea valorilor, trebuie s
fim foarte ateni, altfel, riscm ca numrul 11012 s fie interpretat ca fiind 1310 n loc de -510. Pentru a nu crea
astfel de confuzii, trebuie s ne decidem n primul rnd de ci bii avem nevoie pentru a reprezenta cel mai mare
numr posibil cu care vom lucra n aplicaia noastr. Ne putem apoi asigura c nu vom depi aceast lungime (n
bii) atunci cnd aplicm operaiile 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 numr negativ cu un numr pozitiv, mai mare.
Pe ct de simpl pare aceast abordare, ea nu este foarte practic din punct de vedere al aritmeticii. De
exemplu, cum efectum adunarea unui numr negativ (11012
2.3.3 Reprezentarea n complement fa de doi
) cu un oricare alt numr, folosind tehnica standard al
adunrii binare? Ar trebui s inventm o nou metod de realizare a adunrii pentru ca aceast tehnic s fie
practic. Dar, dac realizm acest lucru, nu vom mai avea avantajul utilizrii numerelor negative pentru realizarea
scderii prin adunare obinuit.
http://www.circuiteelectrice.ro/
-
www.circuiteelectrice.ro Electronic digital Aritmetica binar
9
Din fericire, exist o alt metod pentru reprezentarea numerelor negative ce este compatibil cu operaia
de adunare obinuit, i anume, complementarea. Cu aceast strategie, bit-ul din stnga primete un statut special,
asemenea bit-ului de semn din exemplul precedent. Totui, de aceast dat, bit-ul din stnga nu este doar un bit de
semn, ci posed i o valoare. De exemplu, -5 este reprezentat astfel:
Utiliznd cei trei bii din dreapta pentru reprezentarea valorilor de la zero la apte, bit-ul din stnga
reprezentnd fie zero fie -8, putem reprezenta orice numr ntreg de la -7 (10012 = -810 + 110 = -710
0 = 0 0 0 01 = 0 0 0 1 -1 = 1 1 1 12 = 0 0 1 0 -2 = 1 1 1 03 = 0 0 1 1 -3 = 1 1 0 14 = 0 1 0 0 -4 = 1 1 0 05 = 0 1 0 1 -5 = 1 0 1 16 = 0 1 1 0 -6 = 1 0 1 07 = 0 1 1 1 -7 = 1 0 0 1
-8 = 1 0 0 0
) la +7 (01112 =
010 + 710 = 710).
Reprezentarea numerelor pozitive utiliznd aceast notaie nu este diferit fa de notaia normal (bit-ul
din stnga va fi tot timpul zero). Totui, reprezentarea numerelor negative nu este chiar aa de intuitiv.
Observm c numerele binare negative din coloana dreapt, fiind suma celor trei bii din dreapta plus bitul
negativ din dreapta, egal cu minus opt, nu se numr n aceiai ordine precum numerele binare pozitive din
coloana stng. n schimb, cei trei bii trebuie adui la forma necesar, astfel nct, dup adunarea cu minus opt s
se obin rezultatul negativ dorit.
Spunem c cei trei bii din dreapta sunt o reprezentare n complement fa de doi al numrului pozitiv
corespunztor. S facem o comparaie:
http://www.circuiteelectrice.ro/
-
www.circuiteelectrice.ro Electronic digital Aritmetica binar
10
numr pozitiv complementul fa de doi0 0 1 1 1 10 1 0 1 1 00 1 1 1 0 11 0 0 1 0 01 0 1 0 1 11 1 0 0 1 01 1 1 0 0 1
2.3.4 Obinerea numrului n complement fa de doi
n acest caz (bit-ul al patrulea are valoarea de minus opt), reprezentarea n complement fa de doi a
oricrui numr pozitiv este valoarea necesar nsumri cu minus opt pentru a rezulta aceiai valoare, dar cu semn
schimbat. Din fericire, exist o cale uoar de calcul al complementului, pentru oricare numr binar: inversm toi
biii acelui numr, schimbnd 1 cu 0 i invers. Ajungem astfel la reprezentarea n complement fa de unu a
numrului. Pentru soluia dorit de noi, mai trebuie s adugm un unu.
De exemplu, pentru obinerea complementului lui cinci (1012), inversm toi biii i obinem
0102(complement fa de unu), apoi adugm un unu i obinem 0112, sau -510 n complement fa de doi.
Este interesant de menionat faptul c, obinerea complementului fa de doi a unui numr binar
funcioneaz la fel de bine i dac aplicm inversarea tuturor biilor, inclusiv bit-ului din stnga. S lum exemplul
precedent, inversarea lui 5 n -5, dar aplicnd operaia de inversare tuturor biilor. Trebuie s includem ns i bit-ul
din stnga numrului iniial (01012). Dup inversarea tuturor biilor, obinem complementul faa de unu (10102).
Apoi, adugm un unu pentru obinerea rspunsului final: 10112, sau -510
2.4 Scderea binar
n complement fa de doi, exprimat cu
patru bii.
Scderea numerelor binare se realizeaz prin adunarea binar a unui numr pozitiv i a unui numr negativ
2.4.1 Numere negative sub form binar
Putem realiza operaia de scdere binar utiliznd aceleai metode standard mprumutate de la scderea
zecimal. Totui, dac putem utiliza metoda deja cunoscut (i mai uoar) a adunrii binare pentru efectuarea
http://www.circuiteelectrice.ro/
-
www.circuiteelectrice.ro Electronic digital Aritmetica binar
11
scderii, ne va fi mai uor. Dup cum am vzut, putem reprezenta numerele binare negative utiliznd reprezentarea
n complement fa de doi plus un bit adiional cu o valoare negativ. S considerm un exemplu:
Tot ce trebuie s facem este s reprezentm numrul 7 i -5 sub form binar:
Nu ne mai rmne dect s efectum adunarea binar:
1 1 1 10 1 1 1
+ 1 0 1 11 1 1 1 0
Prin urmare, rspunsul cutat este:
Din moment ce am definit numrul nostru ca fiind compus din trei bii plus bitul cu valoare negativ, putem
ignora al cincilea bit din rspuns (1), iar rezultatul final este 00102
2.4.2 nlturarea bit-ului suplimentar
, sau +2, ceea ce reprezint rspunsul corect.
O alt modalitate de a nelege de ce nlturm al cincilea bit, este s inem minte c bit-ul din stnga are o
valoare negativ, egal cu minus opt n cazul de fa. Atunci cnd adunm aceste dou numere binare, realizm de
fapt o scdere a biilor. n cazul operaiei de scdere, cifrele nu sunt duse mai departe spre urmtoarea operaie, ci
sunt mprumutate.
2.4.3 Alte exemple
S considerm un alt exemplu, cu numere mai mari de data aceasta. Dac vrem s adunm -2510 cu 1810,
trebuie s stabilim n primul rnd numrul de bii pe care numrul nostru l va conine n reprezentarea binar.
http://www.circuiteelectrice.ro/http://www.circuiteelectrice.ro/electronica-digitala/aritmetica-binara/numere-negative/#complement
-
www.circuiteelectrice.ro Electronic digital Aritmetica binar
12
Pentru a putea reprezenta cea mai mare valoare absolut posibil n acest caz, 25, avem nevoie de cel puin cinci
bii, plus un al aselea bit pentru valoarea negativ. S ncepem prin a reprezenta numrul 25 sub form binar, i
apoi sub forma complementului fa de doi:
Mai exact, -25 sub form binar este de fapt suma dintre bit-ul negativ de pe poziia a asea cu valoarea de
-32 i ceilali cinci bii (001112 = 710
1 11 0 0 1 1 1
+ 0 1 0 0 1 01 1 1 1 1 1
).
S reprezentm acum i numrul 17 sub form binar, folosind toi cei ase bii:
Adunarea lor ne conduce la urmtorul rezultat:
n acest caz nu avem un surplus de bii dup adunare, prin urmare, nu trebuie s scpm de niciunul din
ei. Bitul din stnga este 1, ceea ce nseamn c rspunsul, n complement fa de doi, este negativ (ceea ce este
corect). Pentru verificare, putem realiza conversia napoi n forma zecimal prin nsumarea produsului tuturor
biilor cu valorile lor respective, astfel:
Rspunsul obinut este corect:
2.5 Depirea binar
http://www.circuiteelectrice.ro/
-
www.circuiteelectrice.ro Electronic digital Aritmetica binar
13
2.5.1 Depirea valorii maxime
Una din problemele numerelor binare cu semn, este bit-ului de depire. Acesta apare n cazul n care
rezultatul adunrii sau scderii efectuate ntre dou numere binare este mai mare dect valoarea maxim ce poate fi
reprezentat cu numrul de bii alocai. inei minte c poziia bit-ului de semn este fixat la nceputul problemei.
n exemplul precedent, am utilizat cinci bii pentru reprezentarea unui numr, iar bit-ul din stnga a fost utilizat pe
post de bit de semn, cu pondere negativ. Cu cinci bii rmai pentru reprezentarea valorilor, cel mai mare numr
ce-l putem scrie astfel este +3110(0111112), iar cel mai mic -3210(1000002). Dac aplicm o operaie de adunare
unor astfel de numere, iar rezultatul este mai mare dect 3110 sau mai mic dect -3210
2.5.2 Adunarea a dou numere binare
, rspunsul obinut nu va fi
corect.
S lum un exemplu:
Adugnd bit-ul de semn, adunarea celor dou numere arat astfel:
1 1 10 1 0 0 0 1
+ 0 1 0 0 1 11 0 0 1 0 0
Rspunsul (1001002) este egal cu -2810, nu cu +3610, aa cum ar trebui s obinem adunnd +1710 cu +1910.
Evident, acest rspuns nu este corect. Dar unde am greit? Din moment ce valoarea real a sumei (3610
2.5.3 Scderea a dou numere binare
) depete
limita permis de cei cinci bii (plus bit-ul de semn), ajungem la o eroare de depire binar.
O eroare similar obinem i n cazul adunrii a dou numere negative (scdere binar) a crei sum este
mai mic dect -3210:
http://www.circuiteelectrice.ro/http://www.circuiteelectrice.ro/electronica-digitala/aritmetica-binara/scaderea
-
www.circuiteelectrice.ro Electronic digital Aritmetica binar
14
Aplicnd operaia de adunare celor dou numere, obinem:
1 1 1 1 11 0 1 1 1 1
+ 1 0 1 1 0 11 0 1 1 1 0 0
Dup nlturarea bit-ului n plus, rezultatul final este:
Acest rspuns este, desigur, incorect.
2.5.4 Adugarea unui bit suplimentar
S reconsiderm cele dou exemple de mai sus, dar de aceast dat utiliznd ase bii pentru reprezentarea
numrului. Al aptelea bit va fi bit-ul de semn:
1 7 + 1 9 - 1 7 + ( - 1 9 )
1 1 1 1 1 1 1 1 10 0 1 0 0 0 1 1 1 0 1 1 1 1
+ 0 0 1 0 0 1 1 + 1 1 0 1 1 0 10 1 0 0 1 0 0 1 1 0 1 1 1 0 0
Utiliznd un numr suficient de bii pentru reprezentarea rezultatelor, rspunsurile sunt corecte.
n aceste exemple am putut determina erorile de depire prin realizarea de mn a operaiilor de adunare
sub form zecimal. Aceast metod de verificare nu este ns foarte eficient. Pn la urm, ntregul scop al
complementrii este realizarea adunrii sub form binar. Acest lucru este valabil mai ales n cazul proiectrii
circuitelor electronice: circuitul trebuie s poat sesiza singur existena unei erori de depire, fr ajutor uman.
2.5.5 Verificarea erorilor
http://www.circuiteelectrice.ro/
-
www.circuiteelectrice.ro Electronic digital Aritmetica binar
15
Cea mai elegant metod de rezolvare a acestei situaii const n verificarea semnului sumei i
compararea acestuia cu semnele numerelor nsumate. Desigur, rezultatul sumei a dou numere pozitive este un
numr pozitiv, iar suma a dou numere negative, este un numr negativ. Putem observa c, de fiecare dat cnd
avem o situaie de depire, 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
2.6 Grupri de bii
. Prin simpla verificare a semnelor, putem s ne dm seama c
exista o eroare iar rezultatul este fals.
Ce se ntmpl n cazul n care unul din numere este pozitiv iar cellalt negativ? Care ar trebui s fie
semnul sumei? Rspunsul este simplu: atunci cnd numerele nsumate sunt de semne diferite, nu va exista niciodat
o eroare de depire. Motivul este la fel de simplu: depirea are loc atunci cnd valoarea unui numr este mai mare
dect cea permis de numrul de bii utilizai. 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 dect limita maxim permis de
numrul de bii.
Din fericire, aceast metod de identificare a erorii de depire este uor de implementat ntr-un circuit
electronic.
2.6.1 Numrul de bii necesar
La reprezentarea numerelor binare cu ajutorul circuitelor electronice, suntem nevoii s utilizm un numr
suficient de circuite cu tranzistori pentru reprezentarea tuturor biilor. Cu alte cuvinte, la proiectarea unui circuit
digital, trebuie s ne decidem ci bii vom utiliza (maxim) pentru reprezentarea valorilor, din moment ce fiecare bit
necesit un circuit pornit/oprit separat.
http://www.circuiteelectrice.ro/http://www.circuiteelectrice.ro/electronica-analogica/tranzistorul/introducere
-
www.circuiteelectrice.ro Electronic digital Aritmetica binar
16
Fig. 2-1 abac
Acest principiu este analog proiectrii unui abac pentru reprezentarea digital a numerelor zecimale: trebuie
mai nti s ne decidem cte cifre dorim s reprezentm cu acest dispozitiv primitiv. Fiecare cifr necesit o nou
linie de mrgele.
Un abac cu 10 linii poate reprezenta un numr zecimal cu 10 cifre, sau o valoare maxim de 9.999.999.999.
Dac am dori reprezentarea unui numr mai mare dect att, va trebui s ma adugm una sau mai multe linii.
2.6.2 Numrul de bii
Orice circuit digital se proiecteaz pe un anumit numr de bii: numrul maxim de bii alocai pentru
reprezentarea valorilor numerice. Calculatoarele digitale iniiale erau proiectate pe patru sau pe opt bii. Sistemele
moderne sunt proiectate pe 32 sau pe 64 de bii.
Pentru a vorbi mai uor de numrul de bii dintr-o grupare, cele mai uzuale au primit i un nume, astfel:
Bit: unitatea fundamental a notaiei binare; echivalent cu o cifr zecimal
Crumb, Tydbit sau Tayste: 2 bii
Nibble sau Nybble: 4 bii
Nickle: 5 bii
Byte: 8 bii
Deckle: 10 bii
Playte: 16 bii
Dynner: 32 bii
Word: (n funcie de sistem)
http://www.circuiteelectrice.ro/
-
www.circuiteelectrice.ro Electronic digital Aritmetica binar
17
Cel mai ambiguu termen este word-ul. Pentru un sistem pe 32 de bii, un word nseamn 32 de bii. Dac
sistemul utilizeaz 16 bii, atunci word-ul este de 16 bii. Termenul playte i dynner se refer tot timpul la 16,
respectiv 32 de bii, indiferent de contextul n care sunt folosii.
Tot n funcie de sistem sunt folosii i termenii de double word sau longword (ambii termenii
desemnnd o lungime dubl fa de lungimea standard), half-word (jumtatea lungimii) sau quad (de patru ori
lungimea standard).
http://www.circuiteelectrice.ro/