Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » scoala » informatica
Operatii aritmetice in binar

Operatii aritmetice in binar


Operatii aritmetice in binar

Adunarea in binar

Cele patru reguli ale adunarii binare sunt urmatoarele:

0 + 0 = 0 (Suma 0 si transport 0)

0 + 1 = 1 (Suma 1 si transport 0)

1 + 0 = 1 (Suma 1 si transport 0)

1 + 1 = 10 (Suma 0 si transport 1)



Rezultatul primelor trei reguli este pe un singur bit in timp ce a patra regula are un rezultat pe doi biti. Pentru a aduna doua numere A = 011 si B = 001 se procedeaza astfel:

Transport

A

B

Rezultat

In coloana din dreapta 1+1=0 si transport 1 pentru coloana a doua, deci pe coloana a doua, 1+1+0=0 cu transport 1 pentru coloana treia. In coloana din stanga 1+0+0=1.

Pentru cazul in care transportul este unu se aduna trei biti (cate un bit a fiecarui numar si bitul de transport), dupa cum se prezinta in continuare:

+ 0 + 0 = 01 (Suma 1 si transport 0)

+ 1 + 0 = 10 (Suma 0 si transport 1)

+ 0 + 1 = 10 (Suma 0 si transport 1)

+ 1 + 1 = 11 (Suma 1 si transport 1)

Scaderea in binar

Principalele patru reguli ale scaderii in binar sunt:

0 - 1 = 1 , (1 cu imprumut 1)

Cand se fac scaderi, uneori, poate aparea necesitatea unui imprumut din coloana urmatoare din stanga. In binar apare necesitatea unui imprumut numai cand se scade 1 din 0. In acest caz se imprumuta din coloana din stanga. Exemplu:

10102

11002

Inmultirea in binar

Inmultirea a doua cifre in baza 2 se defineste in felul urmator:

0 x 0 = 0

0 x 1 = 0

1 x 0 = 0

1 x 1 = 1

Inmultirea in binar se face in acelasi mod ca si in cazul numerelor zecimale. Se formeaza produse partiale care se deplaseaza la stanga cu o pozitie si apoi se insumeaza aceste produse partiale, dupa cum se prezinta in exemplul urmator:

25,510 = 11001,1002 x

13,2510 = 01101,0102


Impartirea in binar

Impartirea a doua numere nu are sens daca impartitorul este egal cu zero. Impartirea a doua cifre binare este simpla 0:1 = 0; 1:1 = 1.

Exemplu:

42310 : 2110 = 2010 rest 3

42310 = 1101001112

2110 = 101012

10101

10100 = 2010

------- 11 = 310

Complementul fata de 1 si complementul fata de 2 a numerelor binare

Complementul fata de 1 a unui numar binar se obtine prin schimbarea lui 0 in 1 si a lui 1 in 0, dupa cum se prezinta in continuare:

Numar binar: 00110101

Complementul fata de 1: 11001010

Complementul fata de 1 al unui numar binar se obtine foarte simplu utilizand circuite inversoare (NOT) asa cum se prezinta in figura 2.1.

Figura 2.1. Circuit pentru obtinerea complementului fata de 1al unui numar binar

Pentru conversia inversa din complement fata de 1 la valoarea adevarata (necomplementata) se procedeaza in acelasi mod, adica se inverseaza toti bitii.

Complementul fata de 2 al unui numar binar se obtine adaugand un 1 la cel mai putin semnificativ bit al complementului fata de 1 al acelui numar.

Exemplu:

Numar binar

Complementul fata de 1

1

Complementul fata de 2

Complementul fata de 2 al unui numar negativ binar se obtine utilizand circuite inversoare (NOT) si un sumator asa cum se prezinta in figura 2.2.

Figura 2.1. Circuit pentru obtinerea complementului fata de 2 al unui numar binar

Reprezentarea numerelor cu semn. Operatii aritmetice

Bitul de semn este bitul aflat in pozitia cea mai din stanga intr-un numar binar cu semn si indica daca numarul este pozitiv sau negativ.

0 este pentru numere pozitive, si 1 pentru numere negative.

Numerele cu semn se pot reprezenta prin 3 forme: in semn - marime, in complement fata de 1 si in complement fata de 2. Exista si alte forme de reprezentare cum ar fi complement fata de 10, complement fata de 9, etc. Primele trei forme au o utilizare mai larga, generala, spre deosebire de celelalte care se folosesc in calculatoare specializate pentru un anumit tip de calcule si aplicatii. Utilizarea mai multor forme de reprezentare isi are motivatia in simplitatea efectuarii anumitor calcule si conversii de reprezentare, asa cum vom vedea in continuare.

Reprezentarea numerelor in semn - marime

Consideram reprezentarea numarului pe n+1 biti. Primul bit din stanga reprezinta semnul numarului, ceilalti n biti contin marimea numarului egala cu reprezentarea binara a valorii absolute |N|.

Semn

Marime

1 bit

n biti

Exemplu:

n = 5 2510 = 0 11001, S = 0, M = 11001

-25 = 1 11001, S = 1, M = 11001

In reprezentarea semn-marime un numar negativ are aceeasi reprezentare a marimii ca si numarul pozitiv corespondent dar bitul de semn este 1 in loc de zero.

Reprezentarea numerelor reale cu semn este asemanatoare reprezentarii numerelor intregi. Conditia care se pune este utilizarea unui numar n1 de biti pentru partea intreaga si n2 pentru partea fractionara. Se impune astfel o pozitie fixa pentru virgula binara. Acest tip de reprezentare se numeste reprezentare cu virgula fixa, spre deosebire de reprezentarea cu virgula mobila, care va fi prezentata ulterior.

Formatul de reprezentare :

S

Marime partea intreaga

Marime partea fractionara

n1

n2

Exemplu:

r = 45,3437510= 0 101101,01011

Utilizam 1 bit pentru semn, partea intreaga n1 = 6 biti, 1 bit pentru virgula binara, partea fractionara n2 = 5 biti.

Reprezentarea numerelor cu semn in complement fata de 1

Pentru numere pozitive reprezentarea in complement fata de 1 este identica cu reprezentarea in semn - marime. In cazul numerelor negative acestea se reprezinta prin complementul fata de 1 a numarului pozitiv corespondent. De exemplu utilizand 8 biti numarul zecimal - 53 se reprezinta ca si complementul fata de 1 a lui + 5310 (= 001101012), adica 11001010.

In complementul fata de 1 un numar negativ se reprezinta prin complementul fata de 1 a numarului pozitiv corespondent.

Reprezentarea numerelor cu semn in complement fata de 2

Pentru numere pozitive reprezentarea in complement fata de 2 este identica cu reprezentarea in semn - marime si cu reprezentarea in complement fata de 1. Numerele negative se reprezinta prin complementul fata de 2 a numarului pozitiv corespondent. Ca si in exemplul de mai sus, utilizand 8 biti, reprezentarea numarului zecimal - 53 se face ca si complementul fata de 2 a lui + 5310 (= 001101012), adica 11001011.

In complementul fata de 2 un numar negativ se reprezinta prin complementul fata de 2 a numarului pozitiv corespondent.

Valoarea zecimala a numerelor cu semn

Semn-marime. Valoarea zecimala a numerelor pozitive si negative in reprezentarea semn-marime se determina prin insumarea ponderilor binare a pozitiilor bitilor care reprezinta marimea si care au valoarea 1, si ignorand pe cei ce sunt 0. Semnul se determina examinand bitul de semn.

Exemplu: Sa se determine valoarea zecimala a numarului binar cu semn, reprezentat in sistemul semn-marime: 10010101.

Solutie:

Semn

Rezultat

Complement fata de 1. Valoarea zecimala a numerelor pozitive in reprezentarea complement fata de 1 se determina prin insumarea ponderilor bitilor din reprezentarea marimii care au valoarea 1, si ignorand pe cei ce sunt 0. Valoarea zecimala a numerelor negative in aceasta reprezentare se determina prin atribuirea unei ponderi negative ponderii bitului de semn, insumarea ponderilor bitilor care sunt 1, si adaugarea unui 1 la rezultat.

Exemplu: Sa se determine valoarea zecimala a numarului binar cu semn, reprezentat in complement fata de 1: a) 00010111 si b) 11101000

Solutie. a)

Semn

Rezultat

b)

Semn

Rezultat

Adaugand un 1 la rezultat obtinem: -24 + 1 = -23

Complement fata de 2. Valoarea zecimala a numerelor pozitive si negative in reprezentate in complement fata de 2 se determina prin insumarea ponderilor bitilor care au valoarea 1, si ignorand pe cei ce sunt 0. Ponderea bitului de semn pentru un numar negativ se ia cu valoare negativa.

Exemplu: Sa se determine valoarea zecimala a numarului binar cu semn, reprezentat in complement fata de 2: a) 01010110 si b) 10101010

Solutie. a)

Semn

Rezultat

b)

Semn

Rezultat

Se poate deduce din exemplele de mai sus de ce este preferata utilizarea complementului fata de 2 pentru reprezentarea numerelor binare cu semn. Pentru conversia in binar este necesara doar o insumare ponderata indiferent daca numarul este pozitiv sau negativ. La reprezentarea semn marime este nevoie de doi pasi pentru determinarea valorii zecimale, si anume, insumarea ponderilor bitilor ce prezinta marimea urmata de analiza bitului de semn pentru a determina daca numarul este pozitiv sau negativ. Reprezentarea in complement fata de 1 necesita adaugarea unui 1 la rezultatul insumarii ponderilor pentru numerele negative dar nu si pentru cele pozitive. De asemenea reprezentarea in complement fata de 1 nu este in general folosita deoarece pentru ca sunt posibile doua reprezentari ale lui zero (00000000 11111111).

Domeniul numerelor intregi cu semn ce pot fi reprezentate

In exemplele de mai sus s-au utilizat numere pe 8 biti deoarece gruparea pe opt biti este foarte uzuala in majoritatea calculatoarelor si acest grup poarta numele de octet sau byte. Folosind 8 biti se pot reprezenta 256 numere diferite. Cu ajutorul a doi octeti, deci 16 biti, se pot reprezenta 65536 numere diferite. Numarul total de combinatii diferite cu n biti este 2n.

La reprezentarea numerelor binare cu semn in complement fata de 2, domeniul valorilor posibile pentru un numar reprezentat pe n biti este:

-(2n-1) la + (2n-1 - 1)

unde 1 bit este de semn si n-1 biti reprezinta marimea. De exemplu cu 4 biti se pot reprezenta numere in domeniul -(23)= - 8 la (23) - 1=7. In mod analog cu 8 biti se pot reprezenta numere intre -128 si +127, s.a.m.d.

Reprezentarea in virgula flotanta

Pentru reprezentarea numerelor foarte mari este nevoie de foarte multi biti. De asemenea apar probleme la reprezentarea numerelor care au atat parte intreaga cat si fractionara. Reprezentarea in virgula flotanta, bazata pe notatia stiintifica este capabila sa reprezinte numere foarte mari si foarte mici fara cresterea numarului de biti si de asemenea poate reprezenta numere care au atat parte intreaga cat si fractionara.

Un numar in virgula flotanta (cunoscut si sub numele de numar real) se compune din doua parti plus semnul. Mantisa reprezinta marimea numarului, iar exponentul reprezinta numarul de locuri cu care trebuie mutata virgula zecimala (sau binara). Un exemplu de exprimare in virgula flotanta a unui numar zecimal va permite o mai usoara intelegere:

Sa consideram numarul intreg 123456789. Mantisa este ,123456789 iar exponentul 9. Cand se reprezinta un numar intreg in virgula flotanta el se normalizeaza prin mutarea virgulei zecimale la stanga celui mai semnificativ digit astfel incat mantisa este un numar fractionar si exponentul o putere a lui 10. Numarul se scrie:

0,123456789 x 109

Alte exemple:

= 0,5231 x 101

0,0047 = 0,47 x 10-2

= 0,783 x 104

Pentru numerele binare reprezentate in virgula flotanta formatul este definit de standardul ANSI/IEEE 754-1985 in trei forme: simpla-precizie(32 biti), dubla-precizie (64 biti), si precizie extinsa(80 biti). Formatul simpla precizie are 1 bit pentru semn, 8 pentru exponent si 23 pentru mantisa. Formatul dubla precizie are 1 bit pentru semn, 11 biti pentru exponent si 52 biti pentru mantisa.

Reprezentarea numerelor binare in virgula flotanta simpla precizie, se poate vedea in figura urmatoare:

32 biti

S

Exponent (E)

Mantisa (F)

1 bit

8 biti

23 biti

In mantisa, virgula binara se presupune a fi la stanga celor 23 de biti. Cei 8 biti din exponent reprezinta un exponent deplasat obtinut prin adunarea la exponentul actual a numarului 127. Scopul acestei deplasari este reprezentarea numerelor foarte mari si foarte mici fara a fi nevoie de un bit de semn pentru exponent. Astfel domeniul exponentului este intre -126 si +128.

De exemplu numarul 1011010010001 poate fi exprimat ca 1 urmat de o parte fractionara prin mutarea virgulei binare cu 12 pozitii la stanga si inmultind cu puterea corespunzatoare a lui 2:

1011010010001 = 1,011010010001x212

Presupunand ca acesta este un numar pozitiv, bitul de semn (S) este 0. Exponentul, 12, se exprima in forma deplasata prin adunarea lui 127 (12+127=139). Deci exponentul deplasat (E) se exprima in binar sub forma 10001011. Mantisa este partea fractionara a numarului binar, .011010010001. Astfel numar devine:

S

E

F

Modul de evaluare a unui numar binar exprimat in virgula flotanta se va prezenta in continuare. Formula generala pentru determinarea valorii unui numar exprimat in virgula flotanta este data de:

N = (-1)S(1+F)(2E-127)

Exemplu:

Bitul de semn este 1. Exponentul deplasat este 10010001 = 145. Aplicand formula obtinem:

N = (-1)1(1,10001110001)(2145-127) = (-1)1(1,10001110001)(218) = -1100011100010000000

Numarul binar in virgula flotanta este echivalent in zecimal cu -407,688. Deoarece exponentul poate fi orice numar intre -126 si +128, pot fi reprezentate numere foarte mari si foarte mici. Un numar exprimat in virgula flotanta pe 32 biti poate inlocui un numar binar intreg pe 129 biti.

Exista doua exceptii de reprezentare, pentru numarul 0 care se reprezinta cu toti bitii 0 si infinit care se reprezinta cu toti bitii pe 1.

Exemplu: Sa se converteasca numarul zecimal 3,248 x 104 in numar binar reprezentat in virgula flotanta simpla precizie.

Solutie:

Se converteste numarul in binar:

3,248 x 104 = 32480 = 1111110111000002 = 1, 11111011100000 x 214

Cel mai semnificativ bit nu va ocupa o pozitie deoarece este intotdeauna 1. De aceea mantisa este numarul binar pe 23 biti 11111011100000000000000 si exponentul deplasat este 14+127=141=100011012

Deci forma completa a numarului este:





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.