Objectif. Comprendre et manipuler deux conventions d’écriture des entiers signés sur n bits : valeur signée et complément à 2.

1. Introduction :

Un entier relatif est stocké sur une chaîne binaire de longueur fixe, n bits (8, 16, 32, 64…).
Notons la chaîne N = bn-1bn-2…b1b0, où bn-1 est le bit de poids fort (MSB).

Historiquement, plusieurs conventions existent. Aujourd’hui, le complément à 2 est quasi universel en matériel et systèmes modernes.

2. Convention de la valeur signée (signed magnitude) :

On réserve

Méthode :

  • Pour +x : MSB = 0, valeur en binaire sur les n−1 bits restants.
  • Pour −x : MSB = 1, valeur en binaire de |x| sur les n−1 bits restants.

Exemples (sur 8 bits) :

Inconvénients :

  • Deux zéros :
    Sur 8 bits, on a :
    • +0 = 0000 0000
    • −0 = 1000 0000
  • Addition et soustraction mobilisaient deux circuits séparés.
  • Plage représentable (sur n bits) : de −(2n−1−1) à +(2n−1−1).

Faites-vous plaisir 1 :
En 8 bits, donner la représentation signée de +37, puis de −37.

3. Complément à 2 :

3.1 Définitions

Chaîne (8 bits)
N1001 10012
Cplmt à 10110 01102
+ 10110 01112 (complément à 2)

Faites-vous plaisir 2 :
Donner le complément à 2 de 1110 10002 (8 bits).

3.2 Décoder (base 2 → base 10) en complément à 2 :

Méthode :

  1. Si MSB = 0 ⇒ entier positif : valeur naturelle (somme pondérée).
  2. Si MSB = 1 ⇒ entier négatif :
    1. calculer le complément à 2 ;
    2. lire la valeur décimale obtenue, puis appliquer le signe (−).

Exemple 1 : 0010 01012
(MSB=0) ⇒ 20+22+25=37.

Exemple 2 :
1010 01012
(MSB=1)

N1010 0101
Cplmt à 10101 1010
+ 10101 101120+21+23+24+26=91
Valeur−91

Faites-vous plaisir 3 :
En Complément à 2 (8 bits), convertir en base 10 0011 00112.

Faites-vous plaisir 4 : Même question pour 1011 00112.

Faites-vous plaisir 5 : Même question pour 1111 11102.

3.3. Encoder (base 10 → base 2) en Complément à 2 :

Méthode :

  1. Pour +x : écrire x en binaire sur n bits (avec zéros de tête si besoin).
  2. Pour −x :
    1. écrire +x en binaire (n bits) ;
    2. inverser (complément à 1) ;
    3. ajouter 1 (complément à 2).

Exemple : En 8 bits, −37 :

+370010 0101
Cplmt à 11101 1010
+ 11101 1011−37

Astuce équivalente : 28 − 37 = 256 − 37 = 219, et 219 = 1101 10112.

Faites-vous plaisir 6 :
En complément à 2 (8 bits), donner l’écriture binaire de −51.

Avantages :
  • Un seul zéro : 0000 0000.
  • Addition et soustraction avec le même circuit.
  • Plage des nombres représentables (sur n bits) : \([ -2^{n-1} \ ;\ 2^{\,n-1}-1 ]\).

4. Somme et différence en binaire (8 bits) :

4.1. Somme :

Exemple : 37 + 10 (sur 8 bits)

370010 0101
100000 1010
Somme0010 1111 (= 47)

4.2. Différence via complément à 2 :

Exemple : 41 − 2341 + (−23).

410010 1001
+ (−23) 23 = 0001 0111 → C2 = 1110 1001
Somme10001 0010 (retenue hors 8 bits) → 0001 0010 = 18

Faites-vous plaisir 7 : En 8 bits, calculer : 8 − 3 en binaire.

Faites-vous plaisir 8 : En 8 bits, calculer : −7 − 5 (attention au dépassement possible).

Faites-vous plaisir 9 : En 8 bits, calculer : 58 − 49.

Faites-vous plaisir 10 : En 8 bits, calculer : 125 + 4 (observer l’overflow si présent).