Teoriechevron_rightSisteme de Numerație. Conversii Baza 2 ↔ Baza 10

Teorie: Sisteme de Numerație. Conversii Baza 2 ↔ Baza 10

Transformarea din binar în zecimal (suma puterilor) și din zecimal în binar (împărțirea repetată).

Nivel: Începătorschedule 30 min

calculateSisteme de Numerație (Baza 2 și Baza 10)

În viața de zi cu zi folosim Sistemul Zecimal (Baza 10), bazat pe 10 cifre: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Totuși, calculatoarele funcționează la nivel fizic cu întrerupătoare (curent "oprit" sau "pornit"), de aceea folosesc Sistemul Binar (Baza 2), care are doar două cifre: 0 și 1.

Un exercițiu foarte clasic (inclusiv la examene/teste) este trecerea unui număr din baza 2 în baza 10 și invers.

arrow_forward1. Conversia din Binar (Baza 2) în Zecimal (Baza 10)

Pentru a transforma un număr din baza 2 în baza 10, folosim regula dezvoltării în sumă de puteri ale bazei. Pe scurt: înmulțim fiecare cifră a numărului binar cu 2poziție, începând cu poziția 0 de la dreapta la stânga.

Exemplu: Transformăm numărul binar 1101 în zecimal

Poziția (Puterile lui 2)3210
Cifrele Binare1101

Calcul:

= (1 × 23) + (1 × 22) + (0 × 21) + (1 × 20)

= (1 × 8) + (1 × 4) + 0 + (1 × 1)

= 8 + 4 + 0 + 1

= 13 (în baza 10)

Sfat practic: Scrieți de la dreapta la stânga puterile lui 2 sub cifrele binare: 1, 2, 4, 8, 16, 32... și apoi pur și simplu adunați puterile care au cifra 1 deasupra lor!

arrow_back2. Conversia din Zecimal (Baza 10) în Binar (Baza 2)

Cea mai sigură metodă este împărțirea repetată la 2. Împărțim numărul la 2, reținem restul (care va fi mereu 0 sau 1), iar noul număr devine câtul. Repetăm procesul până când câtul ajunge 0. La final, citim resturile de jos în sus (în ordine inversă).

Exemplu: Transformăm numărul zecimal 25 în binar

25 : 2 = 12, rest 1 ⬆️ (ultima cifră)

12 : 2 = 6, rest 0 ⬆️

6 : 2 = 3, rest 0 ⬆️

3 : 2 = 1, rest 1 ⬆️

1 : 2 = 0, rest 1 ⬆️ (prima cifră)

Citind resturile de jos în sus, obținem:
25 (în baza 10) = 11001 (în baza 2)

rule3. Variabile și Expresii Logice

În C++, adevărul și falsul sunt reprezentate prin tipul de date bool. O variabilă booleană poate avea doar două valori: true (Adevărat, valoarea numerică 1) sau false (Fals, valoarea numerică 0). De fapt, în C++, orice număr diferit de 0 este considerat true, iar 0 este considerat false.

Operatori Logici Fundamentali

&&ȘI Logic (AND): Este true DOAR dacă amândouă expresiile sunt adevărate.
Ex: (x > 0 && x < 10) - x aparține intervalului (0, 10).
||SAU Logic (OR): Este true dacă cel puțin una dintre expresii este adevărată.
Ex: (n == 0 || n == 1) - n este fie 0, fie 1.
!NEGAȚIA Logică (NOT): Inversează valoarea (din true în false și invers).
Ex: !(x == 5) este echivalent cu x != 5.

verified4. Funcții Logice (care returnează bool)

O funcție logică este pur și simplu un subprogram care are tipul returnat bool. Aceste funcții sunt extrem de utile la examene pentru a scrie cod mai curat. De obicei, răspund la o întrebare de tip "DA sau NU".

Exemplu: Verificarea Parității

// Returnează true dacă n este par, false altfel
bool estePar(int n) {
  if (n % 2 == 0) {
    return true;
  } else {
    return false;
  }
}

// Utilizare (foarte elegantă):
if (estePar(10)) {
  cout << "E par!";
}

Exemplu: Funcția Prim (Bacalaureat)

// Funcție esențială la Subiectul III
bool estePrim(int n) {
  if (n < 2) return false;
  if (n == 2) return true;
  if (n % 2 == 0) return false;
  for(int d=3; d*d<=n; d+=2) {
    if (n % d == 0) return false;
  }
  return true;
}

warningCapcane frecvente la Bacalaureat

  • Puterile lui 2: Pentru a nu face greșeli la examene (subiectul 1 grilă), scrieți-vă clar pe ciornă primele puteri ale lui 2: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024.
  • Ordinea resturilor: La transformarea din Zecimal în Binar, o greșeală comună este să scrieți resturile de sus în jos. Amințiți-vă: întotdeauna de jos în sus!
  • Depășirea tipului int: Un număr zecimal mic (ex: 2000) poate genera un număr binar foarte lung care, stocat ca un int (ex: 11111010000), poate duce la overflow. Dacă implementați algoritmul zecimal->binar în cod, este mai sigur să stocați binarul ca un `long long` sau `string`.
syncSe încarcă statusul...