1. Une solution intuitive : signe et valeur absolue

Sur 8 bits, réservons le bit de gauche au signe : 0 pour un nombre positif et 1 pour un nombre négatif. Les sept autres bits indiquent sa valeur absolue.

NombreSigne et valeur absolue
+130000 1101
-131000 1101
À vous de chercher

Avec cette convention, représenter +5 et -5 sur 8 bits. Que se passe-t-il si l'on représente zéro avec un bit de signe égal à 0, puis à 1 ?

2. Premier problème : deux écritures de zéro

Cette convention conduit à 0000 0000 pour +0 et 1000 0000 pour -0. Deux suites de bits différentes représentent donc le même entier.

À retenir

Une représentation peut fonctionner pour mémoriser des nombres tout en utilisant imparfaitement les combinaisons disponibles.

3. Deuxième problème : calculer devient compliqué

Essayons d'effectuer 5 + (-3) en additionnant directement les deux représentations sur 8 bits.

 +5 : 0000 0101
 -3 : 1000 0011
      ---------
      1000 1000

Avec la convention signe et valeur absolue, le résultat obtenu signifie -8, alors que le résultat attendu est +2 !

À vous de réfléchir

Pourquoi l'addition binaire habituelle ne convient-elle pas ici ? Que devrait faire la machine avant de calculer lorsque les signes sont différents ?

Il faudrait distinguer les signes, comparer les valeurs absolues et choisir entre addition et soustraction. Nous cherchons une représentation permettant de conserver une addition binaire ordinaire.

4. Une autre idée : obtenir l'opposé par le calcul

Sur 8 bits, la valeur de 256 s'écrit 1 0000 0000 sur 9 bits. Si l'on conserve uniquement les 8 bits de droite, elle donne 0000 0000.

Pour que 5 + (-5) donne zéro sur 8 bits, cherchons donc la représentation qui, ajoutée à 0000 0101, donne 256 avant suppression de la retenue.

  0000 0101   (5)
+ 1111 1011   (251)
-----------
1 0000 0000   (256)

En ne conservant que 8 bits, nous obtenons bien 0000 0000. La suite 1111 1011 peut ainsi représenter -5 dans cette nouvelle convention.

Le principe du complément à deux

Sur 8 bits, la représentation de -5 correspond à 256 - 5. Plus généralement, pour représenter un entier négatif -a sur n bits, on utilise la valeur 2n - a, lorsque -a appartient à la plage représentable.

5. Pourquoi choisir le complément à deux ?

Cette convention possède une seule représentation de zéro. Surtout, elle permet d'additionner les représentations des entiers positifs et négatifs avec le même mécanisme binaire, en conservant uniquement les bits prévus. Il faut toutefois surveiller les dépassements.

Vérification

Sur 8 bits, calculer 0000 0101 + 1111 1011. Comparer le résultat avec celui obtenu en utilisant la représentation signe et valeur absolue.

6. Comment utiliser cette convention ?

Nous comprenons maintenant l'intérêt du complément à deux. Reste à apprendre une méthode rapide pour obtenir l'opposé, encoder et décoder les entiers, puis effectuer des calculs et repérer les dépassements.

Leçon suivante : Utiliser le complément à deux