Sunteți pe pagina 1din 6

Lucrare de laborator nr.

1
Conversii i operaii n diferite baze de numeraie
Scopul lucrrii
Scopul lucrrii l reprezint nelegerea modului de conversie a unui numr ntreg sau
zecimal dintr-o baz n alta. Lucrarea 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.
Mersul lucrrii

Se vor realiza 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

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