Entiers relatifs en base 2
📈 Objectifs du cours
- Comprendre la représentation des entiers relatifs en binaire (valeurs positives et négatives)
- Appliquer la méthode du complément à 2 pour coder des entiers signés sur 8 bits
- Évaluer le nombre de bits nécessaires à la représentation d’un entier dans un contexte donné
Représentation binaire d'un entier relatif (signé)
Représentation signée : pourquoi ?
Les ordinateurs représentent les nombres sous forme binaire, mais les entiers peuvent être positifs ou négatifs.
On peut alors choisir de les représenter avec un bit de signe (0 pour positif, 1 pour négatif). Par exemple, s'écrit . Pour représenter , on peut écrire (avec un bit de signe). Pour , on peut écrire (avec un bit de signe). Cependant, il y a un problème : peut aussi être interprété comme (sans bit de signe).
Pour lever cette ambiguïté, il faut décider :
- de la taille du mot binaire qui va représenter l'entier, c'est-à-dire le nombre de bits
- d'une façon efficace de représenter les nombres négatifs
Fixons une taille de 8 bits (1 octet). On serait tenter de s'arrêter là, mais il y deux gros problèmes :
- Le nombre peut être représenté de plusieurs façons, par exemple ou .
- L'addition telle qu'on l'a connait ne fonctionnerait plus.
Pour éviter ces problèmes, il existe une méthode magique, la technique du complément à 2 (ou C2).
Le complément à 2 : principe
Codage des entiers signés sur 8 bits
- Les valeurs possibles vont de -128 à 127
- Le bit de poids fort (le premier à gauche) est le bit de signe :
0xxxxxxx➜ positif1xxxxxxx➜ négatif
✅ Pour coder un entier négatif :
- On prend la valeur positive de l'entier et on la code sur 8 bits
- On inverse les bits (complément à 1)
- On ajoute 1 au résultat
Exemple : en binaire
🔠 Décodage : retrouver l'entier signé
- Si le bit de gauche est
0, on lit normalement - Si le bit de gauche est
1, on applique le complément à 1 inverse- On inverse les bits
- On ajoute 1 au résultat
- On lit le résultat en décimal et on ajoute le signe à la valeur
Exemple :
🦜 Astuce
Sur 8 bits, on peut coder :
- = 128 valeurs positives (de 0 à 127)
- = 128 valeurs négatives (de -128 à -1)
Donc = 256 combinaisons totales.
📊 Cas concrets : combien de bits ?
Quel est le nombre de bits nécessaire pour coder une température allant de -20 à +30°C ?
Réponse
- L'amplitute totale est de .
- .
- On trouve .
- Donc il faut 6 bits minimum pour coder une température allant de -20 à +30°C.
🎯 Entraînement interactif
Exercie conversion base 10 -> base 2
🔗 Liens utiles
Pour aller plus loin
- Ecrire un programme qui convertit un entier en binaire et en hexadécimal.
- Ecire une fonction qui convertir un entier en octal (base 8).