Adloun

Calculer à la main la valeur décimale de et de

Exercice d'entraînement · niveau 1 (application) · NSI (première), chapitre 2 — Flottants, booléens et textes · Automatiser le développement binaire

Énoncé

Calculer à la main la valeur décimale de et de . Écrire ensuite vers_decimal(bits) qui le fait pour une chaîne de bits quelconque.

Corrigé

À la main. ; .


def vers_decimal(bits):
    """Valeur de 0,<bits> lu en base deux.

    Precondition : bits ne contient que des '0' et des '1'.
    Le bit de rang i (a partir de 0) pese 2**(-(i+1)).
    """
    x = 0.0
    for i, c in enumerate(bits):
        if c == "1":
            x = x + 2.0 ** (-(i + 1))
    return x

>>> vers_decimal("1011"), vers_decimal("0011")
(0.6875, 0.1875)

Contrôle : ici l'égalité de flottants est légitime — tous ces nombres ont un développement binaire fini, donc sont exacts. Piège : numéroter les rangs à partir de et écrire 2.0 ** (-i), ce qui donne un résultat double du bon.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.