Sunteți pe pagina 1din 2

Conversii

1. Cum „lipim” două numere? ( folosim asta in cele ce urmează)


ex: n1=1234, n2=56789, numarul rezultat prin „lipirea” lui n1 si n2 este n3=123456789
procedura este:
-numaram cifrele lui n2 (5 cifre)
-inmultim n1 cu 10 la puterea numarului de cifre ale lui n2 (1234*10^5=123400000)
-adunam acest rezultat cu n2 (123400000+56789=123456789)

2. Sistemul de numerație binar


- este compus din 2 cifre: 0 si 1. Fiecare 0 sau 1 reprezintă un bit (cifră binară- binary digit).
- este limbajul „natural” al calculatorului, ușor de reprezentat/codificat pentru ca poate modela simplu 2 stari: o
usa deschisa=1, o usa inchisa=0 dacă printr-un circuit trece curent notam 1, daca nu trece, notam 0; orientarea
unui magnet, etc
Conversia unui numar din baza 10 (cea folosita obisnuit de oameni) in baza 2:
se cunoaste: impartim la 2 pana cand numarul ajunge 0 si resturile in ordine inversa reprezinta numarul nostru
convertit in baza 2
ex: 16 scris in baza 2: 16(10)=10000(2)

cat rest #include <iostream>


using namespace std;
16:2= 8 0
int main()
8:2= 4 0 {
4:2= 2 0 int rest,n10;
2:2= 1 0 long long putere=1,n2=0;
1:2= 0 1 cout<<"Dati n=";
cin>>n10;
while(n10>0)
{
n2=n2+putere*(n10%2);
putere=putere*10;
n10=n10/2;
}
cout<<n2;
Atentie, n2 este tratat ca un numar in baza 10 de catre program si foarte usor poate depasi limita lui int.
Alternativ se poate declara un vector de dimensiunea necesara si stoca acolo digitii numarului in baza 2
Cum aflam dimensiunea vectorului?
O bază de numerație B cuprinde cifrele de la 0 la B-1. Frecvent folosite sunt B2 (cifrele 0,1) B8(cifrele
0,1,2,3,4,5,6,7) si B16 (cu simboluri 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f)

Conversia unui numar din baza 10 in baza b


Pentru a obtine reprezentarea numarului N10 in baza B, trebuie sa realizam un sir de impartiri repetate la B.
Fie N10=2490 si B=8
2490 impartit la 8 produce catul 311 si restul 2.
311 impartit la 8 produce catul 38 si restul 7
38 impartit la 8 produce catul 4 si restul 6
4 impartit la 8 produce catul 0 si restul 4
Luam resturile in ordine inversa si obtinem NB=4672.
Algoritmul este mai jos. Pentru constructia lui NB trebuie sa lipim fiecare rest in fata numarului NB.

citeste N10; Sa facem un program care citeste un numar in baza 10 si o baza de


NB=0; numeratie (de la 2 la 9) si converteste numarul in baza B
p10=1;
cat timp(N10!=0)
{
NB=NB+P10*(N10%B); https://www.pbinfo.ro/articole/5562/baze-de-numeratie#intlink-0
P10=P10*10;
N10=N10/B;
}
scrie NB
Conversia unui numar din baza b in baza 10

Un numar NB scris in baza B are “cifre” cu valori intre 0 si B-1. Problema noastra este sa transformam NB in N10
(în baza 10.)
Pentru aceasta sa observam:un numar in baza 10, ex: N10=2490 se scrie in forma canonica:
N10=2*10^3+4*10^2+9*10^1+0*10^0.
Fie NB=4672 scris in baza B=8. Pentru a converti NB in baza 10 trebuie sa il scriem in forma canonica.
NB=4*8^3+6*8^2+7*8^1+2*8^0. Adica calculam suma produselor cifrelor din NB cu puteri ale bazei B.
Se obtine N10=2490. Algoritmul este:
citeste NB, B;
N10=0;
PB=1;
executa{
N10=N10+(NB%10)*PB;
PB=PB*B;
NB=NB/10;
}cat timp (NB!=0);
scrie N10;
(https://mchelariu.wordpress.com/clasa-9-a-curs-de-informatica/)

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

(mai sunt si alte metode: https://www.pbinfo.ro/articole/5562/baze-de-numeratie#intlink-0 )


Deocamdata e bine atat.

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