Adloun

Simuler la machine en Python

Exercice · informatique (tronc commun des prépas scientifiques), chapitre 11 — La représentation des nombres

Énoncé

Simuler l'addition modulo en complément à deux à l'aide d'un script Python.

Corrigé

def vers_signe(mot: int, k: int) -> int:
    assert 0 <= mot < 2 ** k
    # Si le bit de signe est 1, on retranche 2**k
    return mot if mot < 2 ** (k - 1) else mot - 2 ** k

def addition_machine(x: int, y: int, k: int) -> int:
    # L'addition se fait modulo 2**k puis est interprétée avec signe
    return vers_signe((x + y) % (2 ** k), k)

assert addition_machine(127, 1, 8) == -128
assert addition_machine(-1, 1, 8) == 0

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.