4.2-Aritmetica-binara.pdf

12
www.circuiteelectrice.ro Electronică digitală Aritmetica binară 6 2 Aritmetică binară 2.1 Valori şi sisteme de numeraţie 2.1.1 Invariabilitatea valorilor Este foarte important să înţelegem că sistemul de numeraţie ales pentru reprezentarea valorilor (numerelor) nu are absolut niciun impact asupra rezultatului aplicării operaţiilor aritmetice de adunare, scădere, înmulţire, împărţire, rădăcini, puteri sau algoritmi. O valoare este tot timpul aceiaşi, indiferent de modul în care alegem să o simbolizăm. Fie că reprezentăm temperatura de 35 o 2.2 Adunarea binară sub această formă (zecimală) sau sub forma 100011 (binară), aceasta nu schimbă valoarea reală a temperaturii ce o resimţim. Ea rămâne aceiaşi, ceea ce se modifică este modul de reprezentare a acesteia.Operaţiile esenţiale şi legăturile matematice nu sunt afectate de modificarea sistemului de numeraţie pentru reprezentarea valorilor. Această distincţie între valori şi sisteme de numeraţie este foarte importantă şi trebuie înţeleasă. Această distincţie esenţială dintre cei doi termeni este asemănătoare distincţiei dintre cuvinte şi obiectele asociate acestor cuvinte. O casă este tot o casă, indiferent de limba pe care o folosim pentru desemnarea acesteia (română, engleză, germană, etc.). Obiectul este ceva real, palpabil, pe când cuvântul este doar un simbol pentru reprezentarea acelui obiect. Acestea fiind spuse, o simplă operaţie de aritmetică sub formă binară, precum adunarea, pare ciudată pentru o persoană obişnuită să lucreze doar cu sistemul de numeraţie zecimal. În acest capitol vom analiza tehnicile folosite pentru efectuarea operaţiilor aritmetice simple cu numere binare. Aceste tehnici vor fi folosite pentru proiectarea circuitelor electronice care să realizeze exact acelaşi lucru. Chiar dacă suntem obişnuiţi cu operaţiile de adunare şi scădere folosind un calculator de mână, calculatorul foloseşte numerele binare pentru obţinerea rezultatului final.

Transcript of 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/