Sunteți pe pagina 1din 11

1

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


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 10 3 10 5 10 4
3 2
= + + +
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:
. 0 2 1
2 0 2 1 2 0 2 0 2 1 2 0 2 1 2 0 2 1 1354
1
2 3 4 5 6 7 8 9 10
+ +
+ + + + + + + + + =

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 7 9 6 9 4
3 2
= + + +
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.


2
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.







rest cat
rest cat
rest cat
rest cat
rest cat
rest cat
rest cat
1 0 2 1
1 1 2 3
1 3 2 7
1 7 2 15
0 15 2 30
0 30 2 60
1 60 2 121
+ =
+ =
+ =
+ =
+ =
+ =
+ =

Scriind resturile n ordine invers avem: 1111001
(2)
=121
(10)
.
Prob: 1 2 1 2 1 2 1 2 0 2 0 2 1 121
6 5 4 3 2
+ + + + + + =
Scriind resturile n ordine invers obinem numrul n baza 2: 1111001.
2. Scriem numrul 121
(10)
n baza 3.





rest cat
rest cat
rest cat
rest cat
rest cat
1 0 3 1
1 1 3 4
1 4 3 13
1 13 3 40
1 40 3 121
+ =
+ =
+ =
+ =
+ =

Scriind resturile n ordine invers obinem 121
(10)
=11111
(3)
.
1 3 1 3 1 3 1 3 1 3 81 27 9 3 1 121
4 3 2 0
+ + + + = + + + + =


3
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 0 1
= +
= +
= +

Scriind resturile n ordine invers obinem: 121
(10)
=171
(8)

1 8 7 8 1 121
2
+ + =
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 b a b a b a b a
unde a a a a b
n
n
n
n
n
n
n
= + + + + +
e


1
1
2
2
1
1
0
0 1 2
012 1
... ,
, , , ,... { , , ,... }.

adic s gsim coeficienii a
i
ai diverselor puteri ale numrului b. Coeficienii
a
i
reprezint cifrele cu ajutorul crora se formeaz numrul. Acesta este:
0 1 2 1
... a a a a a
n n n

Pentru a afla coeficienii a
i
, procedm ca mai jos:
a
0
este restul mpririi lui N la b. Motivul?
N=b(a
n
b
n-1
+a
n-1
b
n-2
+a
n-2
b
n-3
+...+a
1
)+a
0
,

a
0
0,1,2,...,b-1
reinem ctul mpririi lui N la b (N
1
):
N
1
= a
n
b
n-1
+a
n-1
b
n-2
+a
n-2
b
n-3
+...+a
1
;
a
1
este restul mpririi lui N
1
la b
N
1
=b(a
n
b
n-2
+a
n-2
b
n-3
+...+a
2
)+a
1
.


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

reinem ctul mpririi lui N
1
la b (N
2
);
N
2
= a
n
b
n-2
+a
n-2
b
n-3
+...+a
2
;
a
2
este restul mpririi lui N
2
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
10 16 0 10
= +
= +
= +
;
( );
( ).
F
A

Obinem: 2809
(10)
=AF9
(16)
.
Prob: AF9 10 16 15 16 9 2809
16
2
10 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:

0675
6
10
7
10
5
10
2 3
, = + +

Cum am putea izola cifrele sale?


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

Algoritmul este urmtorul:
0675 10 675 075 6
075 10 75 05 7
05 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:
...
4
4
3
3
2
2 1
+ + + + =

b
a
b
a
b
a
b
a
M
i s gsim coeficienii a
-1
, a
-2
,...,0,1,...,b, apoi s scriem 0,a
-
1
a
-2
a
-3
..., adic numrul n baza b.
Cum obinem coeficienii a
-i
?
Fie M numrul n baza 10.
a
-1
= Mb i M
1
=Mb pentru c:
M b a
a
b
a
b
M b a
M M b
a
b
a
b
= + + +
=
= = + +


1
2 3
2
1
1
2 3
2
...
[ ] ;
{ } ...

a
-2
= M
1
b i M
2
=M
1
b pentru c:
M b a
a
b
a
b
M b a
M M b
a
b
a
b
1 2
3 4
2
1 2
2 1
3 4
2
= + + +
=
= = + +


...
[ ] ;
{ } ...

Procedeul continu pn cnd partea fracionar este 0, sau pn scriem
numrul cu precizia dorit.


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

Exemple:
1. Convertim n baza 2 numrul 0,625
(10)
.
0625 2 1250 1250 1 1250 025
025 2 050 050 0 050 05
05 2 1 1 1 1 0
, , [ , ] {, } , ;
, , [ , ] { , } , ;
, [ ] {} .
= = =
= = =
= = =

Numrul obinut este 0,101
(2)
=0,625
(10)
.
Prob:
0101
1
2
0
2
1
2
1
2
1
8
0625
2
2 3
10
, , .
( ) ( )
= + + = + =

2. Convertim n baza 2 numrul 0,9
(10)
.
09 2 18 18 1 18 08
08 2 16 16 1 16 06
06 2 12 12 1 12 02
02 2 04 04 0 04 04
04 2 08 08 0 08 08
08 2 16 16 1 16 06
06 2 12 12 1 12 02
, , [ , ] {, } , ;
, , [ , ] {, } , ;
, , [ , ] {, } , ;
, , [ , ] { , } , ;
, , [ , ] { , } , ;
, , [ , ] {, } , ;
, , [ , ] {, } ,
= = =
= = =
= = =
= = =
= = =
= = =
= = = ;
, , [ , ] { , } ,
..........................................................
02 2 04 04 0 04 04 = = =

Observm c obinem un numr periodic i anume 0,1(1100).
3. Facem conversia n baza 16 a numrului 0,625
(10)
.
0625 16 100 10 10 10 0
10 16
. , ; [ ] { } .
( ) ( )
= = = = A
Avem 0,625
(10)
=0,A
(16)
.
4. Facem conversia n baza 16 a numrului 0,9
(10)
.
09 16 144 144 14 144 04
04 16 64 64 6 6 64 04
04 16 64 64 6 6 64 04
16
16
16
, , [ , ] { , } , ;
, , [ , ] { , } , ;
, , [ , ] { , } , ;
..........................................................................
( )
( )
= = = =
= = = =
= = = =
E

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


7
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.

1 2
1011 0101
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:

1 2
5B
Am obinut numrul natural 5B
(16).
Prob: 5B
(16)
=5*16+11=80+11=91
(10)
.
1011011=12
6
+02
5
+12
4
+12
3
+02
2
+12+1=64+16+8+2+1=91
(10)

Cum de am obinut rezultatul corect?
Avem: 12
6
+02
5
+12
4
+12
3
+02
2
+12+1=
02
7
+12
6
+02
5
+12
4
+12
3
+02
2
+12+1=
(02
3
+12
2
+02+1)2
4
+12
3
+02
2
+12+1=
52
4
+11=516+11=5B
(16)



8
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:

2 1
0110 1011 , 0
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:

2 1
6 , 0 B
Se obine astfel: 0,B6
(16).
Prob:
0 6
11
16
6
16
11 16 6
16
182
256
91
128
16
2 2
,
( )
B = + =
+
= =
01011011
1
2
0
2
1
2
1
2
0
2
1
2
1
2
2 2 2 2 1
2
64 16 8 2 1
128
91
128
2
2 3 4 5 6 7
6 4 3
7
,
.
( )
= + + + + + + =
+ + + +
=
+ + + +
=

Care este mecanismul ce ne permite s realizm att de simplu conversia?
01011011 010110110
1
2
0
2
1
2
1
2
0
2
1
2
1
2
0
2
1
2
0
2
1
2
1
2
1
2
0
2
1
2
1
2
0
2
2 2 1
2
1
2
2 2
2
11
16
1
16
6
16
11
16
6
16
0 6
2 2
2 3 4 5 6 7 8
2 3 4 4 2 3 4
3
4 4
2
4
2 16
, ,
,
( ) ( )
( )
= = + + + + + + + =
+ + + + + + +
|
\

|
.
|
=
+ +
+
+
=
+ = + = B

Raionamentul se poate generaliza cu uurin.


9
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).


10
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.


11
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.