fbpx

Transformarea unui numar din Baza 10 in Baza 2 in C++

de Mihai-Alexandru

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:

  1. 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.
  2. Impartim pana in momentul in care rezultatul devine 0.
  3. 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:

  1. Luam fiecare cifra (incepand de la stanga la dreapta) pe rand
  2. Inmultim rezultatul precedent cu 2 (deoarece convertim numarul din baza 2)
  3. 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;
}

 

Comentarii

S-ar putea sa iti placa