← Retour au cours Entiers

Décimal → binaire

divisions

Diviser par 2, garder les restes, lire du dernier reste au premier.

13 // 2 → reste 1
LSB
quotient // 2
Répéter
Résultat
1101₂

Horner

O(k) mul

valeur = valeur×base + chiffre, de gauche à droite.

valeur = valeur * 2 + bit
Binaire → décimal
horner([1,1,0,1])
→ 13
Avantage
Pas de puissances de 2

💻 Exemples de code

Décimal → binaire (divisions successives)

decimal_vers_binaire.py
def decimal_vers_binaire(nombre):
    if nombre == 0:
        return "0"
    bits = []
    while nombre > 0:
        bits.append(str(nombre % 2))
        nombre //= 2
    return "".join(reversed(bits))

print(decimal_vers_binaire(13))  # 1101

Binaire → décimal (Horner)

horner.py
def horner(liste_chiffres, base=2):
    valeur = 0
    for chiffre in liste_chiffres:
        valeur = valeur * base + int(chiffre)
    return valeur

print(horner([1, 1, 0, 1]))  # 13

Somme pondérée (méthode directe)

somme_ponderee.py
def binaire_vers_decimal(liste_bits):
    total = 0
    for position, bit in enumerate(reversed(liste_bits)):
        total += int(bit) * (2 ** position)
    return total

print(binaire_vers_decimal([1, 0, 1, 1]))  # 11

📋 Aide-mémoire

Somme pondérée : N = Σ bi·2^i (directe mais coûteuse en puissances).