Documente Academic
Documente Profesional
Documente Cultură
Baze de Numeratie
Baze de Numeratie
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.