Sunteți pe pagina 1din 6

 ce facem cu baza 

16? Cele spuse mai sus conduc la ideea că cifrele trebuie să


fie 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 – resturile posibile la împărțirea
cu 16, dar apare o întrebare: Care sunt cifrele numărului 112 ? Are trei
(16)

cifre, 1, 1 și 2? Are două cifre, 11 și 2 sau 1 și 12? Este o situație confuză,


inacceptabilă, astfel că, pentru cifrele cu valorile 10 11 12 13 14 15 se folosesc
următoarele notații:
o 10 se notează cu A (sau a)
o 11 se notează cu B (sau b)
o 12 se notează cu C (sau c)
o 13 se notează cu D (sau d)
o 14 se notează cu E (sau e)
o 15 se notează cu F (sau f)
 cu convențiile de mai sus, situația numărului 112  este clarificată: are trei
(16)

cifre, 1, 1 și 2. Dacă dorim să scriem numărul cu două cifre cu valorile 11 și 2,


vom avea: B2 .(16)

Transformarea din baza 10 în baza b


Cum transformăm un număr oarecare n din baza 10 într-o bază oarecare, b? Algoritmul
de transformare este foarte asemănător cu cel de determinare a cifrelor în baza 10. De
fapt, este chiar identic, doar că baza nu este 10, ci b. Mai exact:

 împărțim numărul n la b. Obținem un cât și un rest;


 împărțim câtul la b. Obținem un cât și un rest;
 împărțim noul cât la b și obținem un cât și un rest;
 continuăm împărțirile până când obținem câtul 0;
 resturile obținute, scrise în ordinea inversă obținerii, reprezintă scrierea în
baza b a lui n.

Exemplu: să transformăm numărul 24 din baza 10 în baza 2. Efectuăm împărțirile:

24:212:26:23:21:2=12 rest 0=6 rest 0=3 rest 0=1 rest 1=0 rest 124:2=12 rest 0
12:2=6 rest 06:2=3 rest 03:2=1 rest 11:2=0 rest 1

Scriem resturile în ordine inversă și obținem: 24 (10) = 11000 . Să observăm că am


(2)

obținut cifrele în ordinea inversă față de poziția lor în număr!!

Cu folosim această transformare într-un program? Dacă dorim să afișăm cifrele


reprezentării în baza b, le putem afișa în ordinea determinării. Pentru a le afișa în
ordinea din număr ar trebui să le stocăm pe toate într-o structură de date convenabilă –
de exemplu un tablou. De asemenea, le putem număra, aduna, determina maximul, etc.

Secvența C++ de mai jos determină cea mai mare cifră a reprezentării în baza b a
numărului n.

cmax = 0;
cin >> n >> b;
while(n)
{
int cif= n % b;
if(cif > cmax)
cmax = cif;
n /= b;
}

Transformarea din baza b în baza 10


Pentru transformarea numărului ckck−1…c1c0(b)ckck−1…c1c0(b) din baza b în
baza 10 folosim formula ckck−1…c1c0(b)=ck⋅bk+ck−1⋅bk−1+…+c1⋅b+c0ckck−1…
c1c0(b)=ck⋅bk+ck−1⋅bk−1+…+c1⋅b+c0, în care operațiile de adunare, înmulțire și ridicare
la putere se fac în baza 10. De fapt această formulă este echivalentă cu reprezentarea
zecimală a numerelor, de
exemplu: 253(10)=2⋅102+5⋅101+3⋅100253(10)=2⋅102+5⋅101+3⋅100.
Exemplu

11000(2)=1⋅24+1⋅23+0⋅22+0⋅21+0⋅20=1⋅16+1⋅8=16+8=2411000(2)=1⋅24+1⋅23
+0⋅22+0⋅21+0⋅20=1⋅16+1⋅8=16+8=24

Algoritmul: Să presupunem că se citește baza b, numărul n de cifre ale numărului în


baza b, apoi cifrele. Determinarea reprezentării în baza 10 este:

cin >> b >> n;


int rez = 0;
for(int i =1 ; i <= n ; i ++)
{
int x;
cin >> x;
rez = rez * b + x;
}
cout << rez;

Transformarea din baza b în baza d


De regulă, pentru transformarea dintr-o bază oarecare b într-o bază oarecare d se
folosește ca “bază de manevră” baza 10. Mai exact:

 se dă un număr x în baza b
 se transformă numărul x din baza b în baza 10 și se obține un număr y
 se transformă numărul y din baza 10 în baza d și se obține rezultatul final
Transformări intre baze puteri ele lui 2
Un caz particular îl constituie transformările între baza 2 și altă bază care este putere a
lui 2. De exemplu, să analizăm reprezentările în bazele 22 și 1616 ale
numărului 2018(10)2018(10):

 16=2416=24
 2018(10)=7E2(16)2018(10)=7E2(16)
 2018(10)=11111100010(2)2018(10)=11111100010(2)
 dacă grupăm cifrele din
baza 2 câte 4 (deoarece 16=2416=24), 2018(10)=11111100010(2)=111.111
0.0010(2)2018(10)=11111100010(2)=111.1110.0010(2)
 dacă transformăm fiecare grupă din baza 2 în baza 16 vom obține:
o 111(2)=7(16)111(2)=7(16)
o 1110(2)=E(16)1110(2)=E(16)
o 0010(2)=2(16)0010(2)=2(16)

Vom proceda astfel, pentru transformarea din baza 22 în baza 2p2p:

 numărul în baza 2 se împarte în grupe de câte pp cifre. Prima grupă poate fi


incompletă.
 transformăm fiecare grupa în baza 2p2p, de la sfârșit spre început, obținând câte
o cifră.
 transformăm fiecare grupă de cifre din baza 22 în baza 1616.
 scriem rezultatul în baza 1616.

Cum facem transformarea inversă, din baza 16 în baza 2?

 transformăm fiecare cifră a numărului din baza 16 în baza 2. Vom obține pentru
fiecare cifră un șir cu cel mult 4 biți.
 dacă un șir conține mai puțin de 4 biți, îl completăm cu zerouri nesemnificative, cu
excepția primului grup (corespunzător primei cifre)
 scriem șirurile de biți în ordine, obținând reprezentarea în baza 2

Exemplu: Transformăm numărul 7E2(16)7E2(16) în baza 2:

 transformăm cifrele din baza 16 în baza 2


o 7(16)=111(2)7(16)=111(2) – este prima cifră, nu completăm cu zerouri
o E(16)=1110(2)E(16)=1110(2) – are patru cifre, nu completăm cu zerouri
o 2(16)=10(2)=0010(2)2(16)=10(2)=0010(2) – are doar două cifre;
completăm cu două zerouri la început, pentru a obține patru cifre
 scriem reprezentarea în baza 2:
o 7E2(16)=11111100010(2)
Se dă numărul natural n. Calculați 2 , apoi afișați rezultatul în baza 2.
n

Cerința
Se dă numărul natural n. Calculați 2 , apoi afișați rezultatul în baza 2.
n

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieșire
Programul va afișa pe ecran numărul 2 , conform cerinței.
n

Restricții și precizări

 0 ≤ n ≤ 1000

Exemplu
Intrare

Ieșire

10

Explicație
21 = 2 = 10(2).

Se citește un număr natural n. Să se determine câte cifre 0 și câte cifre 1 are reprezentarea


în baza 2 a acestui număr.
Cerinţa
Se citește un număr natural n. Să se determine câte cifre 0 și câte cifre 1 are reprezentarea în
baza 2 a acestui număr.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieşire
Programul afișează pe ecran numerele Z și U, separate printr-un spațiu, reprezentând numărul
cifrelor 0, respectiv al cifrelor 1 din reprezentarea în baza 2 a lui n.

Restricţii şi precizări

 1 ≤ n ≤ 1.000.000.000

Exemplu
Intrare

174

Ieșire

3 5

Explicație
Reprezentarea în baza 2 a lui 174 este 10101110.
Cerința
În baza 16, cifrele unui număr pot fi 0, 1, 2, …, 9, A, B, C, D, E, F. Fiind dat n un număr
natural, afișați scrierea lui n în baza 16.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieșire
Programul va afișa pe ecran scrierea în baza 16 a numărului n.

Restricții și precizări

 1 ≤ n ≤ 2.000.000.000

Exemplu
Intrare

3024

Ieșire

BD0

Explicație
3024 : 16 = 189 rest 0; 189 : 16 = 11 rest 13; 11 : 16 = 0 rest 11. Cum 11 = B, 13
= D, 0 = 0, rezultă BD0.

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