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

Obține medalia mult dorită. Devino As la olimpiadă.

Curs complet de olimpiadă, pregătit de olimpici de la Oxford și TU Delft.

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