Documente Academic
Documente Profesional
Documente Cultură
1. Sisteme de numeraie
Un sistem de numeraie este reprezentat prin totalitatea regulilor de reprezentare a numerelor, cu ajutorul unor simboluri numite cifre. Cifra este un simbol care reprezint o cantitate ntreag. Baza (rdcina) sistemului de numeraie este numrul de simboluri diferite permise pentru reprezentarea numerelor. n sistemele de calcul se utilizeaz sistemul de numeraie binar, B 2 = {0,1}, acesta prezentnd o serie de avantaje: existena unei corespondene biunivoce cu strile stabile ale unui circuit electronic digital; are o aritmetic simpl; analiza i sinteza blocurilor funcionale ale calculatorului se pot efectua cu ajutorul algebrei booleene, construit pe mulimea B2. Conversia unui numr dintr-o baz de numeraie ntr-o nou baz de numeraie se face examinnd separat partea ntreag i partea fracionar. S lum, de exemplu, numrul 121,45 n zecimal. Se dorete transformarea acestuia n baza 2. Pentru a putea realiza acest lucru, vom privi numrul dat ca dou numere distincte: partea ntreag 121 i partea fracionar 0,45. Prima dat vom transforma numrul 121 n binar, prin mpriri succesive la 2 i prin luarea resturilor obinute la mpriri n ordinea invers a obinerii. 12110 = 11110012 Pentru a transforma partea fracionar 0,45 n binar va trebui s efectum nmuliri succesive cu 2 i s prelum partea ntreag a rezultatelor. 0,45 * 2 = 0,9 -> 0 0,9 * 2 = 1,8 -> 1 0,8 * 2 = 1,6 -> 1 0,6 * 2 = 1,2 -> 1 Algoritmul se oprete n momentul n care partea fracionar devine 0 sau s-a atins precizia dorit (numrul de cifre pentru reprezentarea rezultatului). 0,4510 = 0,011100112
Prin concatenarea rezultatelor pariale se obine rezultatul final al conversiei. Astfel: 121,4510 = 1111001,011100112 Observaie: n timp ce numerele ntregi se pot reprezenta exact n binar, numerele subunitare se reprezint aproximativ, fcnd excepie numai acele numere subunitare care se pot scrie sub forma de sum de puteri negative ale lui 2 (0,5; 0,25 etc.). Pentru transformarea invers, din binar n zecimal, vom nmuli biii numrului cu puterile lui 2 corespunztoare rangului cifrei. 10110101,01101012 = 1*27 + 0*26 + 1*25 + 1*24 + 0*23 + 1*22 + 0*21 + 1*20 + 0*2-1 + 1*2-2 + 1*2-3 + 0*2-4 + 1*2-5 + 0*2-6 + 1*2-7 181,414
1111
1000
n multe aplicaii se lucreaz ns cu numere ntregi cu semn (numere algebrice), deci este necesar reprezentarea unui astfel de numr, folosind bitul de semn. Numerele algebrice pozitive se reprezint ntotdeauna prin valoare (mrime), avnd bitul de semn egal cu 0. Numerele negative se pot reprezenta n calculator utiliznd diferite coduri. Dintre aceste coduri de reprezentare fac parte: a) codul direct Numerele ntregi se reprezint prin mrime (valoare absolut) i semn. Pentru numerele negative, bitul cel mai semnificativ (de semn) este 1, iar celali n-1 bii servesc pentru reprezentarea valorii absolute a numrului. Ex.: N = -5 pe 8 bii => 10000101
b) codul invers (complement fa de 1) Pentru numerele negative, bitul de semn este 1, ceilali n-1 bii servind pentru reprezentarea valorii absolute negate a numrului. Negarea se realizeaz la nivel de bit: biii 0 devin 1 i biii 1 devin 0. Ex.: N = -5 pe 8 bii => 11111010
c) codul complementar (complement fa de 2) Pentru reprezentarea numerelor negative se aplic urmtoarea regul de complementare: se reprezint numrul n valoare absolut, apoi se inverseaz bit cu bit, inclusiv bitul de semn (care devine 1) i se adun 1 la rezultatul obinut. Deci, complementul fa de 2 se obine din complementul fa de 1, la care se adaug 1. Ex.: N = -5 pe 8 bii se reprezint astfel: |N| = 5, adic 00000101 prin inversare devine 11111010+ 1 11111011
d) cod n exces Aceast codificare const n adunarea unei valori constante la fiecare numr ntreg (pozitiv sau negativ) care se reprezint. Valoarea constant notat E care se adun, este de regul 2n-1, cu n numrul de bii ai reprezentrii. Matematic, un numr ntreg N se reprezint n cod exces E prin: E + N.
Ex.: Numerele N1 = 5 i N2 = -5 se reprezint pe n = 8 bii, n exces 27 = 128, prin: 128 + 5 = 133 respectiv E N 10000000 00000101 10000101 128 + (-5) = 123
Fie D domeniul de numere ntregi ce se pot reprezenta pe n bii: D = [-2 n-1, 2n-1-1]. Utiliznd codul exces 2n-1, domeniul D se transform n domeniul de valori pozitive D = [0, 2n1]. Deci, codul n exces poate transforma un domeniu de numere algebrice ntr-un domeniu de numere aritmetice. Avantajul este c operaiile cu numere aritmetice se implementeaz mai simplu (n hardware sau n software) dect operaiile cu numere algebrice.
5 9 = -4
Rezultatul obinut este negativ (bitul de semn are valoarea 1), reprezentat n complement fa de 2. Pentru a afla valoarea absolut a rezultatului va trebui s l complementm din nou fa de 2. Prin inversare se obine: 00000011+ 1 00000100
=4
Prezentm mai jos nmulirea a dou numere binare de cte 4 bii: denmulitul nmulitorul 1011 1101 1011 0000 1011 1011 10001111 11 13
produs
143
Rezultatul se obine pe lungime dubl, realizndu-se trunchierea acestuia la lungimea simpl, dac este necesar. Pentru operaia de nmulire pot fi stabilite urmtoarele reguli: 1) dac bitul LSB al nmulitorului este 1, se scrie dedesubt denmulitul deplasat cu o poziie la stnga; 2) dac LSB este 0 se scrie dedesubt un numr de zerouri egal cu numrul de cifre al denmulitului i apoi se face deplasarea cu o poziie la stnga;
3) pentru fiecare bit al nmulitorului se repet paii 1) sau 2) dup caz; 4) se adun toate produsele pariale pentru a forma rezultatul final.
Obs.: La deplasarea la dreapta a unui numr, se repet bitul de semn n partea stng. Pentru prima comparaie se plaseaz un 0 dup bitul LSB, prima comparaie fcndu-se ntre acest bit i bitul LSB. Ex.: D = +12 = 0,1100 bitul de semn I = -14 = 1,0010
-14 este scris n complement fa de doi 0,1100 1,0010[0] 0,000000000 0,000000000 1,0100 1,010000000 1,101000000 0,1100 0,011000000 0,001100000 0,000110000 1,0100 1,010110000 1,101011000 +12 -14 primul produs parial al doilea produs partial al treilea produs partial al patrulea prod. partial rezultatul nmulirii
denmulitul nmulitorul 00 => depl. dreapta 10 => scdere depl. dreapta 01 => adunare ignor carry depl. dreapta 00 => depl.dreapta 10 => scdere depl. dreapta
Rezultatul este negativ => complementare fa de doi: 0,010100111 1 0,010101000 Deci, 12*(-14) = -168. Obs.: nainte de nceperea nmulirii, numerele negative se complementeaz fa de doi. inversare rezultat adun 1 = 168
<0 <0
>0 <0
<0 >0
<0 <0
Mrimile ctului i restului se determin dup ce att dempritul ct i mpritorul se convertesc n numere pozitive, dac este cazul. Dup ce mrimile ctului i restului au fost determinate, se convertesc n complement fa de doi. Metoda utilizat mai jos se numete algoritmul cu restaurare. El poate fi sintetizat astfel: 1. se aliniaz biii cei mai semnificativi ai dempritului i mpritorului; 2. se scade mpritorul din demprit (adic se adun complementul fa de doi al mpritorului la demprit); 3. dac noul bit din poziia cea mai semnificativ este 1, rezultatul este negativ, se regenereaz dempritul, se deplaseaz la dreapta mpritorul i se preia bitul pentru ct ca fiind 0; 4. dac noul bit din poziia cea mai semnificativ este 0, rezultatul este pozitiv, se deplaseaz mpritorul la dreapta i se preia bitul pentru ct ca fiind 1; 5. se repet paii 2) i 3) sau 4) pn cnd LSB-ul mpritorului i al dempritului se aliniaz. Obs.: La deplasarea mpritorului la dreapta se repet bitul de semn. Exemplu: D = 179 = 0,10110011 = 12 = 0,1100 => complement fa de doi = 1,0100 0,10110011 1,0100 1,11110011 0,10110011 1,10100 0,01010011 1,110100 0,00100011 1,1110100 0,00001011 1,11110100 1,11111111 0,00001011 Deci, ctul = 0,1110 = 14 restul = 0,00001011 = 11
scade mpritorul (adun compl. fa de doi) rezultat negativ =>restaurare demprit preia 0 pentru ct depl. dreapta mpritor i scade rezultat pozitiv => preia 1 pentru ct depl. dreapta mpritor i scade rezultat pozitiv => preia 1 pentru ct depl. dreapta mpritor i scade rezultat pozitiv => preia 1 pentru ct depl. dreapta mpritor i scade rezultat negaitv =>restaurare demprit preia 0 pentru ct demprit restaurat
restul
Avantajul acestei codificri este corespondena direct ntre cifra zecimal i valoarea sa. O alt modalitate de reprezentare a cifrelor zecimale este codul BCD n exces 3. Cifrele zecimale sunt reprezentate pe cte 4 bii, prin valorile cuprinse ntre 3 (0011) i 12 (1100). Pentru sistemele cu dispozitive care utilizeaz numere n cod BCD, este necesar o operaie de conversie din binar n BCD i invers.
4.1. Conversia din binar n BCD Regula de conversie este urmtoarea: se deplaseaz numrul binar spre stnga, ncepnd cu bitul cel mai semnificativ. nainte de deplasare se adun 3 la decadele care conin un numr mai mare dect 4. Fie N2 = 10101101 0000 0000 0000 0000 0000 0000 0000 0000 0000 NBCD 0000 0000 0000 0000 0000 0001 0010 0100 1000 N2 0000 0001 0010 0101 0011 1000 0000 0001 0011 0110 + + 10101101 0101101 101101 01101 01101 1101 101 01 1
0000 0001
Echivalentul n calculator al acestei notaii este formatul cu virgul mobil, folosit pentru reprezentarea numerelor reale din matematic. Nu exist o coresponden biunivoc ntre numerele reale i numerele n virgul mobil. Astfel, numerele 0,998*109 i 0,999*109 sunt consecutive n formatul n virgul mobil, dar n realitate ntre ele exist o infinitate de numere reale. Cele mai importante diferene ntre numerele reale din matematic i numerele reprezentate n virgul mobil sunt domeniul finit i mulimea discret de valori. Domeniul finit i discret este determinat de capacitatea fizic limitat a memoriei calculatorului. Numerele se reprezint n formatul cu virgul mobil prin bitul de semn al numrului, exponent i mantis: n-1 S 0 Exponent e bii Mantis m bii
n continuare vom folosi urmtoarele notaii: b baza de reprezentare a numrului; bm baza de reprezentare a mantisei; e numrul de bii pe care se reprezint exponentul; m numrul de cifre ale mantisei; p numrul de cifre ale prii fracionare a mantisei. De remarcat faptul c informaia care nu se modific nu se reprezint. Astfel avem baza de numeraie i virgula, a crei poziie a fost stabilit prin convenie (de exemplu, n stnga bitului cel mai semnificativ al mantisei, adic m = p). Mantisa se reprezint, de regul, n valoare absolut (prin mrime), baza de reprezentare bm fiind 2, 4, 8 sau 16. Corespunztor, mantisa este o succesiune de cifre n baza 2, 4, 8 sau 16, fiecare cifr fiind reprezentat n memoria calculatorului pe 1, 2, 3 i respectiv 4 bii. Condiia de normalizare, care asigur unicitatea reprezentrii numrului real n calculator, stabilete numrul de cifre ale prii fracionare a mantisei. Considernd mantisa subunitar, avnd prima cifr dup virgul semnificativ, vom avea urmtoarea condiie de normalizare: 0,1bm <= mantisa < 1. Dac bm este 2, bitul cel mai semnificativ al mantisei este ntotdeauna 1. Acest bit, n general, nu se reprezint n memoria calculatorului (se numete bit ascuns), efectul fiind acela de a dubla numrul de mantise distincte ce se pot reprezenta. Observaie: Tehnica bitului ascuns se refer doar la reprezentarea numerelor n memoria calculatorului, nu i la operaiile efectuate de unitatea aritmetico-logic.
Pentru a crete precizia reprezentrii, trebuie mrit numrul de cifre ale mantisei. De regul, acest numr se dubleaz, de unde rezult i denumirea de reprezentare n dubl precizie. Numrul total de mantise ce se pot reprezenta este: Nmantise = (b 1) * bm-1. Pentru reprezentarea exponentului pe e bii, care este ntotdeauna un numr ntreg pozitiv sau negativ, se utilizeaz, n general, un cod n exces (2 e-1). Avantajul este acela de a lucra numai cu numere ntregi fr semn, deci operaiile sunt mai simple. De regul, e = 7 sau 8 bii. Prin reprezentarea n cod exces 2e-1, domeniul de valori al exponentului D = [-(2 e-1-1), (2e-1-1)] se transform n D = [1, 2e 1]. Aceast convenie se mai numete i notaie polarizat, polarizarea fiind numrul care trebuie sczut din reprezentarea normal, fr semn, pentru a se obine valoarea real a exponentului. Valoarea 0 a exponentului n cod exces este rezervat pentru reprezentarea numrului 0. Pentru a mri domeniul de reprezentare, se alege baza numrului 4, 8 sau 16. Baza numrului (b) i baza mantisei (bm) sunt, de regul, egale. Exemple de formate de reprezentare n virgul mobil sunt formatul DEC, formatul IBM i standardul IEEE. n cazul standardului IEEE, baza de reprezentare este b = 2. n simpl precizie, un numr se reprezint pe 32 de bii. Exponentul se reprezint pe e = 8 bii, n cod exces 127. Valoarea 255 a exponentului n cod exces are semnificaia de , dup cum bitul de semn este 0 sau 1. Mantisa are m = 24 de bii, din care p = 23 de bii pentru partea fracionar. Mantisa se reprezint n valoare absolut, folosind tehnica bitului ascuns. Condiia de normalizare a mantisei este: 1,000002 <= mantis <=1,111112 Deoarece partea ntreag a mantisei este ntotdeauna 1, aceasta nu se mai reprezint n calculator. Se vor reprezenta doar cifrele de la dreapta virgulei, n total 23 de bii. Precizia reprezentrii este de 6 cifre zecimale. 31 30 23 22 S Exponent + 127 0 Mantisa normalizat
n dubl precizie, un numr se reprezint pe 64 de bii, cu m = 53 de bii, p = 52 de bii, e = 11 bii, iar exponentul este n cod exces 1023 (2 10-1). Se poate observa c domeniul de reprezentare este mult mai mare dect n simpl precizie, iar precizia a crescut la 15 cifre zecimale exacte. 31 30 20 19 S Exponent + 1023 0 Mantisa
31 Mantis
10,00011010 Deci rezultatul adunrii este 10,00011010 * 21. Prin normalizarea mantisei se obine: 1,00001101 * 22. Pentru reprezentarea rezultatului n formatul standard IEEE 754 simpl precizie va trebui s realizm polarizarea exponentului (adunarea lui cu 127). 0 10000001 00001101000000000000000
5.1.2. nmulirea numerelor n virgul mobil Iniial se testeaz dac este nul cel puin unul dintre operanzi, caz n care rezultatul nmulirii este, de asemenea, nul. Operaia de nmulire n virgul mobil const n adunarea exponenilor i nmulirea mantiselor. La adunarea exponenilor este posibil s apar depire superioar (prin nmulirea a dou numere foarte mari n modul) sau depire inferioar (prin nmulirea a dou numere foarte mici n modul). n aceste cazuri se vor poziiona n mod corespunztor indicatorii de depire superioar (eof) sau depire inferioar (euf). Dac la nmulirea mantiselor rezultatul nu este normalizat, n cazul n care exponentul Ec nu este minim, se va face o deplasare a mantisei M c cu o poziie spre stnga, cu decrementarea exponentului. La operaia de refacere a exponentului Ec, se ine cont c prin adunarea exponenilor s-au adunat dou deplasamente (2nr_bii_exponent-1-1), deci se va scdea din exponentul rezultatului obinut un deplasament. Exemplu: S se nmuleasc n virgul mobil numerele 8,36 i 2,74. n primul rnd vom transforma cele dou numere n binar, n formatul virgul mobil standard. Dac este necesar, se va face normalizarea i egalizarea exponenilor. 8,3610 = 1000,01012 = 1,0000101 * 23 2,7410 = 10,1011112 = 1,0101111 * 21 1,0000101* 1,0101111 10000101 10000101 10000101 10000101 00000000 10000101
00000000 10000101 . 1,01101011101011 Deci rezultatul final al nmulirii este 1,01101011101011 * 24. Pentru reprezentarea rezultatului n formatul standard IEEE 754 simpl precizie va trebui s realizm polarizarea exponentului (adunarea lui cu 127): 0 10000011 01101011101011000000000