Problématique
Pour coder un entier relatif, il est nécessaire de coder les informations tout en respectant les propriétés mathématiques des entiers signés :- coder l'information de signe
- coder l'information de valeur absolue
- s'assurer que -(-a) = a
- s'assurer que a + (-a) = 0
Codage par bit de signe
Définition
- le bit de poids fort est utilisé pour représenter le signe : 0 pour + (positif) et 1 pour - (négatif)
- les autres bits contiennent la valeur absolue
- Exemple : -43 sur 8 bits -›
Propriétés
Opposé de l'opposé d'un nombre
|
Somme d'un nombre et de son opposé
|
On a donc 2 représentations possibles de 0.
Commentaires
- le codage par bit de signe présente l'avantage d'être assez intuitif : il correspond à notre façon usuelle d'écrire les entiers relatifs (symbole de signe suivi de la valeur absolue).
- cependant, ce mode de codage présente plusieurs défauts (plusieurs représentations de zéro, somme d'un nombre et de son opposé non nulle) qui rendent son usage peu pratique. Pour coder les entiers relatifs, on utilise donc un autre codage : le codage en complément à 2.
Codage en complément à 2
Rappel : méthode des compléments
Le complément d'un nombre représenté dans une base b s'obtient en remplaçant chaque chiffre Ci du nombre par le résultat de b - 1 - Ci
Par exemple, en base 10 :
complément(48) → 51 (9 - 4 → 5, 9 - 8 → 1)
Pour calculer la différence A - B, on procède à l'addition A + complément(B) + 1 :
7 | 5 | ||||
+ | 5 | 1 | |||
+ | 1 | ||||
= | 2 | 7 | = 75 - 48 (la retenue finale n'est pas prise en compte) |
On peut donc dire que complément(B) + 1 est une représentation de -B
Définition
L'opposé d'un nombre représenté en base 2 est obtenu en 2 étapes :
- inverser tous les bits du nombre (opération équivalente au remplacement de chaque bit Ci du nombre par le résultat de 1 - Ci décrite lors du rappel sur la méthode des compléments ci-dessus)
- ajouter 1 au résultat
Exemple
+43 | ||
⬇ inversion ⬇ | ||
+ | + 1 | |
= | -› -43 |
Un nombre (codé en complément à 2) dont le bit de poids fort vaut 1 est forcément négatif : pour connaître sa valeur absolue, il faut calculer son complément à 2.
Propriétés
Opposé de l'opposé d'un nombre
|
Somme d'un nombre et de son opposé
| ||||||||||||||||||||||||||||||||||||
une seule représentation de 0 |
Commentaires
- le codage en complément à 2 est moins intuitif que le codage par bit de signe.
- en contrepartie, il présente les bonnes propriétés que l'on est en droit d'attendre (une seule représentation de 0, somme d'un nombre et de son opposé égale à zéro).
Dépassements lors des calculs
Que se passe-t-il lorsque le résultat d'un calcul est supérieur à la valeur maximale que l'on peut stocker avec le type de donnée utilisé ?
encore une fois, le résultat du calcul est faux
45 | ||
+ | + 100 | |
= | = -110 |
Exercices sur le codage en complément à 2
Effectuez les conversions demandées ci-dessous sans utiliser de calculatrice.