Sunteți pe pagina 1din 11

Baze de numeraie

autor: Tudor Sorin

1. Conversia unui numr natural din baza 10 n baza b i invers


Fie numrul natural 1354. Acesta poate fi scris dup cum se vede:

1354 1 103 3 10 2 5 10 4
Spunem c numrul 1354 este n baza 10 (unica baz nvat pn acum)
i notm acest lucru astfel: 1354(10). Baza 10 nu este singura baz posibil.
Dimpotriv, orice numr natural b>1 poate fi baz. De asemenea, orice numr
natural poate fi scris n baza b.
Observm c numrul se scrie prin utilizarea cifrelor (numere ntre 0 i 9).
Numrul cifrelor cu ajutorul crora este scris un numr n baza 10 este 10 - de la 0
la 9 sunt 10 cifre.
Numrul 1354(10) poate fi scris sub forma:

1354 1 210 0 29 1 28 0 27 1 26 0 25 0 2 4 1 23 0 22
1 21 0.
Acum scriem numrul n baza 2: 10101001010 -am scris, n ordine,
coeficienii puterilor bazei 2. Avem egalitatea 1354(10)= 10101001010(2)
Observm c pentru scrierea unui numr n baza 2 se folosesc dou cifre: 0
i 1. Tot aa, se scrie numrul 1354 n baza 9.

1354 1 9 3 7 9 2 6 9 4
Obinem: 1764 (am scris coeficienii puterilor lui 9) i avem egalitatea:
1354(10)=1764(9).
n exemplele anterioare numrul a fost scris n aa fel nct trecerea n baza
b s fie imediat. Dar cum a fost obinut forma de nceput? De exemplu, cum a
fost scris numrul 1354 ca sum de puteri ale lui 2? ntrebarea are sens pentru
c, dac am avea rspunsul la ea, conversia ar fi imediat. Rspunsul este
complex, motiv pentru care va fi dat pe parcurs.

1
www.ls-infomat.ro | www.manuale-de-informatica.ro

Pentru nceput, prezentm un algoritm care ne permite s convertim


numrul natural n(10), n baza b>1.

Att timp ct n0:

mparte n la b.
n urma mpririi, n reine ctul i afim restul.

Numrul n baza b se obine scriind resturile n ordinea invers obinerii lor.


Exemple:
1. Convertim numrul 121 din baza 10 n baza 2.
121 2 60
1
rest

cat

60 2 30
0
cat

rest

30 2 15
0
cat

rest

15 2 7 1
rest

cat

7 2 3 1
rest

cat

3 2 1 1
cat

rest

1 2 0 1
cat

rest

Scriind resturile n ordine invers avem: 1111001(2)=121(10).


6

Prob: 1 2 1 2 1 2 1 2 0 2 0 2 1 121
Scriind resturile n ordine invers obinem numrul n baza 2: 1111001.
2. Scriem numrul 121(10) n baza 3.
121 3 40
1
rest

cat

40 3 13
1
cat

rest

13 3 4 1
cat

rest

4 3 1 1
cat

rest

1 3 0 1
cat

rest

Scriind resturile n ordine invers obinem 121(10)=11111(3).

1 34 1 33 1 32 1 3 1 30 81 27 9 3 1 121

2
www.ls-infomat.ro | www.manuale-de-informatica.ro

3. Scriem numrul 121(10) n baza 8.

121 8 15 1
15 8 1 7
1 8 01
Scriind resturile n ordine invers obinem: 121(10)=171(8)

1 8 2 7 8 1 121
Observaie: atunci cnd scriem un numr n baza b, cifrele sale sunt ntre 0
i b-1.
Exemple:

un numr n baza 10 are cifrele cuprinse ntre 0 i 9;


un numr n baza 2 are numai cifre 0 sau 1;
un numr n baza 3 are cifrele cuprinse ntre 0 i 2.
un numr n baza 8 are cifrele cuprinse ntre 0 i 7.

De ce? Observm faptul c, n conversie, cifrele numrului n baza b sunt


resturi obinute prin mpriri succesive la b. La matematic am nvat faptul c
restul este ntotdeauna mai mic dect mpritorul.
n cele ce urmeaz justificm algoritmul de conversie utilizat. Aa cum
rezult din exemplele date, ideea este de a scrie numrul N sub forma:

N a n b n a n 1 b n 1 a n 2 b n 2 ... a 1 b 1 a 0 ,
unde ,

a 0 , a 1 , a 2 ,... a n {0,1,2 ,... b 1}.

adic s gsim coeficienii ai ai diverselor puteri ale numrului b. Coeficienii


ai reprezint cifrele cu ajutorul crora se formeaz numrul. Acesta este:

a n a n 1 a n 2 ...a1 a 0
Pentru a afla coeficienii ai, procedm ca mai jos:
a0 este restul mpririi lui N la b. Motivul?

N=b(anbn-1+an-1bn-2+an-2bn-3+...+a1)+a0, a00,1,2,...,b-1
reinem ctul mpririi lui N la b (N1):
N1= anbn-1+an-1bn-2+an-2bn-3+...+a1;
a1 este restul mpririi lui N1 la b

N1=b(anbn-2+an-2bn-3+...+a2)+a1.

3
www.ls-infomat.ro | www.manuale-de-informatica.ro

reinem ctul mpririi lui N1 la b (N2);


N2= anbn-2+an-2bn-3+...+a2;
a2 este restul mpririi lui N2 la b
...
algoritmul continu pn cnd ctul obinut este 0.
Apare o problem. S presupunem c vrem s convertim un numr din baza
10 ntr-o baz b>10. Evident, vom avea b cifre. Dar care sunt ele? Noi cunoatem
numai pe cele de la 0 la 9. Atunci?
Pentru astfel de cazuri s-a fcut o convenie: primele 10 cifre utilizate vor fi
cele de la 0 la 9, iar urmtoarele, n ordine, vor fi: A (a), B (b), ... .
Exemplu: fie baza 16, vom avea cifrele:

0,1,... ,9;
A sau a pentru 10;
B sau b pentru 11;
C sau c pentru 12;
D sau d pentru 13;
E sau e pentru 14;
F sau f pentru 15.

Exemplu: s scriem numrul 2809 n baza 16.


2809 16 175 9;
175 16 10 15 ( F );
10 16 0 10 ( A).

Obinem: 2809(10)=AF9(16).
Prob: AF 9 (16 ) 10 16 2 15 16 9 (10 ) 2809 (10 )

2. Conversia unui numr subunitar pozitiv din baza 10 n baza b


S considerm un numr subunitar pozitiv: 0,675(10). Acesta poate fi scris i aa:
0,675

6
7
5
2 3
10 10
10

Cum am putea izola cifrele sale?

4
www.ls-infomat.ro | www.manuale-de-informatica.ro

Algoritmul este urmtorul:

0,675 10 6,75 0,75 6;


0,75 10 7,5 0,5 7;
0,5 * 10 5 0 5;
Am repetat procedeul pn cnd partea fracionar obinut este 0.
Cum convertim un numr subunitar pozitiv (M) din baza 10 n baza b? Vom
nota prin x partea ntreag a numrului x i prin x partea fracionar a sa.
Exemplu: 1,2=1 i 1,2=0,2.
Ideea este s scriem numrul M sub forma:

a 1 a 2 a 3 a 4
2 3 4 ...
b
b
b
b

i s gsim coeficienii a-1, a-2,...,0,1,...,b, apoi s scriem 0,aadic numrul n baza b.

1a-2a-3...,

Cum obinem coeficienii a-i?


Fie M numrul n baza 10.
a-1= Mb i M1=Mb pentru c:

M b a 1

a 2 a 3
2 ...
b
b

[ M b] a 1 ;
M 1 { M b}

a 2 a 3
2 ...
b
b

a-2= M1b i M2=M1b pentru c:

a 3 a 4
2 ...
b
b

M 1 b a 2
[ M 1 b] a 2 ;

M 2 { M 1 b}

a 3 a 4
2 ...
b
b

Procedeul continu pn cnd partea fracionar este 0, sau pn scriem


numrul cu precizia dorit.

5
www.ls-infomat.ro | www.manuale-de-informatica.ro

Exemple:
1. Convertim n baza 2 numrul 0,625(10).

0,625 2 1,250 [1,250] 1 {1,250} 0,25;


0,25 2 0,50 [0,50] 0 {0,50} 0,5;
0,5 2 1 [1] 1 {1} 0.
Numrul obinut este 0,101(2)=0,625(10).
Prob: 0,101( 2)

1 0
1 1 1

0,625(10) .
2 22 23 2 8

2. Convertim n baza 2 numrul 0,9(10).

0,9 2 1,8 [1,8] 1 {1,8} 0,8;


0,8 2 1,6 [1,6] 1 {1,6} 0,6;
0,6 2 1,2 [1,2] 1 {1,2} 0,2;
0,2 2 0,4
0,4 2 0,8
0,8 2 1,6
0,6 2 1,2
0,2 2 0,4

[0,4] 0
[0,8] 0
[1,6] 1
[1,2] 1
[0,4] 0

{0,4} 0,4;
{0,8} 0,8;
{1,6} 0,6;
{1,2} 0,2;
{0,4} 0,4

..........................................................

Observm c obinem un numr periodic i anume 0,1(1100).


3. Facem conversia n baza 16 a numrului 0,625(10).

0.625 16 10,0; [10] 10 (10 ) A(16 )

{10} 0.

Avem 0,625(10)=0,A(16).
4. Facem conversia n baza 16 a numrului 0,9(10).

0,9 16 14,4 [14,4] 14 E16

{14,4} 0,4;

0,4 16 6,4 [6,4] 6 6 (16)

{6,4} 0,4;

0,4 16 6,4 [6,4] 6 6 (16)

{6,4} 0,4;

..........................................................................
Avem 0,9(16)=0,E(6).

6
www.ls-infomat.ro | www.manuale-de-informatica.ro

Observaie foarte important. Fiind dat un numr subunitar pozitiv M, cu un


numr finit de zecimale, la conversia sa n baza b>1, este posibil ca, datorit
periodicitii, s rezulte un numr cu un numr de zecimale infinit. Din acest motiv,
algoritmul de conversie va trebui s primeasc ca dat de intrare numrul de
zecimale dorit. n cazul n care, n urma conversiei rezult un numr cu mai puine
zecimale, se completeaz cu numrul corespunztor de cifre 0.
Exemplu. Conversia se face cu 8 zecimale. Atunci:

0,625(10)=0,10100000(2).
0,9(10)0,11100110(2) (evident, avem o aproximaie).

3. Legtura dintre bazele 2 i 16


Fie numrul natural 1011011(2). l vom scrie n baza 16, fr s-l mai
trecem prin baza 10. Cum procedm?

Mai nti, separm cifrele de la dreapta ctre stnga n grupe de 4.

0101
1011

Observm c, n cazul n care numrul cifrelor nu este multiplu de 4, putem


aduga n fa numrul de cifre necesar -dac punem oricte cifre de 0 n faa unui
numr, valoarea sa nu se schimb.

nlocuim fiecare grup de 4 cifre binare cu cifra hexa corespunztoare (care


reprezint acelai numr n baza 10) i obinem:

5B

2 1

Am obinut numrul natural 5B(16).


Prob: 5B(16)=5*16+11=80+11=91(10).
1011011=126+025+124+123+022+12+1=64+16+8+2+1=91(10)
Cum de am obinut rezultatul corect?
Avem: 126+025+124+123+022+12+1=
027+126+025+124+123+022+12+1=
(023+122+02+1)24+123+022+12+1=
524+11=516+11=5B(16)

7
www.ls-infomat.ro | www.manuale-de-informatica.ro

Raionamentul fcut pentru numrul de mai sus se poate generaliza cu


uurin, pentru fiecare numr natural.

Invers. Fie numrul B5(16). Dorim s-l scriem n baza 2. Fiecare cifr a sa va fi
scris direct n baza 2.
Astfel: B(16)=1011; 5(16)=0101(2); 5B(16)=10110101(2).

Un mecanism asemntor se poate utiliza i n cazul conversiei numerelor


subunitare.

Fie 0,1011011(2). Pentru a-l converti n baza 16 se procedeaz astfel:

Se separ de la stnga ctre dreapta zecimalele n grupuri de 4 cifre:

0,1011
0110

Dac numrul cifrelor nu este multiplu de 4, putem aduga n dreapta numrul


de cifre 0 necesar (dac punem oricte cifre de 0 n dreapta unui numr
zecimal, valoarea sa nu se schimb).
Se scriu cifrele hexa corespunztoare:

0, B
6
1 2

Se obine astfel: 0,B6(16).


Prob:

0, B6(16)

11
6
11 16 6 182
91

2
16 16 2
256
128
16

1 0
1
1
0
1
1 26 24 23 2 1
2 3 4 5 6 7

2 2
2
2
2
2
2
27
64 16 8 2 1 91

.
128
128

0,1011011( 2 )

Care este mecanismul ce ne permite s realizm att de simplu conversia?


1
0
1
1
0
1
1
0

2 22 23 24 25 26 27 28
1
0
1
1
1 0
1
1
0 23 2 1 1
22 2
2 3 4 4 2 3 4

2 2
2 2
2
2
2
2
2
24
24
24
11 1
6 11
6

0, B 6 ( 16 )
16 16 16 16 16 2
0,1011011( 2 ) 0,10110110 ( 2 )

Raionamentul se poate generaliza cu uurin.

8
www.ls-infomat.ro | www.manuale-de-informatica.ro

Dar care este motivul pentru care nvm s facem conversii directe ale
numerelor din baza 2 n baza 16 i invers?
Exist dou motive:

Un numr, natural sau zecimal se convertete mult mai repede n baza 16


dect n baza 2. Prin urmare, dac se cere conversia unui numr din baza 10
n baza 2 vom converti numrul n baza 16 i pe acesta, la rndul lui, l
convertim n baza 2. ncercai!

Un numr n baza 16 este scris concentrat (are mai puine cifre). Din acest
motiv, cu rare excepii, vom scrie numerele numai n baza 16.

4. Reprezentarea numerelor reale n baza b


Reprezentarea n binar a numerelor reale se face astfel:

se reprezint partea ntreag;


se reprezint partea zecimal;

se scrie numrul aa cum am fost obinuii n baza 10:


semnul (+,-);
partea ntreag;
virgul (sau punct);
partea zecimal.

Exemplu: pentru -23,125(10), vom avea:


1. n binar:
23(10)=10111(2);
0,125(10)=0,001(2);
-23,125(10)= -10111,001(2);
2. n baza 16:
23(10)=17(16);
0,125(10)=0,2(16);
-23,125(10)=-17,2(16).

9
www.ls-infomat.ro | www.manuale-de-informatica.ro

Probleme propuse
1. S se converteasc n bazele 2 i 16 numerele: 7, 25, 100, 1000, toate
n baza 10. Pentru fiecare conversie s se fac proba, reconvertind numrul n
baza 10.
2. S se converteasc n bazele 2 i 16 numerele din baza 10: 0,5, 0,25,
0,100, 0,625. Pentru fiecare conversie s se fac proba reconvertind numrul n
baza 10.
3. S se converteasc n baza 2 prin conversia iniial n baza 16 numerele
din baza 1234, 0,525, 0,256, 0,67, 9,625, -673,89. Pentru fiecare conversie
s se fac proba reconvertind numrul n baza 10.
4. S se converteasc n baza 2 perechile de numere de mai jos, dup care
s se adune n baza 2:

123, 87;
2345, 9864;
1978, 1024.

5. Scriei un program care citete un numr natural scris n baza 2 i


afieaz numrul n baza 10. Iniial, programul citete numrul de cifre binare. Nu
se vor folosi vectori (de altfel, nici nu au fost predai). Exemplu. Dac se citete 3 i
110, se afieaz 6.
6. Scriei un program care citete un numr pozitiv scris n baza 2 i
afieaz numrul n baza 10. Iniial, programul citete numrul de cifre aflate
naintea virgulei, apoi numrul de cifre aflate dup virgul.
Exemplu. Dac se citesc 3 2 i 110,11 se afieaz 6.75.
7. Scriei un program care citete un numr natural n baza 10 i afieaz
numrul de cifre binare pe care le are numrul convertit n baza 2. Exemplu: dac
se citete 8, se afieaz 4, pentru c 8(10)=1000(2).
8. S se scrie un program care citete dou numere naturale n i b10.
Programul va afia:

da, dac numrul n poate fi considerat n baza b;


nu, dac numrul n nu poate fi n baza b.

Exemple:

n=123, b=5. Programul afieaz da.


n=123, b=3. Programul afieaz nu.

10
www.ls-infomat.ro | www.manuale-de-informatica.ro

9. Se citesc:

n, numr natural;
a10, baza n care este dat numrul n;
m, un numr natural;
b, baza n care este dat numrul m.

Programul va afia maximul dintre m i n. Se consider c datele sunt


introduse corect.
10. Se citesc un numr natural n i o baz b9. S se afieze numrul
maxim rezultat prin eliminarea unor cifre ale lui n, astfel nct acesta s poat fi n
baza b. Exemple:

Dac se citete n=185 i b=6, programul afieaz 15;


Dac se citete n=185 i b=9. programul afieaz 185;
Dac se citete n=185 i b=2. programul afieaz 1.

11. Se citete n, un numr natural. S se afieze cea mai mic baz n care
poate fi n.
Exemplu. Dac se citete 125, se afieaz 6.
12. Se citete n, un numr natural. Fie b baza minim n care poate fi
considerat n. Care este valoarea lui n n baza 10?
13. Se citete n, un numr natural. Fie b baza minim n care poate fi
considerat n. Care este valoarea lui n n baza 10, dac se consider, pe rnd, n
bazele b, b+1,.....9? Ce observai? {irul valorilor astfel obinute este descresctor
sau cresctor?
14. Se citesc dou numere naturale x i y. Care este baza n care trebuie s
fie x i care este baza n care trebuie s fie y astfel nct diferena x-y s fie
minim? Dar maxim?
15. Se citesc 3 numere a, b, c. Se cere s se precizeze dac exist 3 baze
mai mici sau egale cu 16 n care pot fi numerele a, b, c atfel nct a=b+c. n caz
afirmativ, se vor afia bazele.
Exemplu. a=10000, b=10, c=13. Programul afieaz: Da.

dac a este n baza 2, atunci 10000(2)=16(10)


dac b este n baza 3, atunci 10(3)=3(10).
dac c este n baza 10, atunci c=13(10).
a=b+c pentru c 16=3+13.

Programul afieaz 2, 3, 10.

11
www.ls-infomat.ro | www.manuale-de-informatica.ro

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