Organizarea oricrui computer depinde considerabil de reprezentarea numerelor i
caracterelor. n continuare se vor prezenta modurile n care calculatorul memoreaz i manipuleaz caractere i informaii. Unitatea de baz de memorare a informaie se numete bit (contragere de la Binary Digit, n traducere cifr binar). Concret, bitul nu este dect starea de nchis- deschis sau sus-jos dintr-un circuit. Noiunea de bit a fost utilizat pentru prima dat n teza de doctorat a matematicianului Claude Shannon, care a inventat prin teza sa un nou domeniu numit teoria informaiei. n 1964 proiectanii calculatorului mainframe IBM System/360 au stabilit ca i convenie folosirea grupurilor de 8 bii ca unitate de baz a memoriei calculatorului. Astfel a aprut octetul (o) sau byte-ul (B). Un cuvnt este format din doi sau mai muli octei adiaceni adresai i manipulai mpreun. Mrimea cuvntului reprezint mrimea datelor care sunt optim manevrate de ctre o anumit arhitectur. Cuvintee pot fi succesiuni de 16, 32, 64 de bii. O succesiune de 4 bii (jumtate de octet) se numete nibble.
Definiia 1: Un sistem de numeraie este format din totalitatea regulilor de reprezentare a numerelor cu ajutorul unor simboluri numite cifre. Definiia 2: Se numete baza sistemului de numeraie numrul total de cifre distincte utilizate ntr-un sistem de numeraie. Baza sistemului de numeraie se noteaz cu b i satisface condiia b>1. Numerele pot fi reprezentate n baza b folosindu-se cifrele cuprinse n intervalul [0, b-1]. Definiia 3: Un sistem de numeraie se numete poziional, dac valoarea unei cifre este dat de poziia pe care aceasta o ocup n cadrul numrului. Exemplu: Considerm numrul 2003
scris n baza 10.
n = 2003
numrul de uniti
numrul de zeci
numrul de sute
Se observ c, n funcie de poziia pe care o ocup, cifra 0 are valori diferite. numrul de mii Datele sunt reprezentate n computer numai n sistem binar, sistemele octal i hexazecimal fiind notaii folosite de ctre programatori pentru scurtarea notaiilor prea lungi care ar rezulta n cazul reprezentrii n binar a numerelor mari. 2.2 Algoritmi de conversie
Conversia numerelor ntregi din baza 10 n baza b
Fie x Z+. Dac x<b, atunci x 10 = x b , iar dac x b, trecerea de la baza 10 la baza b se face astfel: Conform teoremei mpririi cu rest a numerelor ntregi, putem scrie irul de egaliti: x=bq 0 +r 0 0r 0 <b qo=bq 1 +r 1 0r 1 <b ... ... q k-1 =bq k +r k 0r k <b oprindu-ne la acel k pentru care q k =0. n acest caz avem: x 10 =(r k r k-1 ......r 1 r 0 ) b . Algoritmul de conversie presupune mprirea numrului la baza b. Se obine un rezultat format din ct i rest. Noul ct se mparte din nou la baz. Algoritmul continu pn cnd se obine ctul 0. Resturile obinute, scrise n ordine invers, reprezint numrul iniial convertit n baza b.
Problem. S se converteasc numrul x=843 din baza 10 n bazele 2,8 i 16.
Soluie. Vom avea: a)b=2 843=2 421+1 b) b=8. 843=8105+3 i deci: 421=2 210+1 105=813+1 1101001011 2
Conversia numerelor subunitare din baza 10 n baza b
Fie y (0,1). Conversia lui y din baza 10 n baza b se face prin nmuliri succesive cu baza, separnd partea ntreag rezultat, dup cum urmeaz: yb= r -1 +y 1 0r -1 <b ;y 1 (0,1) y 1 b= r -2 +y 2 0r -2 <b ;y 2 (0,1) ... ... ... ... y m-1 b= r -m +y m 0r -m <b ;y m (0,1)
Procedeul are n general un numr infinit de pai, totui n practic se face conversia lund n considerare un numr finit de pai, n funcie de gradul de precizie ales (numrul de nmuliri). Exemplul 1: S se converteasc numrul 0.375 din baza 10 n bazele 2, 8, respectiv 16.
Exemplul 2. S se converteasc numrul y=0,273 din baza 10 n bazele 2, 8, respectiv 16. Pentru baza 2 se va realiza conversia cu gradul de precizie 9, iar pentru bazele 8,16 gradl de precizie este 3.
a) b=2. 0,2732= 0,546 b) b=8. 0,2738= 2,184 i deci: 0,5462= 1,092 0,1848= 1,472 0,0922= 0,184 0,4728= 3,776 0,1842= 0,368 0,010001011 2
Conversia numerelor reale din baza 10 n baza b Fie zR+. Numrul z se poate exprima n mod unic sub forma : z=[z]+{z},unde prin [z]i {z} am exprimat partea ntreag i, respectiv, partea fracionar a numrului z. Pentru a realiza conversia lui z din baza 10 n baza b se parcurg urmtoarele etape: I) se realizeaz conversia prii ntregi conform algoritmului de conversie a numerelor ntregi din baza 10 n baza b; II) se realizeaz conversia prii fracionare conform algoritmului de conversie a numerelor subunitare din baza 10 n baza b; III) se concateneaz cele dou rezultate, plasnd virgula ntre ultima cifr rezultat n urma conversiei prii ntregi i prima cifr rezultat n urma conversiei prii fracionare. Exemplu: S se converteasc numrul 843,375 n bazele 2,8 respectiv 16. Conform rezultatelor obinute avem: 843,375 (10) = 1101001011,011 (2) 843,375 (10) = 1513,3 (8) 843,375 (10) = 34B,6 (16)
Conversia numerelor reale din baza b n baza 10
Pentru a realiza conversia unui numr real din baza 10,se procedeaz astfel: I) se trece de la reprezentarea poziional a numrului n baza b la reprezentarea algebric n baza b; II) se exprim cifrele numrului i exponenii care apar n reprezentarea algebric prin cifre sau numere n baza 10; III) se efectueaz calculele n baza 10 i se obine tocmai reprezentarea poziional a numrului n baza 10. Exemplu: S se converteasc n baza 10 numerele: a) 10101,0110 (2)
Conversii binar octal Conversia n octal se face astfel: cifrele de la partea ntreag se mpart n grupe de cte trei de la dreapta la stnga, iar cifrele de la partea fracionar se mpart n grupe de cte trei de la stnga la dreapta (prima grup de la partea ntreag i ultima grup de la partea fracionar se completeaz n fa, respectiv n spate, cu unul sau dou zerouri) i apoi fiecare grup de trei cifre binare se nlocuiete cu cifra octal corespunztoare ei. Invers, dac numrul este scris n octal, conversia n binar se face nlocuind fiecare cifr octal cu grupul de trei cifre binare corespunztoare ei. Exemplu: 1110010101 = 001.110.010.101 = 1625 (8)
Conversii binar hexazecimal n acest caz conversia se face la fel ca n cazul precedent, cu precizarea c se vor lua n considerare grupe de cte 4 cifre. Exemplu: 1110011101 = 0011.1001.1101 =39D (16)
Operaii aritmetice n binar
Tabla adunrii n binar este urmtoarea:
+ 0 1 0 0 1 1 1 10
Not: 1+1 = 2 (10 n binar). Operaii aritmetice n hexazecimal:
La adunarea n hexa se ine cont c baza de referin este 16. Se va trece astfel ca rezultat intermediar numrul ce depete baza i se va transporta unitatea (sau unitile) ctre stnga. La scdere se va ine cont, n cazul unei scderi intermediare cu rezultat negativ, c la desczut se adun 16 (spre deosebire de 10 n baza 10) i se va transporta unitatea ce trebuie sczut spre stnga.
1111+ 1001 0110 11110 Explicaie: 1+1+0 = 10 (se scrie 0,1 mai departe) 1+0+1 = 10+1 = 11 (se scrie 1, 1 mai departe) 1+0+1 = 10+1 = 11 (se scrie 1, 1 mai departe) 1+1+0 = 10+1 = 11
Tabla scderii n binar:
- 0 1 0 0 Imposibil * 1 1 0 * Not: 0-1 este imposibil n binar dar se trece 1 i se mprumut o unitate din stnga.
Explicaie: 1010- 0111 0011 0 1 = 1 (se mprumut o unitate din stnga) (1-1) - 1= 0 1 = 1 (se mprumut o unitate din stnga) (0-1) 1 =1-1 (se mprumut o unitate din stnga) (1-1) 0 = 0
F + E = 15 +14 = 29 16= C (1 mai departe) F + 1 = 15 +1 = 16 = 10 16 + 1=11
FF + 1E 47 164
F + E +7 =36 2*16=4 (2 mai departe) F +1 +4 = 14+2 = 16
1A- C C
A C = (16 + A) C = C (se mprumut o unitate din stnga) 1-1 = 0
28EF- 11FA 16F5 F A = 5 E F = (E + 16) F = F (se mprumut a unitate din stnga) 8 1 1 = 6 2 1 = 1
Probleme propuse
1. Definii bitul. 2. Ce este byte-ul? 3. Ce este cuvntul? 4. Din punct de vedere al reprezentrii numerelor, ce sistem de numeraie este preferabil de utilizat? 5. Ce reprezint gradul de precizie n cazul algoritmului de conversie a numerelor subunitare din baza 10 n baza b? 6. Cnd se ncheie algoritmul de conversie a numerelor ntregi din baza 10 n baza b? 7. Realizai conversia numerelor 40, 272, 18, 94 n bazele 2, 8, respectiv 16. 8. Realizai conversia numerelor 0,824; 0. 029; 0,456; 0,613 n bazele 2, 8, respectiv 16. 9. Realizai conversia numrului 110110011 n bazele 10, 8, 16. 10. Efectuai urmtoarele operaii: 1010+ 0101 1010+ 0101 1011+ 0111 1101+ 1001 0111 1110 - 0111 10000 - 00111 01000