Codage des entiers relatifs

✎ Travail n° 1 Complément à 2

  1. 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.

  2. 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

  3. 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

  1. 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

🞄  🞄  🞄