Python clasa a 9-a · Manual Python
Laborator Python
LECȚIE · CAPITOLUL 2

2.4. Baze de numerație

Reprezentarea numerelor și conversii între baza 10, baza 2 și alte baze.

REPREZENTARE
→
2 → 10
→
10 → BAZĂ
→
VERIFICARE
01
OBIECTIVE

La finalul lecției vei putea...

01

Baza 2

Interpretezi și construiești reprezentări binare.

02

2 → 10

Convertești prin suma cifrelor înmulțite cu puteri ale bazei.

03

10 → b

Convertești prin împărțiri succesive și resturi.

04

Verificare

Verifici o conversie prin conversie inversă.

✓
Checkpoint

În ce ordine citim resturile obținute la conversia din baza 10?

02
EXPLICAȚIE

Sisteme de numerație și conversii

2.1. Ce înseamnă baza?

În baza 10 folosim cifrele 0–9. În baza 2 folosim numai 0 și 1. Valoarea unei reprezentări depinde de cifre și de poziția lor.

2.2. Din baza 2 în baza 10

Calculăm suma cifră × puterea lui 2 corespunzătoare poziției. De exemplu, (1011)₂ = 1·2³ + 0·2² + 1·2 + 1 = 11.

2.3. Din baza 10 într-o bază b

Împărțim succesiv la b. Resturile obținute, citite de jos în sus, formează reprezentarea.

2.4. Generalizarea

Pentru 2 ≤ b ≤ 16 putem folosi cifrele 0–9 și, pentru valori de la 10 la 15, literele A–F. În implementarea de bază, conversiile cu cifre 0–9 pot fi realizate direct.

03
EXEMPLU INTUITIV

1101₂ este 13₁₀

Imaginează-ți patru poziții care valorează 8, 4, 2 și 1. Cifrele 1,1,0,1 selectează 8, 4 și 1.

8 + 4 + 0 + 1 = 13.

Activitate

Care este valoarea lui 1010₂?

04
PYTHON

Conversii construite pas cu pas

Baza 2 → baza 10

s = "1011"
n = 0
for c in s:
    n = n * 2 + int(c)
print(n)

Baza 10 → baza 2

n = int(input())
if n == 0:
    print("0")
else:
    rez = ""
    while n > 0:
        r = n % 2
        rez = str(r) + rez
        n //= 2
    print(rez)

De ce construim la începutul rezultatului?

Resturile apar de la cifra cea mai puțin semnificativă spre cea mai semnificativă. De aceea, fiecare rest nou este adăugat în fața rezultatului.

05
ALGORITM / PSEUDOCOD

Conversia 2 ↔ 10

Baza 2 → baza 10

citește s
n ← 0
pentru fiecare cifră c din s execută
    n ← n · 2 + c
sfârșit pentru
scrie n

Baza 10 → baza 2

citește n
rez ← șir vid
cât timp n > 0 execută
    r ← n mod 2
    rez ← r urmat de rez
    n ← n div 2
sfârșit cât timp
scrie rez
06
ATENȚIE!

Erori frecvente

Resturile se inversează

Ordinea naturală a resturilor este inversul reprezentării finale.

Cazul 0

Conversia lui 0 necesită tratare explicită, deoarece bucla while nu se execută.

Cifre permise

În baza b sunt permise valori de la 0 la b−1.

Verifică invers

O metodă sigură de verificare este să convertești rezultatul înapoi.

07
EXEMPLU REZOLVAT

37₁₀ în baza 2

Analiză

Împărțim succesiv 37 la 2 și păstrăm resturile.

nn % 2n // 2
37118
1809
914
402
201
110

Resturile citite invers sunt 100101, deci 37₁₀ = 100101₂.

Python

n = int(input())
rez = ""
if n == 0:
    rez = "0"
else:
    while n > 0:
        rez = str(n % 2) + rez
        n //= 2
print(rez)

Testare

Teste: 0, 1, 2, 4, 8, 16, 37 și un număr care nu este putere a lui 2.

Verificare

100101₂ = 32 + 4 + 1 = 37, deci conversia este corectă.

08
EXERCIȚII DE BAZĂ

Aplică direct

  1. Transformă 101₂ în baza 10.
  2. Transformă 1101₂ în baza 10.
  3. Transformă 10000₂ în baza 10.
  4. Transformă 5₁₀ în baza 2.
  5. Transformă 12₁₀ în baza 2.
  6. Transformă 20₁₀ în baza 2.
  7. Calculează 1011₂.
  8. Scrie un program pentru baza 2 → baza 10.
  9. Scrie un program pentru baza 10 → baza 2 fără bin().
  10. Verifică prin conversie inversă 37₁₀ = 100101₂.
09
EXERCIȚII DE APROFUNDARE

Generalizare și verificare

  1. Explică reprezentările binare ale puterilor lui 2.
  2. Determină câte cifre are un număr în baza 2.
  3. Scrie converteste(n, baza) pentru 2 ≤ baza ≤ 16.
  4. Transformă 156₁₀ în baza 8 și verifică.
  5. Transformă 254₁₀ în baza 16.
  6. Verifică dacă un șir este valid în baza 2.
  7. Realizează un program cu opțiunile 10→2 și 2→10.
  8. Compară bin(n) cu algoritmul construit de tine.
10
VERIFICARE

Verifică ce ai înțeles

11
MINI-PROIECT

Convertor de sisteme de numerație

MISIUNE

Construiește un convertor

Realizează o aplicație care oferă conversii 10→2, 2→10, 10→8, 10→16 și 16→10.

  1. Validează opțiunea și datele de intrare.
  2. Construiește algoritmii fără funcții de conversie gata făcute acolo unde cerința solicită algoritmul propriu.
  3. Testează 0, 1, puteri ale lui 2 și valori intermediare.
  4. Verifică rezultatele prin conversie inversă.

Criterii

Corectitudine40%
Algoritm25%
Interfață meniu15%
Testare20%

Ai terminat lecția?

Recitește explicațiile și verifică rezultatele înainte de a marca lecția.