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) == 0Exercices semblables
- Le coût réel des grands entiers corrigé
- L'égalité des flottants, version raisonnée corrigé
- L'algorithme déstabilisé — la suite piégée corrigé
- Lire des mots corrigé
- Décimal, mais pas flottant corrigé