Sunteți pe pagina 1din 9

Reprezentarea binară a informației numerice

Informația numerică se regăsește în calculatoare reprezentată:

 în virgulă fixă (VF)


1. cod direct - CD
2. cod invers - CI
3. cod complementar - CC
 în virgulă mobilă (VM)
 prin coduri numerice (cel mai utilizat codul 8421)

A. În virgulă fixă[1]

Pentru reprezentarea numerelor reale in virgula fixa se foloseste bitul cel mai
semnificativ ca bit de semn. Modulul partii intregi si partea fractionara au un numar
prefixat de biti pe care se reprezinta si se aplica urmatoarele reguli:

 alinierea in locatia de memorie se face la virgula virtuala;


 daca valoarea partii intregi este mai mica decat valoarea maxima ce poate fi
reprezentata pe bitii alocati partii intregi se adauga la stanga zerouri
suplimentare;
 daca valoarea partii intregi este mai mare decat valoarea maxima ce poate fi
reprezentata pe bitii alocati partii intregi se pierd cifrele cele mai
semnificative.
 daca valoarea partii fractionare este mai mica decat valoarea maxima ce poate
fi reprezentata pe bitii alocati partii fractionare se adauga la dreapta zerouri
nesemnificative;
 daca valoarea partii fractionare este mai mare decat valoarea maxima ce poate
fi reprezentata pe bitii alocati partii fractionare se pierd cifrele cele mai
nesemnificative.

a) Reprezentarea prin mărime și semn (cod direct - CD)

Un numar reprezentat prin marime si semn se poate scrie conform relatiei:

,
an este bit de semn, iar ai e {0, 1} pentru i = -m, (n-1) și au fost obținute în urma

conversiei numărului N în sistemul de numerație binar.

Macheta de reprezentare a numărului N este:

b) Reprezentarea prin complement față de 1 (cod invers - CI)

Un număr reprezentat în cod invers se poate scrie:

ai = 1 - ai pentru i = -m, (n-1), iar ai reprezintă cifrele binare ale numărului |N|.

Reprezentarea prin complement față de 1 se obține astfel:

Fie calculând:

, |N|CD este reprezentarea în cod direct a valorii absolute a numărului N.

Fie prin inversarea cifrelor binare din reprezentarea direct a numărului în


valoare absolută.

c) Reprezentarea prin complement față de 2 (cod complementar - CC)


Forma de scriere in cod complementar este:

unde

Codul complementar al unui număr se poate scrie astfel:

Fie calculând:

N =CC 2m+1 - |N|CD

Fie adunând la cifra cea mai puțin semnificativă (CMMPS) a reprezentării


numărului în CI.

Daca se considera reprezentarea in CD a numarului in valoare absoluta, pentru


obtinerea codului complementar, incepand de la CCMPS – se lasa neschimbate toate
cifrele de zero, inclusiv prima cifra binara a carei valoare este 1; apoi toate celelalte
cifre binare se vor inversa, inclusiv cifra de semn.

Programul pentru reprezentarea unui număr în virgulă fixă


Programul a fost realizat în limbajul de programare C++, folosind CMake, codul sursă
și explicațiile pot fi observate în imaginile de mai jos:
Rezultatul rulării programului:
B. Reprezentarea în virgula mobilă[2]

În tehnologia informației, virgula mobilă (în engleză floating point) este unul
din sistemele folosite pentru reprezentarea numerelor raționale ca șiruri de biți.
Termenul de virgulă mobilă se referă la faptul că virgula care separă partea întreagă
de cea fracționară se poate deplasa, adică poate fi plasată oriunde relativ la cifrele
semnificative ale numărului. Poziția virgulei este indicată separat în cadrul
reprezentării interne. Astfel, reprezentarea în virgulă mobilă poate fi considerată o
adaptare la calculator a notației științifice. De-a lungul timpului, au fost folosite
diverse reprezentări în virgulă mobilă. Astăzi, cea mai des întâlnită modalitate de
reprezentare a numerelor în virgulă mobilă este cea definită de standardul IEEE 754-
1985.

Avantajul reprezentării în virgulă mobilă față de cea în virgulă fixă este gama
mai largă de valori reprezentate. Dacă în virgulă fixă se pot reprezenta numere cu un
număr fix de cifre de o parte și de alta a virgulei, virgula mobilă permite sacrificarea
preciziei (numărului de cifre fracționare cunoscut) pentru reprezentarea unor numere
mai mari, și invers, reprezentarea mai precisă a numerelor mici. De exemplu,
presupunând că într-o reprezentare în virgulă fixă numărul de cifre ale părții întregi
este 6 și cel de cifre fracționare este 2, se pot reprezenta valori ca 123.456,75 sau
984,57, pe când în virgulă mobilă pot fi reprezentate la fel de bine numere ca
1,2345678 sau 1.234.567,8.

Viteza cu care un calculator efectuează calcule în virgulă mobilă este o măsură


a performanței în multe domenii de aplicații. Aceasta se măsoară în megaFLOPS
(milioane de operațiuni în virgulă mobilă pe secundă) sau gigaFLOPS. Performanțele
supercalculatoarelor de la nivelul anului 2008 sunt de ordinul teraFLOPS sau
petaFLOPS. Supercalculatorul IBM Roadrunner a atins 1,026 petaFLOPS, adică
1,026 milioane de miliarde de operațiuni în virgulă mobilă pe secundă.

În această reprezentare, numerele au următoarea structură:

(-1)semn * 1.mantisa * (baza)exponent


După cum putem observa mai sus, valorile trebuie transformate astfel încât
partea întreagă să fie 1. Această formă poartă numele de formă normală, iar operația
de transformare în această formă poartă numele de normalizare.
În formă binară, valorile se reprezintă astfel:

Semnul este dat de primul bit din reprezentarea binară: 1 = negativ, 0 =


pozitiv.

Mantisa dă partea fracționară a numărului în forma normală. Numărul de biți


pe care mantisa este reprezentată dă precizia maximă a reprezentării.

Baza este de obicei 2, 10 sau 16 și este dată de standardul de reprezentare ales.

Exponentul dă valoarea la care este ridicată baza și numărul de biți pe care


este reprezentat dă valorile valorile maxime și minime ce pot fi reprezentate.

Standarde de reprezentare în virgulă mobilă

Cele mai folosite standarde de reprezentare în virgulă mobilă sunt cu precizie


simplă (Single Precision) și cu precizie dublă (Double Precision).

Reprezentarea cu precizie simplă presupune folosirea a 32 de biți și


corespunde valorilor float din limbajul C. În acest caz baza folosită este 2, exponentul
are 8 biți, iar restul de 23 de biți corespund mantisei.

Reprezentarea cu precizie dublă presupune folosirea a 64 de biți și corespunde


valorilor de tip double. În acest caz, baza este 2, exponentul are 11 biți, iar restul de
52 de biți corespund mantisei.

Programul pentru reprezentarea unui număr în virgulă mobilă

Programul a fost realizat în limbajul de programare C++, folosind CMake, codul sursă
și explicațiile pot fi observate în imaginea de mai jos:
Rezultatul rulării programului:
Bibliografie

[1] - https://www.creeaza.com/referate/informatica/REPREZENTAREA-IN-
VIRGULA-FIXA-234.php

[2] - https://ro.wikipedia.org/wiki/Virgul%C4%83_mobil%C4%83

[2] - http://elf.cs.pub.ro/asm/wiki/laboratoare/laborator-12

S-ar putea să vă placă și