Transformarea unui număr din baza 10 în baza 2 în C++
Dându-se un număr natural n
în baza 10
, vrem să transformăm numărul dat în
baza 2
.
Exemplu: Pentru n = 14
, numărul în baza 2
este 1110
.
Ce este o bază de numerație?
Pentru a înțelege cum se convertește un număr din baza 10
în baza 2
,
trebuie să înțelegem ce este o bază.
O bază de numerație reprezintă numărul de semne distincte necesare scrierii unui număr.
Mai exact, pentru a scrie un număr într-o bază b
, ne vom folosi de b
simboluri. Pentru baza pe care o folosim noi zilnic, baza 10
, avem cele 10
cifre: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
.
Pentru a număra într-o bază de numerație, luăm cifrele pe rând, iar când
ajungem la final, adunăm 1
la următoarea cifră. Pentru baza 10
, avem
primele 10
numere 0, 1, 2, …, 8, 9
, după care cifra revine la 0
și
adunăm 1
la următoarea cifră: 10
. Procesul acesta continuă la infinit.
Despre baza 2
Când numărăm în baza 2
, având doar cifrele 0
și 1
, vom începe cu
acestea, după care continuăm să numărăm astfel: 0, 1, 10, 11, 100, 101, 110, 111, …
.
Cum transformăm un număr din baza 10
în baza 2
?
Având numărul nostru n
în baza 10
, pentru a-l transforma în baza 2
, îl
vom împărți pe n
repetat la 2
, luând resturile sale pe rând. Iată un
exemplu, pentru n = 174
:
Implementare C++
Cunoscând regulile menționate mai devreme, implementarea în C++ este mai jos.
Pentru a construi numărul, ne vom folosi de o variabilă p
, care are rolul de
a insera o cifră la finalul numărului. Puteți citi articolul despre cifrele
unui număr pentru a înțelege mai bine acest aspect.
#include <iostream>
using namespace std;
int main()
{
//Declarăm și citim numărul în baza 10
int n;
cin >> n;
//Calculăm și afișăm numărul în baza 2
int raspuns = 0, p = 1;
while(n > 0) {
int restCurent = n % 2; //Cifra curentă, care este defapt restul împărțirii la 2
raspuns += p * restCurent; //Adăugăm cifra curentă la raspuns
p = p * 10; //Formăm puterea următoare
n = n / 2; //Îl înmulțim pe n la 2 pentru a găsi următoarele cifre
}
cout << raspuns;
return 0;
}
Bibliografie și alte resurse
DS
Autorul acestei lecții
Dominic Satnoianu
Această lecție a fost redactată de către Dominic Satnoianu.
© 2021 – 2025 Aspire Education Labs SRL. Toate drepturile rezervate.
Așa cum este specificat și în termeni și condiții, conținutul acestei pagini este protejat de legea drepturilor de autor și este interzisă copierea sau modificarea acestuia fără acordul scris al autorilor.
Încălcarea drepturilor de autor este o infracțiune și se pedepsește conform legii.
Comentarii 0