In tutorialul de astazi vom discuta despre convertirea unui numar din baza 10 in baza 2. Este un subiect ce ar trebuii studiat in clasa a IX-a in momentul cand impletati primele voastre probleme la informatica. De asemenea, am mai intalnit acest capitol abordat si in unele facultati de profil din tara noastra.
Ce este o baza de numeraţie?
Baza unui sistem de numerație se definește ca fiind numărul unităților de același ordin de mărime care formează o unitate de ordin imediat superior. Altfel spus, baza unui sistem de numerație reprezintă numărul de semne distincte necesare scrierii unui număr.
Sursa: Bază de numerație – Wikipedia
Pentru scrierea numerelor in baza 10 se folosesc cifrele: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Pentru scrierea numerelor in baza 9 se folosesc cifrele: 0, 1, 2, 3, 4, 5, 6, 7, 8.
Pentru scrierea numerelor in baza 8 se folosesc cifrele: 0, 1, 2, 3, 4, 5, 6, 7.
…
Pentru scrierea numerelor in baza 2 se folosesc cifrele: 0, 1.
Asadar, pentru scrierea numerelor intr-o baza oarecare b, se vor folosii cifre cuprinse de la 0 la b – 1.
Atentie: Pe parcursul aniilor o sa intalniti si alte baze de numeratie, cum ar fi baza 11 (sau mai comun in informatica – baza 16). Aceste baze folosesc toate cifrele disponibile in baza 10 (0 -> 9) precum si litere din alfabet (A – Z). Baza 16 foloseste urmatoarele simboluri: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Convertirea unui numar din baza 10 in baza 2
Inainte de a trece la prezentarea algoritmului vom aplica metoda matematica pentru a convertii un numar din baza 10 in baza 2. Vom lua spre exemplu numarul 420.
Procedeul de lucru este urmatorul:
- Impartim numarul nostru la 2 (deoarece vrem sa il convertim in baza 2). Daca doream sa il convertim in baza 5 atunci imparteam totul la 5.
- Impartim pana in momentul in care rezultatul devine 0.
- Dupa ce am terminat de impartit, luam toate resturile in ordine inversa si scriem numarul obtinut.
Convertirea unui nr din baza 10 in baza 2 in C++
Pentru a construii numarul invers ne vom folosii de o variabila “putere” ce o vom inmultii cu 10 de fiecare data cand efectuam o impartire, pentru a putea “face loc” unei cifre noi”.
#include <iostream> using namespace std; int main() { int nr, rezultat = 0, putere = 1; cin >> nr; while(nr != 0) { int rest = nr % 2; // 2 este baza in care vrem sa convertim rezultat = rezultat + rest * putere; putere = putere * 10; nr = nr / 2; } cout << rezultat; return 0; }
Convertirea unui numar din baza 2 in baza 10
Pentru a face operatia inversa, vom aplica operatia de inmultire (in loc de impartire).
Procedeul de lucru este urmatorul:
- Luam fiecare cifra (incepand de la stanga la dreapta) pe rand
- Inmultim rezultatul precedent cu 2 (deoarece convertim numarul din baza 2)
- Adunam cifra curenta la ceea ce am obtinut la pasul 2
Convertirea unui nr din baza 2 in baza 10 in C++
De data aceasta nu mai putem aplica procedeul matematica cu la fel de multa usurinta, asadar apelam la un mic truc si parcurgem numarul de la ultima cifra catre prima cifra.
#include <iostream> using namespace std; int main() { int nr, rezultat = 0, putere = 1; cin >> nr; while(nr != 0) { int cifra = nr % 10; rezultat = rezultat + cifra * putere; putere = putere * 2; nr = nr / 10; } cout << rezultat; return 0; }