Informatica
Reprezentarea numerelorReprezentarea numerelor1.1 IntroducereProcesele reglate contin semnale analogice, in timp ce semnalele regulatoarelor sunt numerice. In consecinta, conversia semnalelor este esentiala pentru conectarea componentelor analogice si numerice in acelasi sistem. De exemplu, semnalul de iesire al unui dispozitiv analogic trebuie convertit in semnal numeric inainte de a fi prelucrat de regulatorul numeric si convertit apoi intr-un semnal analogic cu un convertor analog - numeric CAN. In acelasi fel, semnalul de la iesirea regulatorului numeric trebuie convertit in semnal analogic inainte de afi trimis unui dispozitiv analogic cu un convertor numeric - analogic CNA. De obicei se efectueaza anumite operatii inainte de conversia analog - numerica (filtrare) si dupa conversia numeric - analogica (o netezire). Alte operatii necesare pentru conectarea echipamentelor sunt multiplexarea si esantionarea. Definitiile acestor operatii sunt urmatoarele:
Un sistem de reglare tipic este cel din Figura 1.
Figura 1 . Sistem de reglare. 1.2 Reprezentarea numerelor naturaleUn numar natural se reprezintǎ ca o colectie de cifre intr-o anumita baza. In sistemul pozitional, pozitia unei cifre determina ponderea cifrei in marimea numarului. Baza 10 In sistemul zecimal (baza 10) cifrele bazei sunt Baza 10 = Fie numarul
Un numar cu n cifre in baza 10, are valoarea
Rangul i al coeficientului ai este exponentul puterii lui 10. a0 este cifra cea mai putin semnificativa a numarului, an-1 este cifra cea semnificativa a numarului. Baza r Fie r un numar natural > 1. Cifrele bazei r sunt Baza r = Fie numarul natural
unde: r > 1 este baza, n este numarul de cifre, iar ai este cifra de pe pozitia i Marimea numarului natural corespunzator este (1) unde . Numerele naturale reprezentate cu n cifre intr-o baza r oarecare au valori cuprinse in intervalul [0 rn-1]. Baza 2 In sistemul binar, (baza 2), cifrele bazei sunt Baza 2 = Cifrele sistemului binar, 0 si 1, se numesc biti. Un numar natural se reprezinta in baza 2 cu n biti N = (an-1 an-2 . a1 a0) unde cifrele a0, a1, ., an-1 sunt 1 sau 0. Vom spune ca an-1 este bitul cel mai semnificativ, (most significant bit, MSB), iar a0 este bitul cel mai putin semnificativ, (least significant bit, LSB). Cifra ai este coeficientul lui 2i. Numarul N este deci
Exista urmatoarele notatii : 210 = 1024 = 1K 220 = 1M 230 = 1G In calculatoare, numerele intregi sunt reprezentate in baza 2. Baza 8 In sistemul octal, (baza 8), cifrele bazei sunt Baza 8 = Baza 16 In sistemul hexazecimal (baza 16), cifrele bazei sunt Baza 16 = unde: A=10, B=11, C=12, D=13, E=14 si F=15. Numarul
are valoarea
1.3 Conversia zecimal - binaraFie un numǎr natural reprezentat in sistemul binar
In partea dreapta avem un polinom de puteri ale lui 2. Coeficientul este 0 sau 1. Din expresia de mai sus a numǎrului se observǎ cǎ cifrele , etc., se pot obtine ca resturile impǎrtirilor repetate ale numarului N cu 2. Vom nota cu , , , caturile impartirilor repetate la 2 si cu , , , resturile impartirilor repetare la 2 ale numarului N. Vom nota
si vom scrie numarul N ca
unde este catul impartirii lui la 2, iar este restul impartirii lui la 2. Comparand cu expresia lui N de mai sus deducem:
adica , ultima cifra a numarului N convertit in binar, este chiar primul rest . Vom scrie catul ca
de unde deducem:
Dupǎ n astfel de operatii vom avea:
unde:
Algoritmul se opreste atunci cand . Dupa cum se observǎ, resturile obtinute reprezintǎ chiar cifrele numǎrului binar, primul rest este cifra cea mai putin semnificativa a numarului binar. Exemplu. Sǎ convertim numarul 14 din baza 10 in baza 2. Prin impartiri repetate la 2 obtinem caturile si resturile din tabelul de mai jos.
Reprezentarea numǎrului 14 in binar este:
Conversia din baza 10 in baza 8 sau 16 se face prin impǎrtiri repetate cu 8 si respectiv 16. 1.4 Conversia intre bazele 2, 8 si 16Avand un numar in baza 2, pentru reprezentarea sa in baza 16 se grupeaza cate 4 cifre binare care se convertesc intr-o cifra hexazecimala. Exemple. (1100)2 = (C )16 = (12)10
Avand un numǎr in baza 2, pentru reprezentarea in baza 8 se grupeaza cate 3 cifre binare care se convertesc intr-o cifra octala. Exemplu.
Pentru verificare
Conversia unui numar din baza 16 in baza 2 se face reprezentand fiecare cifrǎ hexazecimalǎ prin 4 cifre binare. Exemplu.
(A4)16 = (1010 0100)2 Conversia unui numǎr din baza 8 in baza 2 se face convertind fiecare cifrǎ octalǎ in 3 cifre binare. Exemplu. (63)8 = (110 011)2 1.5 Numararea binaraFie un numarator binar cu k biti. Numarul N ce se poate reprezenta este cuprins in intervalul [0 2k-1]. In consecinta, un numarator binar evolueaza dupa regula N modulo 2k, adica dupa valoarea 2k-1 urmeaza valoarea 0. De exemplu, un numarator binar cu 2 biti evolueaza astfel 00, 01, 10, 11, 00, 01, . 1.6 Reprezentarea numerelor intregiPentru a reprezenta numere cu semn, bitul cel mai semnificativ va fi bitul de semn, si va avea valoarea 0 pentru numere pozitive si 1 pentru numere negative. Exista trei reprezentǎri ale numerelor binare cu semn, in marime si semn, in complement fata de 1 si in complement fata de 2. Reprezentarea in mǎrime si semn Fie X un numar intreg. Numarul se reprezinta cu bitul de semn dupa regula de mai sus, urmat de valoarea absoluta a numarului. Un numǎr pozitiv X se reprezintǎ in marime si semn ca:
Un numǎr negativ -X se reprezintǎ in marime si semn ca:
Bitii numarului sunt aceiasi, pentru numar pozitiv sau negativ, difera doar bitul de semn. Exemple. Vom considera numere intregi reprezentate pe 8 biti in marime si semn, un bit de semn si 7 biti ai numǎrului:
Gama numerelor intregi reprezentabile pe un octet in mǎrime si semn este [-127, 127]. Putem scrie formula de reprezentare a numerelor binare in mǎrime si semn ca:
unde coeficientul are valoarea 0 sau 1. Primul bit va fi interpretat ca si coeficientul lui . Reprezentarea in marime si semn este rar folosita in calculatoare. Reprezentarea in complement fatǎ de 1 Fie N un numar natural reprezentat in baza r si fie cifrele numarului. Complementul unei cifre a numarului in baza r - 1 este r - 1 - Reamintim ca cifrele bazei r sunt . Numarul N este reprezentat in complement fata de r - 1 complementand fiecare cifra a numarului fata de r - 1. De exemplu, un numar binar se complementeaza fata de 1 complementand fiecare cifra binara fata de 1, un numar hexazecimal se complementeaza fata de 15 complementand fiecare cifra hexazecimala fata de 15, etc. Un numǎr pozitiv X se reprezintǎ in complement fatǎ de 1 ca:
Un numǎrul negativ -X se reprezintǎ in complement fatǎ de 1 ca:
unde: este complementul fata de 1 al cifrei . Pentru a reprezenta un numǎr negativ in complement fatǎ de 1 complementǎm toate cifrele numarului pozitiv fata de 1. Complementarea fata de 1 a unei cifre binare inseamna modificarea cifrei 1 in 0 si a cifrei 0 in 1. Reprezentarea unui numar negativ in complement fata de 1 se face modificand toate cifrele numarului pozitiv din 1 in 0 si din 0 in 1, inclusiv bitul de semn. Exemple de numere reprezentate in complement fatǎ de 1 pe un octet.
Reprezentarea in complement fata de 1 nu se foloseste in calculatoare. Reprezentarea numerelor binare in complement fatǎ de 2 Fie un numar natural N reprezentat in baza r cu n cifre. Complementul fata de r al numarului N este
In consecinta, complementul fata de 2 al unui numar binar cu n cifre este
iar complementul fata de 16 al unui numar hexazecimal cu n cifre este
Un numar pozitiv X se reprezintǎ in complement fatǎ de 2 ca:
Un numar negativ -X se reprezintǎ in complement fatǎ de 2 ca:
unde: Complementul fata de doi al unui numar binar se obtine in felul urmator : toate cifrele nule de la dreapta numarului raman nemodificate, prima cifra nenula de la dreapta se complementeaza fata de doi, restul cufrelor numarului se complementeaza fata de 1. Aceeasi regula se aplica si numerelor reprezentate in baza 16: toare cifrele nule de la dreapta numarului raman nemodificate, prima cifra nenula de la dreapta se complementeaza fata de 16, restul cufrelor numarului se complementeaza fata de 15. Exemple de numere reprezentate in complement fatǎ de 2 pe un octet.
Mentionǎm cǎ in calculatoare numerele intregi se reprezintǎ in general in complement fatǎ de 2. De regula, numerele cu semn se reprezinta in complement fata de 2 pe n biti astfel. Bitul cel mai semnificativ este bit de semn dupa regula de mai sus. Fie X un numar intreg pozitiv. numarul X se reprezinta in complement fata de 2 ca numarul X reprezentat in baza 2, numarul -X se reprezinta in complement fata de 2 ca numarul 2n - X reprezentat in baza 2. Tabelul 1 arata numere intregi cu semn reprezentate pe 3 biti in complement fata de doi si in marime si semn. Bitul cel mai semnificativ este bitul de semn.
Tabelul 1 . Numere intregi cu semn pe 3 biti in complement fata de 2 si in marime si semn. Reprezentarea numerelor intregi pe n biti in complement fata de doi are urmatoarele proprietati: valoarea 0 se reprezinta ca (00. 00), valoarea -1 se reprezinta ca (11.11), cel mai mare numar pozitiv ce se poate reprezenta pe n biti este 2n-1-1, (011.11) cel mai mic numar negativ ce se poate reprezenta pe n biti este -2n-1, (100.00). Exercitiu. Sa se reprezinte toate numerele intregi cu semn pe 4 biti in complement fata de doi si in marime si semn. 1.7 Deplasarea numerelor binare cu semnInmultirea unui numǎr binar cu semn cu sau este echivalentǎ cu deplasarea numǎrului binar la stanga sau la dreapta cu o cifra. La deplasarea numarului binar, bitul de semn rǎmane neschimbat. Cazul numerelor pozitive Se deplaseazǎ toate cifrele numarului, iar cifrele adaugate sunt zerouri. Regula este evidentǎ din formula de reprezentare a numerelor pozitive. Fie numarul pozitiv
si numarul inmultit cu doi
de unde se deduce:
Am presupus cǎ prin inmultirea cu 2 a numǎrului X nu apare depǎsire. In acelasi fel se aratǎ cǎ regula este valabilǎ pentru impǎrtirea cu 2. Exemple. Deplasarea numarului 28 cu o cifrǎ binarǎ la dreapta si la stanga.
Numere negative reprezentate in complement fatǎ de 2 Regula de inmultire a acestor numere cu sau este urmǎtoarea:
Regula deplasarii numerelor intregi reprezenate in complement fata de 2 se poate enunta astfel : la deplasarea la stanga cifrele adǎugate sunt zerouri, la deplasarea la dreapta se propaga bitul de semn. Exemplu. Deplasarea numarului -28 cu o cifrǎ binarǎ la dreapta si la stanga.
1.8 Reprezentarea numerelor reale in virgula mobilaNumerele reale se reprezintǎ in calculator in virgulǎ mobilǎ. Numarul real R este pus sub forma
unde: f este un numar subunitar (mantisa), b este baza iar e este exponentul. Pentru exemplificare vom considera baza zece. Exemple de reprezentare a numerelor reale.
Mantisa f are totdeauna un numar finit de cifre si in plus
In continuare, pentru exemplificare vom considera cǎ mantisa are 8 cifre. Deoarece mantisa are un numǎr finit de cifre, in unele cazuri se pierd cifrele mai putin semnificative din numǎr. Exemplu. Numǎrul
se reprezintǎ ca:
Pentru mǎrirea preciziei calculelor se cautǎ ca prima cifra din mantisǎ sǎ fie diferitǎ de zero (vezi exemplul de mai sus). Numerele in aceasta forma se numesc normalizate. 1.8.1 Reprezentarea numerelor subunitare in baza 2Cifrele bazei 2 sunt . Numarul subunitar este reprezentat ca o suma de puteri negative ale lui 2. Exemple.
Conversia numerelor subunitare din baza 10 in baza 2 Regula de convertire a unui numar subunitar din baza 10 in baza 2 este urmatoarea. Se inmulteste repetat numarul subunitar cu 2 si se retine partea intreaga. (partea intreaga este 0 sau 1). Cifrele retinute sunt cifrele numarului subunitar in baza 2. Inmultirea se continua pana cand numarul subunitar devine 0, sau pana cand s-a obtinut numarul de cifre necesare. Prima cifra retinuta este cifra cea mai semnificativa a numarului subunitar. Exemplu.
Aplicam regula de mai sus 0.375 * 2 = 0.75 0.75 * 2 = 1.5 0.5 * 2 = 1.0 Partea intreaga este formata din cifrele 0, 1, 1. Dupa ultima inmultire, partea subunitara a devenit 0. Exista numere subunitare cu un numar finit de cifre in baza 10 care nu se pot reprezenta exact cu un numar finit de cifre in baza 2. Exemplu. Fie numarul (0.4)10 0.4 * 2 = 0.8 0.8 * 2 = 1.6 0.6 * 2 = 1.2 0.2 * 2 = 0.4 0.4 * 2 = 0.8 0.8 * 2 = 1.6 Avem rezultatul convertirii
deci numarul (0.4)10 se reprezinta in baza 2 ca un numar periodic cu perioada 0110. Deoarece in calculator se retine un umar finit de cifre, (0.4)10 nu se poate reprezenta exact in baza 2. Conversia numerelor subunitare din baza 10 in baza 16 se face prin inmultirea repetata cu 16 si retinem partea intreaga intr-o cifra hexazecimala. Exemplu. Fie din nou numarul (0.4)10 0.4 * 16 = 6.4 0.4 * 16 = 6.4 Avem rezultatul convertirii (0.4)10 = (0.6666...)16 1.8.2 Reprezentarea numerelor reale in virgula fixaNumerelor reale se pot reprezenta in virgula fixa considerand o virgula fictiva ce desparte partea intreaga de cea fractionara. Fie de exemplu numere reale reprezentate pe 8 biti unde bitul cel mai semnificativ este bit de semn, partea intreaga ocupa 4 biti, partea subunitara 3 biti.
Numarul R = 01011.101 este 11.625 Numerele intregi pot fi considerate ca reprezentate in virgula fixa daca virgula se considera dupa ultima cifra binara, a0, ca mai jos.
In general, vom fi interesati de reprezentarea numerelor subunitare, unde N are forma N = a-1 x 2-1 + a-2 x 2-2 + . + a-n 2-n In acest caz se considera ca virgula este situata inainte de prima cifra. Tabelul 2 arata numere fractionare reprezentate in cod binar pe 3 biti.
Tabelul 2 . Numere fractionare reprezentate in cod binar. Un dezavantaj al reprezentarii numerelor in virgula fixa este acela ca gama numerelor ce se pot reprezenta este mica. 1.8.3 Reprezentarea numerelor reale in virgula mobila in baza 2Reprezentarea numerelor in virgula mobila In baza 2 se face convertind numarul in baza 2 (partea intreaga si cea subunitara se convertesc separat, ca mai sus) si se pune numarul sub forma
unde mantisa m este un numar subunitar, iar exponentul e este puterea lui 2 ce inmulteste mantisa. De regula, se cauta ca primul bit din mantisa sa fie 1. In acest caz avem 0.5 <= m < 1 In acesta reprezentare exista un bit de semn pentru mantisa si alt bit de semn pentru exponent. Fie de exemplu numere reprezentate pe un octet, cu mantisa 5 biti si exponentul 3 biti ca mai jos.
Numarul
este
Exponentul arata cu cate pozitii va fi deplasat punctul binar la dreapta (e > 0) sau stanga (e < 0) pentru a obtine numarul binar initial fara exponent. Presupunem ca mantisa are m biti, inclusiv semnul, iar exponentul e biti (inclusiv semnul). Numarul maxim ce se poate reprezenta este
iar numarul minim este
1.8.4 Standardul IEEE de reprezentare a numerelor reale in virgula mobilaIn calculatoarele personale numerele reale se reprezintǎ in virgulǎ mobilǎ in felul urmǎtor R = ± 1.m * 2 c Valoarea subunitara m va fi numita mantisa. Notam exponentul numarului real cu e. Domeniul exponentului este [-127, 127]. La exponent se adaugǎ totdeauna valoarea 127, pentru a nu avea doua semne, unul pentru mantisa si altul pentru exponent. Notam e + 127 = c. Valoarea c se numeste caracteristica si are domeniul [0,254]. Bitul de semn are totdeauna valoarea 0 pentru numere pozitive si 1 pentru cele negative. In reprezentarea in virgulǎ mobila scurtǎ (simpla precizie) numǎrul se reprezinta pe 32 biti. Bitul de semn ocupa bitul 31, exponentul ocupǎ bitii 23-30 iar mantisa bitii 0-22. Gama numerelor reale ce se pot reprezenta in acest format este
iar mantisa corespunde la opt cifre zecimale. Exemple. Fie numarul . Bitul de semn este zero, m = 0, iar c = 0+127. In consecinta, primii noua biti din numar sunt 001111111 Numarul R va fi reprezentat in hexazecimal ca 3F800000. Fir numarul . Bitul de semn este zero, m = 0, iar c = -1+127=126. Primii noua biti din numar sunt 001111110 Numarul se reprezinta in hexazecimal ca 3F000000.
Mentionǎm cǎ dacǎ exponentul este 255 iar mantisa este 0, numarul este Dacǎ exponentul este 255 si mantisa este diferitǎ de zero numarul este NaN (not a number). Valoarea NaN apare atunci cand efectuǎm urmatoarele operatii :
sau cand un operand este NaN. In reprezentarea in virgulǎ mobila lungǎ (dublǎ precizie) numǎrul se reprezinta pe 64 biti. Domeniul exponentului este [-1023, 1023]. La exponent se adaugǎ cantitatea 1023, deci exponentul are domeniul [0, 2046]. Bitul de semn este bitul 63, exponentul ocupǎ bitii 52-62 iar mantisa ocupa bitii 0-51. Gama numerelor reale ce se pot reprezenta in dubla precizie este
1.9 Alte coduri binare1.9.1 Codul BCDIn codul BCD fiecare cifra zecimala este codificata in binar pe 4 biti. Exemplu.
1.9.2 Codul GrayFie numere in cod binary pe 3 biti 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 .... Se observa ca, la adunarea unei unitati la un numar, mai multi biti isi schimba starea. De exemplu, la trecerea de la numarul 0 1 1 la numarul 1 0 0 toti cei 3 biti isi schimba starea. In anumite dispozitive este imposibil ca doi sau mai multi biti sa-si schimbe starea simultan. Este nevoie de un alt cod, la care la adunarea unei unitati sa se modifica un singur bit. Acest cod este codul Gray. Pentru 3 biti avem cifrele 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 1 Codul Gray se pe n biti se genereaza din codul Gray pe n - 1 biti. Fie codul Gray pe 1 bit 0 1 Codul Gray pe 2 biti se genereaza din codul Gray pe un bit prin reflexie si apoi se adauga ca prim bit un bit 0 la codul pe un bit si un bit 1 la codul reflectat. 0 0 0 1 0 1 .. ... 1 1 1 0 1 0 Codul Gray pe trei biti se genereaza din codul pe doi biti astfel: 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 1 0 0 1 0 ... .... 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 1 Rezulta codul Gray pe 3 biti de mai sus.
|