Adloun

informatique (tronc commun des prépas scientifiques) · Chapitre 11 · Application directe du cours

Simuler la machine en Python

La représentation des nombres · niveau 1 (application)

É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

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre