Baza 2
Interpretezi și construiești reprezentări binare.
Reprezentarea numerelor și conversii între baza 10, baza 2 și alte baze.
Interpretezi și construiești reprezentări binare.
Convertești prin suma cifrelor înmulțite cu puteri ale bazei.
Convertești prin împărțiri succesive și resturi.
Verifici o conversie prin conversie inversă.
În ce ordine citim resturile obținute la conversia din baza 10?
Î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.
Calculăm suma cifră × puterea lui 2 corespunzătoare poziției. De exemplu, (1011)₂ = 1·2³ + 0·2² + 1·2 + 1 = 11.
Împărțim succesiv la b. Resturile obținute, citite de jos în sus, formează reprezentarea.
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.
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.
Care este valoarea lui 1010₂?
s = "1011"
n = 0
for c in s:
n = n * 2 + int(c)
print(n)n = int(input())
if n == 0:
print("0")
else:
rez = ""
while n > 0:
r = n % 2
rez = str(r) + rez
n //= 2
print(rez)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.
citește s
n ← 0
pentru fiecare cifră c din s execută
n ← n · 2 + c
sfârșit pentru
scrie nciteș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 rezOrdinea naturală a resturilor este inversul reprezentării finale.
Conversia lui 0 necesită tratare explicită, deoarece bucla while nu se execută.
În baza b sunt permise valori de la 0 la b−1.
O metodă sigură de verificare este să convertești rezultatul înapoi.
Împărțim succesiv 37 la 2 și păstrăm resturile.
| n | n % 2 | n // 2 |
|---|---|---|
| 37 | 1 | 18 |
| 18 | 0 | 9 |
| 9 | 1 | 4 |
| 4 | 0 | 2 |
| 2 | 0 | 1 |
| 1 | 1 | 0 |
Resturile citite invers sunt 100101, deci 37₁₀ = 100101₂.
n = int(input())
rez = ""
if n == 0:
rez = "0"
else:
while n > 0:
rez = str(n % 2) + rez
n //= 2
print(rez)Teste: 0, 1, 2, 4, 8, 16, 37 și un număr care nu este putere a lui 2.
100101₂ = 32 + 4 + 1 = 37, deci conversia este corectă.
converteste(n, baza) pentru 2 ≤ baza ≤ 16.bin(n) cu algoritmul construit de tine.Realizează o aplicație care oferă conversii 10→2, 2→10, 10→8, 10→16 și 16→10.
Recitește explicațiile și verifică rezultatele înainte de a marca lecția.