Contact și feedback

Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.


Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.


Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.

Shortcuturi

Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.

Generale

Meniu shortcuturi?
Căutare probleme sau utilizatori/
Navigare printre rezultatele căutării↑, ↓
Meniu de contact și feedbackCTRL + Shift + F
Ieșire din meniuriEsc

Editor probleme

Setări editorCTRL + Shift + S
Schimbare stil editorCTRL + Shift + E
Șabloane de codCTRL + Shift + 1/2/3
Golire editorCTRL + Shift + 4

Transformarea unui număr din baza 2 în baza 10 în C++

Dându-se un număr natural n în baza 2, vrem să transformăm numărul dat în baza 10.

Exemplu: Pentru n = 1110, numărul în baza 10 este 14.

Ce este o bază de numerație?

Pentru a înțelege cum se convertește un număr din baza 2 în baza 10, 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 2 în baza 10?

Având numărul nostru n în baza 2, pentru a-l transforma în baza 2, vom proceda astfel:

  1. Numerotăm cifrele, de la dreapta la stânga, începând cu 0;
  2. Calculăm, pentru fiecare cifră în parte, valoarea cif * 2^i, unde cif este cifra curentă, iar i reprezintă indicele de la numerotarea din pasul 1;
  3. Adunăm valorile create anterior.

Iată un exemplu, pentru n = 10101110:

https://i.ibb.co/wWdgvfb/image.png

Implementare C++

Cunoscând regulile menționate mai devreme, implementarea în C++ este mai jos. Deoarece parcurgem cifrele de la dreapta la stânga, este foarte ușor să calculăm 2^i pentru fiecare număr în parte.

#include <iostream>

using namespace std;

int main()
{
    //Declarăm și citim numărul în baza 2
    int n;
    cin >> n;

    //Calculăm și afișăm numărul în baza 10
    int raspuns = 0, doiLai = 1;
    while(n > 0) {
        int cifraCurenta = n % 10; //Cifra curentă, de 0 sau de 1
        raspuns += cifraCurenta * doiLai; //Adunăm la răspuns cif * 2^i, cum am menționat mai devreme
        doiLai *= 2; //Cum i crește, 2^i se va înmulți cu 2.
        n /= 10;
    }
    cout << raspuns;
    return 0;
}

Bibliografie și alte resurse

Cuprinsul lecției

Se încarcă…

Citește și

Verifică dacă o literă este mică sau mare în C++Indicatorul lui Euler în C++Suma elementelor unui vector recursiv în C++Citește un șir de caractere cu spații în C++Suma divizorilor numerelor de la 1 la N (Folosind ciurul lui Eratostene)De ce cer unele probleme răspunsul modulo 666013 sau modulo 1.000.000.007?Distanța dintre două puncte în C++Vectori de frecvență (de apariții) în C++Ce este o variabilă unsigned în C++?Matrice în C++. Declararea și parcurgerea tablourilor bidimensionaleVerifică dacă un caracter este cifră în C++Vectorii în C++: declarare și parcurgereNumărul de cifre ale factorialului unui numărAl N-lea termen dintr-o progresie geometricăCum să afișezi partea întreagă a unui număr real în C++CMMMC a două numere în C++ (cel mai mic multiplu comun)Ciurul lui Eratostene în C++Verificarea unui an bisect în C++Numărul de divizori al unui număr în C++Afișarea divizorilor primi ai unui număr în C++Cifrele unui număr. Prelucrarea cifrelor unui număr în C++Generarea șirului Fibonacci generalizat în C++Cum să calculezi instant 2 la puterea N în C++Valoarea absolută (modulul) unui număr în C++Câte numere naturale sunt într-un interval dat? (C++)Șiruri de caractere în C++. Tot ce trebuie să știiAria unui triunghi folosind coordonatele acestora în C++Instrucțiunea for (structuri repetitive)Operații cu numere mari în C++ - Toate funcțiile explicateTipuri de date în C++: numere întregi, reale, caractere și alteleFactorialul unui număr în C++Transformarea unui număr din baza 10 în baza 2 în C++Sortare crescătoare recursivă în C++ - Merge sort și Bubble sortVerifică dacă un număr aparține șirului Fibonacci în C++Transformarea unui număr din baza 2 în baza 10 în C++Cel mai puțin semnificativ bit în C++Al N-lea termen Fibonacci în C++Verifică dacă un număr dat este o putere de 2 în C++Cifra maximă a unui număr recursiv în C++Numărul permutărilor în C++ (formula permutărilor)Al N-lea termen dintr-o progresie aritmeticăComentarii în C++Cel mai frecvent element dintr-un șir în C++Codul ASCII (tabel complet)Instrucțiunea do while (structuri repetitive)Funcții în C++. Ce sunt subprogrameleMateria pentru olimpiada de informatică - tot ce trebuie să știiCel mai semnificativ bit în C++Matrice pătratice în C++. Diagonala principală și secundarăMaximul și minimul a două valori în C++Ce înseamnă variabilă globală și locală în C++?Ce înseamnă endl în C++?Citirea și afișarea matricelor în C++Verificare număr prim în C++ (Clasa a IX-a)Indicatorul lui Euler al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Recursivitate în C++Tutorial instalare CodeBlocks (ușor) - Introducere în informatică C++Maximul și minimul a n valori în C++Află secolul unui an citit de la tastatură în C++Verifică dacă trei puncte sunt coliniare C++Cifra maximă și minimă a unui număr în C++Combinatorică în C++: permutări, aranjamente, combinări și alteleCMMDC recursiv a două numere naturale în C++Oglinditul unui număr în C++Oglinditul recursiv al unui număr în C++Verifică dacă o literă este vocală în C++Structuri repetitive (while, do while, for, etc)Complexitatea unui algoritm (timp și spațiu) în C++Verificare dacă șir de caractere este palindrom în C++Cum să citești și să afișezi în fișiere în C++Aflarea sumei primelor N sume GaussMediana unui șir de valori în C++Prima cifră a unui număr în C++Instrucțiunea while (structuri repetitive)Numere triunghiulare. Verificarea unui număr triunghiularSuma 1 + 2 + 3 + ... + N în C++Numărul de apariții al unui număr într-un vector în C++Căutare binară în C++Numărul aranjamentelor în C++ (formula aranjamentelor)Aplicații cu ciurul lui Eratostene în C++: suma divizorilor, numărul divizorilorVectorii în C++: citire și afișareInterschimbarea a două variabile în C++ (3 metode)Cifra de control a unui numărInversarea unui vector în C++Algoritm recursiv pentru căutare binară (clasa a X-a)Verificare dacă un număr este palindrom în C++Tipul struct în C++. Ce sunt structurile de date neomogeneCe este o funcție void în C++?Verifică dacă un caracter este literă în C++Verifică dacă un număr este par sau impar fără modulo în C++Bordarea unei matrice în C++Calculul combinărilor de n luate câte k (nCk) în C++Interclasarea a doi vectori în C++Ridicarea la putere în timp logaritmic în C++. Exponențiere rapidăRădăcina cubică a unui număr în C++ (cube root)Maximul și minimul unui vector în C++Inversarea unui șir de caractere în C++Numărul minim de peroane pentru o gară în C++Cel mai mic număr cu suma cifrelor N în C++Instrucțiunea de decizie în C++: if, else, switch, caseTransformarea unei litere mici în literă mare în C++Instrucțiunea continue (structuri repetitive)Cea mai lungă secvență de elemente crescătoare în C++Cel mai mare divizor comun (CMMDC) a două numere în C++Șirul lui Fibonacci în C++Pointer în C++. Variabile de tipul char * (char steluță)Instrucțiunea break (structuri repetitive)Numărul de divizori al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Verifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++Numărul combinărilor în C++ (formula combinărilor)Funcții predefinite în C++ (matematice, șiruri de caractere)Aria și circumferința unui cerc în C++Matrice Fibonacci - al n-lea termen Fibonacci în timp logaritmicTransformarea unei litere mari în literă mică în C++Maximul și minimul a trei valori în C++Afișarea elementelor unui vector recursiv în C++Suma divizorilor unui număr în C++Suma numerelor naturale dintr-un interval dat în C++Divide et Impera (metodă de programare C++)Copiuțe: Cifrele unui numărRadicalul unui număr în C++ (rădăcina pătrată)Cel mai mic/mare divizor prim al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Do while vs while în C++ - Care e diferența?Numărul de divizori primi ai unui număr în C++

© Drepturi de autor

Echipa InfoAs își rezervă drepturile de autor pentru conținutul acestei pagini. Copierea conținutului fără acordul scris expres al InfoAs reprezintă o încălcare a Legii 8/1996 și va fi tratată ca atare.

Trimite lecția

Toată lecția

Doar videoclipul pe YouTube

Informatica devine ușoară cu InfoAs

Intră în cont