Nombres signés

Comment représenter des nombres négatifs ou positif dans une machine informatique.

Représentation des nombres signés par leur valeur absolue et leur signe

C'est naturellement la première représentation qui vient à l'esprit. Il suffit d'affecter un bit pour le signe et d'attribuer par convention :
la valeur 0 au signe +
la valeur 1 au signe -.

Ainsi le nombre +32 s'écrira dans le système binaire :
0100000
nombre signé positif

le nombre -32 s'écrira :
1100000
nombre signé négatif

Autres exemples :
Le nombre +9,750 s'écrit :
0100111100
nombre signé positif à vigule flotante
et -9,750 :
1100111100
nombre signé négatif à virgule flotante

Représentation dans le code du complément restreint

Nous allons d'abord définir ce qu'est le complément restreint. Pour cela il faut tenir compte du format de la donnée et de la base dans laquelle elle est exprimée.
Exemples :
Soit l'information (453)10 ; son format est de 3 caractères et la base utilisé est 10.
La valeur maximale que l'on peut exprimer dans ce format est :
999
La différence qui existe entre cette valeur maximale et 453 s'appelle le complément restreint.
complément à 9
On le nomme aussi complément à 9 car la base utilisée est 10.

Cette notion de complément restreint se retrouve avec n'importe quelle base utilisée et plus particulièrement en binaire :
complément restreint de (1001)2
complément à 1
complément restreint de (F0A8)16
complément restreint pour l'hexadecimal

Si nous reprenons l'exemple du binaire, il n'est même pas nécessaire d'exécuter une opération de soustraction pour obtenir ce complément restreint on s'aperçoit qu'il suffit de transformer tous les 1 en 0 et vice versa pour l'obtenir.
100110(2) à pour complément restreint : 011001
Certaines machines utilisent ce code pour la représentation des nombres signés. Il est alors appelé code du complément à 1.
Ainsi le nombre +25 sera représenté de la manière suivante : 011001
nombre 25 signé positif
et -25 : 011001
nombre -25 en complément restreint
CR = complément restreint.

Représentation dans le code du complément vrai

Comme pour le complément restreint, nous allons définir ce qu'est le complément vrai d'un nombre.
Le complément vrai d'un nombre est la valeur qu'il faut ajouter à ce nombre pour obtenir la valeur maximale + 1 que l'on peut exprimer (en tenant compte du format et de la base utilisés).

Exemples :
Calcul du complément vrai de (453)10
Valeur maximale ⇒ 999
Valeur maximale + 1 ⇒ 1 000
Complément vrai :
complément à 2
Calcul du complément vrai de (8AF)16
Valeur maximale ⇒ FFF
Valeur maximale + 1 ⇒ 1 000
Complément vrai :
complément vrai

On peut aussi obtenir le complément vrai d'un nombre en calculant d'abord son complément restreint et en ajoutant ensuite 1.
Exemples :
complément vrai de 453
Un exemple en binaire :
complément vrai de 1001 en base 2
Restons en binaire (base 2) et appliquons une autre méthode pour traduire un nombre en complément à 2.
(le complément vrai est également appelé complément à 2)

On part du bit de poids le plus faible (bit de droite) :
si c'est un zéro, on recopie 0 jusqu'au premier 1 rencontré,
si c'est un "1", on garde ce premier 1.

Ensuite on inverse tous les bits après le premier 1 rencontré à partir de la droite.

Attention si le bit le plus à droite est un 1, c'est aussi le premier 1 rencontré !

Quelques exemples

Exemple 1 :
(42)10 = (101010)2le bit le plus à droite est un 0

0 ⇒ 0   on conserve le zéro
1 ⇒ 1 premier 1 rencontré est conservé
0 ⇒ 1 inversion des bits après le premier 1 rencontré
1 ⇒ 0
0 ⇒ 1
1 ⇒ 0

Le nombre (42)10 = (101010)2 s'écrit en complément vrai :
010110 .
En utilisant la méthode du complément restreint + 1 :
complément restreint + 1 de 42 en base 2

Exemple 2 :
(59)10 = (111011)2le bit le plus à droite est un 1

1 ⇒ 1 premier 1 rencontré est conservé
1 ⇒ 0 inversion des bits après le premier 1 rencontré
0 ⇒ 1
1 ⇒ 0
1 ⇒ 0
1 ⇒ 0

Le nombre (59)10 = (111011)2 s'écrit en complément vrai :
000101 .
En utilisant la méthode du complément restreint +1 :
complément restreint + 1 de 59 en base 2

Complément vrai = complément restreint + 1

Résumé pour l'arithmétique binaire

Lorsque l'on veut représenter un nombre avec son signe (nombre signé) la solution la plus simple consiste à rajouter un bit sur la gauche de la valeur absolue de ce nombre.

Par convention ce bit sera à 0 pour représenter un nombre positif et à 1 pour représenter un nombre négatif.

0110 signifie +110 ⇒ (+6)10

1110 signifie -110 ⇒ (-6)10

Ce système intéressant par sa simplicité a pour inconvénient de présenter deux zéros.
0000 ⇒ +0
1000 ⇒ -0.

Pour faciliter le travail des machines informatiques et pour des circuits électroniques simplifiés on représente un nombre signé en complément à 1 (complément restreint) ou en complément à 2 (complément vrai = complément restreint + 1).

La représentation en complément à 2 (la plus répandu) à pour avantage de ne présenter qu'un seul zéro.
Le bit le plus à gauche sera représentatif du signe :
0 pour un nombre positif
1 pour un nombre négatif.
Le tableau suivant donne un aperçu des différentes représentationspour un nombre compris entre -128 et +127.

Tableaux représentant des nombres signés

Exemple sur un octet :
image tableau nombres signés