Calculatrice complément à deux

Ceci est une calculatrice de complément à deux. Encodez un entier signé, ou lisez hex/binaire comme signé. −1 sur 8 bits vaut 0xFF. −52 vaut 0xCC. Le même octet 0xFF vaut 255 non signé.

Cliquez un bit pour l’inverser. Celui de gauche (anneau doré) est le bit de signe.

Cliquez une valeur pour la copier

Compléter, inverser, ajouter 1

Addition / soustraction en complément à deux (A et B en décimal signé)

Exemples — cliquez un échantillon

Le même motif 4 bits en non signé, signe-magnitude, complément à un et complément à deux — cliquez une ligne pour le charger

Binary Non signé Signe-magnitude Complément à un Two's
00000000
01015555
01117777
10008−0−7−8
101010−2−5−6
111115−7−0−1

Ceci est une calculatrice de complément à deux

Encode un entier signé en complément à deux, ou lit un motif hex/binaire comme signé. Largeurs : Auto, 4, 8, 12, 16, 32 et 64. −1 sur 8 bits vaut 0xFF ; −52 vaut 0xCC ; 20 vaut 0x14. Lecture non signée des mêmes bits : 0xFF vaut 255. HEX, Binary, Decimal restent inchangés. Ce n’est pas la calculatrice bit à bit HEX ni la calculatrice HEX non signée.

Comment l’utiliser

  1. Choisissez Decimal / Hex / Binary et la largeur. Le décimal écrit le complément à deux. Hex et Binary complètent avec des zéros puis lisent la valeur signée. Auto prend la plus petite largeur qui convient.
  2. La grille est le motif. Le bit de gauche (anneau doré) est le signe ; cliquez pour l’inverser. Les cartes montrent hex, décimal signé, non signé, complément à un et la négation inverser+1.
  3. Un décimal négatif : compléter la magnitude, inverser, ajouter 1. −52 sur 8 bits : 0011 0100 → 1100 1011 → 1100 1100 (0xCC). Les positifs n’inversent pas.
  4. A et B sont des décimaux signés à la même largeur. A+B et A−B tournent modulo 2^N ; dépassement si la somme mathématique ne tient pas. Afficher l’exemple est −1 sur 8 bits → 0xFF. Autres pastilles : −52, 20, 0xFF, 0x80 (−128) et 1010 sur 4 bits (−6).
  5. Le tableau 4 bits compare non signé, signe-magnitude, complément à un et complément à deux. Cliquez une ligne pour charger le motif.

Notes

Le motif est TC = (2^N + X) mod 2^N. La plage signée 8 bits est −128…127 ; 4 bits −8…7. Hex/binaire plus court que la largeur est complété de zéros, pas d’extension de signe. Nier 0x80 sur 8 bits reste 0x80 : +128 n’existe pas. Voir IEEE 754, convertisseur d’endian.

Où l’utiliser

  • Lire un octet signé dans un dump : 0xFF en signed char vaut −1 ; en unsigned, 255.
  • Vérifier inverser-plus-un, ou pourquoi A−B est A plus le complément à deux de B.

Questions

Pourquoi −128 ne se nie pas sur 8 bits ?

La plage est asymétrique. Inverser 1000 0000 et ajouter 1 redonne 1000 0000. Le +128 mathématique ne tient pas.

0xFF vaut −1 ou 255 ?

Selon la lecture. Cette page montre la valeur signée en complément à deux et la lecture non signée des mêmes bits.

Qu’est-ce que le complément à un ici ?

Chaque bit du motif actuel inversé, sans +1. Le complément à deux d’un négatif inverse la magnitude puis ajoute 1.