Aller au contenu

II) Les entiers relatifs

1) De mauvaises idées pour commencer ...


Nous avons déjà vu comment représenter les entiers positifs, nous allons maintenant nous intéresser aux entiers relatifs.

a) Utiliser un bit pour le site

La première idée qui pourrait nous venir à l'esprit est, sur un nombre comportant bits, d'utiliser 1 bit pour représenter le signe et bit pour représenter la valeur absolue du nombre à représenter. Le bit de signe étant le bit dit "de poids fort" (c'est à dire le bit le plus à gauche), ce bit de poids fort serait à 0 dans le cas d'un nombre positif et à 1 dans le cas d'un nombre négatif.

Un exemple : on représente l'entier 5 sur 8 bits par , -5 serait donc représenté par .

Il existe un énorme inconvénient à cette méthode : l'existence de deux zéros, un zéro positif ( ) et un zéro négatif ( ) !

b) Utiliser le complément à 1

L'idée ici est d'inverser tous les bits.

Par exemple :on représente l'entier 5 sur 8 bits par , -5 serait donc représenté par .

C'est un peu mieux que la première idée mais ce n'est pas parfait.

Nous allons donc devoir utiliser une autre méthode : le complément à deux.

Pour plus d'explications, voir ici.

2) Le complément à deux


Avant de représenter un entier relatif, il est nécessaire de définir le nombre de bits qui seront utilisés pour cette représentation (souvent 8, 16 , 32 ou 64 bits).

Prenons tout de suite un exemple : déterminons la représentation de sur 8 bits.

  • Commençons par représenter sur 8 bits (sachant que pour représenter en binaire seuls 4 bits sont nécessaire, les 4 bits les plus à gauche seront à 0) : .

  • Inversons tous les bits (les bits à 1 passent à 0 et vice versa) : . C'est le complément à 1.

  • Ajoutons 1 au nombre obtenu à l'étape précédente :

Les retenues sont notées en rouge.

La représentation de sur 8 bits est donc : .

Comment peut-on être sûr que est bien la représentation de ?

Nous pouvons affirmer sans trop de risque de nous tromper que , vérifions que cela est vrai pour notre représentation sur 8 bits.

Dans l'opération ci-dessus, nous avons un 1 pour le 9e bit, mais comme notre représentation se limite à 8 bits, il nous reste bien .

Il faut noter qu'il est facile de déterminer si une représentation correspond à un entier positif ou un entier négatif : si le bit de poids fort est à 1, nous avons affaire à un entier négatif, si le bit de poids fort est à 0, nous avons affaire à un entier positif.

La plus petite valeur qu'il est possible de coder sur 8 bits est (soit ). La plus grande valeur est (soit ).

Plus généralement, nous pouvons dire que pour une représentation sur bits, il sera possible de coder des valeurs comprises entre et .