Qu'est-ce que Complément à deux ?

Représentation binaire usuelle des entiers négatifs. Inverser les bits puis ajouter 1 change le signe. Sur n bits, elle couvre −2ⁿ⁻¹ à 2ⁿ⁻¹ − 1 et permet d'utiliser l'additionneur pour la soustraction.

Nom japonais: 2の補数

« Complément à deux » apparaît dans 9 questions d'entraînement réparties sur 5 thèmes, dont Circuits logiques, Arithmétique des ordinateurs, ISA et assembleur.

Domaine: Circuits logiques

S'entraîner : questions sur Complément à deux

Quelle suite de bits représente −1 en complément à deux sur 4 bits ?

  1. A1111
  2. B1001
  3. C0001
Afficher la réponse et l'explication

Réponse : A. 1111

En complément à deux, on obtient un nombre négatif en inversant les bits du nombre positif et en ajoutant 1 : +1 (0001) → 1110 → 1111 donne −1. En considérant que le bit de poids fort a un poids de −8, on lit directement 1111 = −8 + 4 + 2 + 1 = −1. Sur 4 bits, on représente de −8 à +7, et la soustraction se fait par l'addition du complément ; presque tous les ordinateurs l'adoptent. 1001 représente −1 en signe et valeur absolue.

Quelle est la plage d'entiers représentable en complément à deux sur 8 bits ?

  1. A−128 à +127
  2. B−127 à +127
  3. C0 à 255
Afficher la réponse et l'explication

Réponse : A. −128 à +127

Le complément à deux sur n bits représente de −2ⁿ⁻¹ à 2ⁿ⁻¹ − 1, soit de −128 à +127 sur 8 bits. Le zéro n'ayant qu'une représentation (00000000), il y a une valeur de plus du côté négatif. Les valeurs extrêmes demandent de la prudence : multiplier −128 par −1 provoque un débordement, le résultat n'étant pas représentable. Sur 16 bits, la plage va de −32 768 à +32 767, et sur 32 bits d'environ ±2,1 milliards. 0 à 255 est la plage des mêmes 8 bits interprétés en non signé.

« Complément à deux » dans les explications

Questions mentionnant « Complément à deux » (9)

  1. Quelle suite de bits représente −1 en complément à deux sur 4 bits ?
  2. Quelle est la plage d'entiers représentable en complément à deux sur 8 bits ?
  3. Lors de l'addition de nombres en complément à deux, quelle est la condition correcte indiquant un débordement (overflow) ?
  4. Quelle définition du code « binaire décalé » (offset binary), utilisé par les CAN traitant des tensions positives et négatives, est correcte ?
  5. Quel est le principal effet de l'algorithme de Booth en base 4 (codage de Booth) dans un multiplieur ?
  6. Quel est le résultat du décalage arithmétique d'un bit vers la droite de −8 (1111 1000) en entier signé sur 8 bits ?
  7. L'immédiat de l'instruction RISC-V addi est un entier signé de 12 bits. Quelle plage cet immédiat peut-il représenter ?
  8. En RISC-V (RV32I), après exécution de « addi t0, zero, -1 », quelle valeur de 32 bits contient t0 ?
  9. Voulant que a vaille -1 signé, on a écrit le code ci-dessus, et gt vaut 1. Pourquoi ?

Termes associés

Débordement (spill) Algorithme de Booth Décalage arithmétique Extension de signe Verilog Additionneur complet Bascule (flip-flop) Circuit combinatoire Circuit séquentiel Code de Gray

Retour au glossaire