Documente Academic
Documente Profesional
Documente Cultură
Fie numărul natural 1354. Acesta poate fi scris după cum se vede:
1354 1 103 3 10 2 5 10 4
Spunem că numărul 1354 este în baza 10 (unica bază învăţată până acum)
şi notăm acest lucru astfel: 1354(10). Baza 10 nu este singura bază posibilă.
Dimpotrivă, orice număr natural b>1 poate fi bază. De asemenea, orice număr
natural poate fi scris în baza b.
Observăm că numărul se scrie prin utilizarea cifrelor (numere între 0 şi 9).
Numărul cifrelor cu ajutorul cărora este scris un număr în baza 10 este 10 - de la 0
la 9 sunt 10 cifre.
Numărul 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 numărul în baza 2: 10101001010 -am scris, în ordine,
coeficienţii puterilor bazei 2. Avem egalitatea 1354(10)= 10101001010(2)
Observăm că pentru scrierea unui număr în baza 2 se folosesc două cifre: 0
şi 1. Tot aşa, se scrie numărul 1354 în baza 9.
1354 1 9 3 7 9 2 6 9 4
Obţinem: 1764 (am scris coeficienţii puterilor lui 9) şi avem egalitatea:
1354(10)=1764(9).
În exemplele anterioare numărul a fost scris în aşa fel încât trecerea în baza
b să fie imediată. Dar cum a fost obţinută forma de început? De exemplu, cum a
fost scris numărul 1354 ca sumă de puteri ale lui 2? Întrebarea are sens pentru
că, dacă am avea răspunsul la ea, conversia ar fi imediată. Răspunsul este
complex, motiv pentru care va fi dat pe parcurs.
1
www.ls-infomat.ro | www.manuale-de-informatica.ro
Pentru început, prezentăm un algoritm care ne permite să convertim
numărul natural n(10), în baza b>1.
Atât timp cât n0:
împarte n la b.
în urma împărţirii, n reţine câtul şi afişăm restul.
Numărul în baza b se obţine scriind resturile în ordinea inversă obţinerii lor.
Exemple:
1. Convertim numărul 121 din baza 10 în baza 2.
121 2 60
1
cat rest
60 2 30
0
cat rest
30 2 15
0
cat rest
15 2 7 1
cat rest
7 2 3 1
cat rest
3 2 1 1
cat rest
1 2 0 1
cat rest
40 3 13
1
cat rest
13 3 4 1
cat rest
4 3 1 1
cat rest
1 3 0 1
cat rest
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 numărul 121(10) în baza 8.
121 8 15 1
15 8 1 7
1 8 01
Scriind resturile în ordine inversă obţinem: 121(10)=171(8)
1 8 2 7 8 1 121
Observaţie: atunci când scriem un număr în baza b, cifrele sale sunt între 0
şi b-1.
Exemple:
un număr în baza 10 are cifrele cuprinse între 0 şi 9;
un număr în baza 2 are numai cifre 0 sau 1;
un număr în baza 3 are cifrele cuprinse între 0 şi 2.
un număr în baza 8 are cifrele cuprinse între 0 şi 7.
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ă găsim coeficienţii ai ai diverselor puteri ale numărului b. Coeficienţii
ai reprezintă cifrele cu ajutorul cărora se formează numărul. Acesta este:
a n a n 1 a n 2 ...a1 a 0
Pentru a afla coeficienţii ai, procedăm ca mai jos:
a0 este restul împărţirii lui N la b. Motivul?
N=b(anbn-1+an-1bn-2+an-2bn-3+...+a1)+a0, a00,1,2,...,b-1
reţinem câtul împărţirii lui N la b (N1):
N1= anbn-1+an-1bn-2+an-2bn-3+...+a1;
a1 este restul împărţirii lui N1 la b
N1=b(anbn-2+an-2bn-3+...+a2)+a1.
3
www.ls-infomat.ro | www.manuale-de-informatica.ro
reţinem câtul împărţirii lui N1 la b (N2);
N2= anbn-2+an-2bn-3+...+a2;
a2 este restul împărţirii lui N2 la b
...
algoritmul continuă până când câtul obţinut este 0.
Apare o problemă. Să presupunem că vrem să convertim un număr din baza
10 într-o bază b>10. Evident, vom avea b cifre. Dar care sunt ele? Noi cunoaştem
numai pe cele de la 0 la 9. Atunci?
Pentru astfel de cazuri s-a făcut o convenţie: primele 10 cifre utilizate vor fi
cele de la 0 la 9, iar următoarele, î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.
Obţinem: 2809(10)=AF9(16).
Probă: AF 9 (16 ) 10 16 2 15 16 9 (10 ) 2809 (10 )
4
www.ls-infomat.ro | www.manuale-de-informatica.ro
Algoritmul este următorul:
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 până când partea fracţionară obţinută este 0.
Cum convertim un număr subunitar pozitiv (M) din baza 10 în baza b? Vom
nota prin x partea întreagă a numărului x şi prin x partea fracţionară a sa.
Exemplu: 1,2=1 şi 1,2=0,2.
Ideea este să scriem numărul M sub forma:
a 1 a 2 a 3 a 4
M 2 3 4 ...
b b b b
şi să găsim coeficienţii a-1, a-2,...,0,1,...,b, apoi să scriem 0,a-
1a-2a-3...,adică numărul în baza b.
Cum obţinem coeficienţii a-i?
Fie M numărul în baza 10.
a-1= Mb şi M1=Mb pentru că:
a 2 a 3
M b a 1 2 ...
b b
[ M b] a 1 ;
a 2 a 3
M 1 { M b} 2 ...
b b
a-2= M1b şi M2=M1b pentru că:
a 3 a 4
M 1 b a 2 2 ...
b b
[ M 1 b] a 2 ;
a 3 a 4
M 2 { M 1 b} 2 ...
b b
Procedeul continuă până când partea fracţionară este 0, sau până scriem
numărul cu precizia dorită.
5
www.ls-infomat.ro | www.manuale-de-informatica.ro
Exemple:
1. Convertim în baza 2 numărul 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.
Numărul obţinut este 0,101(2)=0,625(10).
1 0 1 1 1
Probă: 0,101( 2) 0,625(10) .
2 22 23 2 8
2. Convertim în baza 2 numărul 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] 0 {0,4} 0,4;
0,4 2 0,8 [0,8] 0 {0,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] 0 {0,4} 0,4
..........................................................
Observăm că obţinem un număr periodic şi anume 0,1(1100).
3. Facem conversia în baza 16 a numărului 0,625(10).
Avem 0,625(10)=0,A(16).
4. Facem conversia în baza 16 a numărului 0,9(10).
6
www.ls-infomat.ro | www.manuale-de-informatica.ro
Observaţie foarte importantă. Fiind dat un număr subunitar pozitiv M, cu un
număr finit de zecimale, la conversia sa în baza b>1, este posibil ca, datorită
periodicităţii, să rezulte un număr cu un număr de zecimale infinit. Din acest motiv,
algoritmul de conversie va trebui să primească ca dată de intrare numărul de
zecimale dorit. În cazul în care, în urma conversiei rezultă un număr cu mai puţine
zecimale, se completează cu numărul corespunzător 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 aproximaţie).
Fie numărul natural 1011011(2). Îl vom scrie în baza 16, fără să-l mai
trecem prin baza 10. Cum procedăm?
Mai întâi, separăm cifrele de la dreapta către stânga în grupe de 4.
0101
1011
2 1
5B
2 1
7
www.ls-infomat.ro | www.manuale-de-informatica.ro
Raţionamentul făcut pentru numărul de mai sus se poate generaliza cu
uşurinţă, pentru fiecare număr natural.
Invers. Fie numărul 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 asemănător 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 stânga către dreapta zecimalele în grupuri de 4 cifre:
0,1011
0110
1 2
11 6 11 16 6 182 91
0, B6(16)
16 16 2 16 2
256 128
1 0 1 1 0 1 1 26 24 23 2 1
0,1011011( 2 ) 2 3 4 5 6 7
2 2 2 2 2 2 2 27
64 16 8 2 1 91
.
128 128
Care este mecanismul ce ne permite să realizăm atât de simplu conversia?
1 0 1 1 0 1 1 0
0,1011011( 2 ) 0,10110110 ( 2 )
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
Raţionamentul se poate generaliza cu uşurinţă.
8
www.ls-infomat.ro | www.manuale-de-informatica.ro
Dar care este motivul pentru care învăţăm să facem conversii directe ale
numerelor din baza 2 în baza 16 şi invers?
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
10
www.ls-infomat.ro | www.manuale-de-informatica.ro
9. Se citesc:
n, număr natural;
a10, baza în care este dat numărul n;
m, un număr natural;
b, baza în care este dat numărul m.
Programul va afişa maximul dintre m şi n. Se consideră că datele sunt
introduse corect.
10. Se citesc un număr natural n şi o bază b9. Să se afişeze numărul
maxim rezultat prin eliminarea unor cifre ale lui n, astfel încât acesta să poată fi în
baza b. Exemple:
Dacă se citeşte n=185 şi b=6, programul afişează 15;
Dacă se citeşte n=185 şi b=9. programul afişează 185;
Dacă se citeşte n=185 şi b=2. programul afişează 1.
11. Se citeşte n, un număr natural. Să se afişeze cea mai mică bază în care
poate fi n.
Exemplu. Dacă se citeşte 125, se afişează 6.
12. Se citeşte n, un număr natural. Fie b baza minimă în care poate fi
considerat n. Care este valoarea lui n în baza 10?
13. Se citeşte n, un număr natural. Fie b baza minimă în care poate fi
considerat n. Care este valoarea lui n în baza 10, dacă se consideră, pe rând, în
bazele b, b+1,.....9? Ce observaţi? {irul valorilor astfel obţinute este descrescător
sau crescător?
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 încât diferenţa 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 încât a=b+c. În caz
afirmativ, se vor afişa bazele.
Exemplu. a=10000, b=10, c=13. Programul afişează: 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 afişează 2, 3, 10.
11
www.ls-infomat.ro | www.manuale-de-informatica.ro