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é surn
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 code5**3
) -
Se renseigner sur les fonctions standard de Python :
int()
,input()
,abs()
,str()
,bin()
dans Built-in Functions
Solution
twocomp.pyz = 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écutionSaisir 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
-
🞄 🞄 🞄