Sunteți pe pagina 1din 6

CURS 1 - Informatic Conversii i operaii n diferite baze de numeraie

Scopul cursului 1 l reprezint nelegerea modului de conversie a unui numr ntreg sau zecimal dintr-o baz n alta. Cursul 1 se va axa pe conversia numerelor ntregi i zecimale din baza 10 ntr-o baz oarecare, n special baza 16, 2 i 8, precum i pe conversia invers, dintr-o baz oarecare n baza 10, mai ales din baza 16, 2 i 8 n baza 10. Se va studia i modul de realizare a conversiei din baza 16 direct n baza 2 sau 8 i invers. Vor fi prezentate operaii simple (adunri, scderi) n diferite baze de numeraie. Consideraii teoretice Un sistem de numeraie este constituit din totalitatea regulilor de reprezentare a numerelor cu ajutorul anumitor simboluri denumite cifre. Pentru orice sistem de numeraie , numrul semnelor distincte pentru cifrele sistemului este egal cu baza (b). Deci pentru baza b=2 (numere scrise n binar) semnele vor fi cifrele 0 i 1. Pentru baza b=16 (hexazecimal) semnele vor fi 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Se observ c pentru numerele scrise ntr-o baz mai mare dect baza 10 (zecimal) se folosesc i alte simboluri (litere) pe lng cifrele obinuite din baza 10. Astfel, n cazul numerelor scrise n hexazecimal, literele A,B,C,D,E,F au ca i valori asociate 10,11,12,13,14,15. Pentru a face uor distincie ntre numerele scrise ntr-o anumit baz, la sfritul numrului se mai scrie o liter ce simbolizeaz baza, de exemplu: B pentru numerele scrise n binar (baza 2) Q pentru numerele scrise n octal (baza 8) D pentru numerele scrise n zecimal (baza 10) H pentru numerele scrise n hexazecimal (baza 16) De regul numerele scrise n baza 10 nu trebuie neaprat s fie urmate de simbolul D, pentru c aceast baz se consider implicit. Exist i alte moduri de notare, cum ar fi scrierea la sfritul numrului n parantez a bazei, de exemplu: 100101001(2), sau 17A6B(16). Dac se d un numr scris ntr-o baz oarecare b sub forma parte ntreag i parte zecimal: Nr(b) = Cn Cn-1 Cn-2 C2C1 C0 , D1D2D2D3 , atunci valoarea sa n baza 10 va fi: Nr(10) = Cn * bn + C n-1 * bn-1 + + C 2 * b2 + C 1 * b1+ C 0 * b0 + D1 * b-1 + D2 * b 2 + + D3 * b 3 + Conversia numerelor din baza 10 ntr-o baz oarecare n primul rnd trebuie subliniat c pentru conversia unui numr care conine att parte ntreag ct i parte zecimal trebuie convertite separat partea ntreag i cea zecimal.

Conversia prii ntregi Algoritmul cel mai simplu const n mprirea succesiv a numrului scris n baza 10 la baza spre care se dorete conversia (se mparte numrul la baz, iar n continuare se mparte ctul obinut la baz .a.m.d. pn cnd ctul devine 0), dup care se iau resturile obinute n ordine invers, care constituie valoarea numrului n baza cerut. Exemple: S se converteasc numerele ntregi 347 i 438 din baza 10 n baza 16, 2 i 8. Mai nti se convertete n baza 16 pentru c aceasta se realizeaz prin mai puine mpriri dect conversia n baza 2 sau 8. 347 16 32 21 16 27 16 1 16 5 0 11 1 (adic B)

16 0

Astfel, lund resturile n ordine invers obinem 15B(H). Mai departe, putem realiza conversia n baza 2 i 8 n mod analog, dar exist i o metod mai rapid de conversie a numerelor ntre bazele 2,8 i 16 innd cont c pentru fiecare cifr hexa exist 4 cifre binare corespondente i pentru fiecare cifr n octal exist 3 cifre binare dup tabelul care urmeaz: Valoarea n zecimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Valoarea n Numrul binar hexazecimal coresp. cifrei hexa 0 1 2 3 4 5 6 7 8 9 A B C D E F 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Numrul binar coresp. cifrei octal 000 001 010 011 100 101 110 111

Mai trebuie inut cont la trecerea unui numr prin bazele 2,8,16 c gruparea cifrelor din baza 2 se face dinspre virgul spre extremiti, adic la numerele ntregi de la dreapta la stnga (prin completare cu zerouri la stnga numrului dac este cazul, deci n partea care nu-i afecteaz valoarea), iar la numerele zecimale gruparea se face de dup virgul de la stnga la dreapta, prin adugare de zerouri la dreapta numrului. n concluzie, 347(D) = 15B(H) = 1 0101 1011(B) = 533(O) 438(D) = 1B6(H) = 1 1011 0110 (B) = 666(O) Conversia prii zecimale Pentru a converti un numr subunitar (deci partea fracionar a unui numr) din baza 10 ntr-o baz oarecare se fac nmuliri succesive ale prilor fracionare pn cnd se ajunge la parte fracionar nul, sau se ajunge la perioad sau se depete capacitatea de reprezentare (se obin cifre suficiente, dei algoritmul nu s-ar fi terminat). Ceea ce depete partea zecimal la fiecare nmulire reprezint o cifr a numrului n baza spre care se face conversia. Pentru exemplificare este uor s se foloseasc schema urmtoare, care prin cele dou linii separ mai clar cifrele reprezentrii precum i indic mai bine poziia virgulei (cifrele de la prima nmulire n jos adic de sub linie sunt dup virgul). Trebuie remarcat c se nmulete doar ceea ce este n dreapta virgulei. Exemplu: S se converteasc numrul 0,47(D) n binar, octal i hexazecimal: 0, 47*2 0 94 1 88 1 76 1 52 1 04 0 08 0 16 0 32 0 64 1 28 0 56 1 12 0 24 0 48 0 96 1 ... Deci 0,47(D) = 0,0111 1000 0101 0001 (B) = 0,7851(H) = 0,3605(O) Conversia unui numr care are att parte ntreag ct i parte zecimal se face convertind pe rnd partea ntreag i cea zecimal.

Exemplu: S se reprezinte n baza 2 si 16 numrul real 14,75 Obinem: 14(D) = 1110(B) = E(H), iar 0,75(D) = 0,11(B) = C(H). Deci 14,75(D) = 1110,11(B) = E,C(H) Conversia unui numr dintr-o baz oarecare n baza 10 Pentru a converti un numr dintr-o baz oarecare n baza 10 se poate folosi formula definit n prima parte a lucrrii i anume dac se d un numr scris ntr-o baz oarecare b sub forma parte ntreag i parte zecimal: Nr(b) = Cn Cn-1 Cn-2 C2C1 C0 , D1D2D2D3 atunci valoarea sa n baza 10 va fi: Nr(10) = Cn * bn + C n-1 * bn-1 + + C 2 * b2 + C 1 * b1+ C 0 * b0 + D1 * b-1 + D2 * b 2 + + D3 * b 3 + Exemple: Se d numrul ntreg n hexazecimal 3A8(H) i se cere valoarea sa n zecimal: N = 3*162 + 10*16 1 + 8 = 3*256 + 160 + 8 = 936(D) Se d numrul fracionar 0,341(Q) scris n baza 8 i se cere valoarea sa n zecimal N = 3*8 1 + 4*8 2 +1*8 3 = 3/8 +4/64 + 1/512 = 0.4394(D) Se d numrul n binar 110,11(B) i se cere valoarea sa n hexazecimal i n zecimal: N = 110,11(B) = 6,C(H) = 6,75(D)

Operaii simple cu numere scrise n diferite baze n continuare vor fi prezentate operaiile de adunare i scdere a numerelor scrise n binar, octal i hexazecimal a numerelor ntregi fr semn. Adunarea Adunarea se face dup aceleai reguli ca n zecimal, cu observaia c cifra cea mai mare dintr-o baza b va fi b-1 (adic 9 in zecimal, 7 in octal, 1 in binar i F n hexazecimal). Deci dac prin adunarea a dou cifre de rang i se va obine un rezultat mai mare dect b-1, va apare acel transport spre cifra de rang urmtor i+1, iar pe poziia de rang i va rmne restul mpririi rezultatului adunrii cifrelor de rang i la baz. Transportul spre cifra de rang i+1 va deveni o nou unitate la suma cifrelor de rang i+1, adic se va mai aduna acel transport 1. Exemple: 1111 1 01010110(B)+ 10110101(B) 11 1364(Q)+ 3721(Q) 11 6D8A32(H)+ 33E4C8(H)

100001011(B)

5305(Q)

A16EFA(H)

S-a marcat transportul de o unitate la cifra de rang superior prin scrierea unui 1 deasupra cifrei de rang superior la care s-a fcut transportul. Operaia de adunare n binar este util la reprezentarea numerelor n complement fa de 2 cnd se alege varianta adunrii valorii 1 la reprezentarea din complement fa de 1 (vezi lucrarea cu reprezentarea datelor). Exemple: S se adune cele 2 numere ntregi 347(D) i 438(D) convertite mai sus n lucrare n bazele 16 si 8 si s se verifice rezultatul prin conversia lui in baza 10 347(D)+ 438(D) = 785(D) 15B(H) + 1B6(H) = 311(H). Verificare: 311(H) = 3*256+1*16+1 = 785 533(Q) + 666(Q) = 1421(Q). Verificare:1421(Q) = 1*512+4*64+2*8+1 = 785 Scderea Si pentru scdere sunt valabile regulile de la scderea din zecimal i anume: dac nu se pot scdea dou cifre re rang i (adic cifra desczutului este mai mic dect a scztorului) se face mprumut o unitate din cifra de rang urmtor (i+1). n cazul n care cifra din care se dorete realizarea mprumutului este 0, se face mprumutul mai departe la cifra de rang urmtor. Exemple: .. 01011010(B) 01001100(B) 00001110(B) . . A3D4(H) 751B(H) 2EB9(H)

S se scad cele dou numere ntregi 347(D) i 438(D) convertite mai sus n lucrare n bazele de numeraie 16 i 8 i s se verifice rezultatul prin conversia lui n zecimal.

438 347 = 91(D) 1B6(H) 15B(H) = 5B(H). Verificare: 5B(H) = 5*16+11 = 91 666(Q) 533(Q) = 133(Q). Verificare 133(Q) = 1*64+3*8+3 = 91 Operaia de scdere este util cnd se dorete reprezentarea numerelor n complement fa de 2 i se efectueaz scderea din 2nr_biti_reprez + 1 a numrului reprezentat n modul.

S se realizeze conversiile din exemplele prezentate: conversia numerelor din baza 10 in baza 2, 8 i 16 conversia unui numr intre bazele 2, 8 i 16 conversii din bazele 2, 8 i 16 n baza 10 conversia numerelor zecimale din baza 10 n baza 2 i 16 operaii de adunare i scdere numere n bazele 2 i 16