Codage des entiers relatifs ✎ Travail n° 1 Complément à 2 Comment savoir rapidement si un nombre codé en complément à 2 est négatif ? Solution Il suffit de regarder le bit le plus à gauche. S’il vaut 1, c’est que le nombre est négatif. Donner la représentation en complément à 2 sur 8 bits des valeurs suivantes : -12|10 +127|10 -128|10 -1|10 Solution -12|10 → 1111 0100|2 +127|10 → 0111 1111|2 -128|10 → 1000 0000|2 -1|10 → 1111 1111|2 Faire l’addition en binaire des nombres +90 et -35 codés sur 8 bits en complément à 2 et vérifier que le résultat est correct Solution +90|10 → 0101 1010|2 -35|10 → 1101 1101|2 1 1011011 1010 + 11 0 1 1101 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ 1 00 1 1 0111 (1) 1 le ‘1’ le plus à gauche résultant de la retenue occasionnée par l’addition des MSB est ignoré 0011 0111|2 → 55|10 ⇒ CORRECT (90 - 35 = 55) 💻 Travail n° 2 Complément à 2 Sachant que le complément à 2 d’un nombre relatif z représenté sur n bits correspond en fait à la formule 2n - |z| (d’où le nom “complément à 2n” abrégé en “complément à 2”), faire un script Python qui demande à l’utilisateur de saisir un nombre négatif, le nombre de bits sur lequel il désire le représenter en complément à 2 puis affiche le résultat en binaire l’opérateur exposant se code ** en Python (→ Ex. : 53 se code 5**3) Se renseigner sur les fonctions standard de Python : int(), input(), abs(), str(), bin() dans Built-in Functions Solution twocomp.py z = int(input('Saisir un entier relatif négatif : ')) n = int(input('Saisir le nombre de bits du complément à 2 : ')) c2 = 2**n - abs(z) print( str(z) + ' en complément à 2 sur ' + str(n) + " bits se code : " + bin(c2)) Résultat d’exécution Saisir un entier relatif négatif : -5 Saisir le nombre de bits du complément à 2 : 16 -5 en complément à 2 sur 16 bits se code : 0b1111111111111011 🞄 🞄 🞄 Codage des entiers naturels Codage des nombres à virgule