Sunteți pe pagina 1din 3

Conversii ntre baze de numeraie

Toate calculele pe care le efectum n ziua de azi sunt efectuate n sistemul de numerae
zecimal, sau altfel spus n baza 10 de numeraie. n continuare vom prezenta un algoritm simplu,
2,10
didactic, care realizeaz conversii de numere n una din bazele de numeraie b . n general
un numr scris n baza b are urmtoarea form general:
xn-1xn-2 ...x1x0, x-1x-2...x-m=
n 1

x b
im
i
i

x*bn-1+x*bn-2+ ...x*b1+x*b0+x*b-1+x*b-2+...x*b-m = ,

unde xi [0,b-1].
Exemplu: dac b=10 atunci numrul 123,45=1*102+2*101+3*100+4*10-1+5*10-2 .

Conversia din baza 10 n baza b


Trecerea unui numr de la o baz la alta presupune aflarea unei secvene unice de resturi
conform algoritmului urmtor:

numrul se mparte la baz i se reine restul obinut. Acesta constituie ultima


cifr din reprezentarea n acea baz;

ctul obinut n urma acestei prime mpriri este din nou mprit la baz i se
reine iarai restul. Acest rest constituie a doua cifr, n ordinea de la dreapta la
stnga, a reprezentrii n baza aleas.

algoritmul continu pn cnd ctul obinut este zero. Ultimul rest al mpririi la
baz va reprezenta cea mai semnificativ cifr a numrului n baza n care s-a
facut conversia.

Tabelul urmtor prezinta paii acestui algoritm pentru trecerea numarului 25 n baza 2:

Nr. baz

25:2= 25 2 (25)10=(11001)2

rest 1 12 2

0 6 2 Observaie:

0 3 2
pe fond galben sunt notate
1 1 2
cturile obinute la fiecare
1 0
mprire la baz

Pentru ascrie un algoritm care s realizeze aceast conversie vom proceda astfel:
o citim numrul de transformat
o citim baza n care dorim s facem conversia
o ncepem s mprim numrul dat la baz, iar cu resturile obinute formm un nou
numr(care de fapt va fi scris dup regula sistemului zecimal)

Algoritm n pseudocod:

//conversia din baza 10 n baza b din [2,10]


citete n,b // numere naturale, n-numrul de transformat, b-baza
m=0 // va conine rezultatul conversiei
p=1 // puterile lui 10 iniial 100=1
ct timp n0 execut
r=n%b // calculez restul mpririi numrului la baz
m=m+r*p // formez valoarea noului numr
p=p*10 // cresc puterea lui 10
n=n/b // calculez ctul mpririi numrului la baz

scrie m // valoarea numrului n baza b

Aceast variant de algoritm este una didactic i se utilizeaz pentru conversii de


numere naturale relativ mici, valoarea variabilei p crete exponenial i nu poate depi 10 cifre.
Pentru numere mai mari se vor utiliza ali algoritmi i alte tipuri de date pe care vei studia mai
trziu.

Conversia din baza 10 n baza b


De exemplu dac baza de numeraie este 2 i valoarea numrului n=(110011) 2 atunci
transformarea lui n baza 10 se face astfel:

(110011)2=1*20+1*21+0*22+0*23+1*24+1*25=1+2+16+32=(51)10

Operaia de trecere a unui numr scris n baza b la baza 10 se realizeaz dup urmtorul
algoritm n pseudocod:

//conversia unui numr n scris baza b, n baza 10


citete n,b // n numrul de transformat, b baza n care este scris n
p=1 // b0=1
m=0 // va contine numarul n baza 10
ct timp n0 execut
c=n%10 // extrag cate o cifra din numarul dat
m=m+c*p // formez numarul adunnd cifrele extrase din n cu puteri ale
// bazei
p=p*b // cresc puterea bazei
n=n/10 // elimin ultima cifra din n

scrie m // valoarea numrului n baza 10

Pentru a realiza conversia unui numr din baza b1 n baza b2 vom proceda astfel:
o transformm numrul din baza b1 n baza 10;
o transformam numrul obinut anterior din baza 10 n baza b2.

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