Un cap pour ce chapitre
Ce que vous saurez faire
- Coder et décoder un entier relatif en complément à deux
- Déterminer l’intervalle représentable sur une largeur donnée
- Distinguer retenue et dépassement signé
Les bases utiles pour commencer
Fixer la largeur avant d’interpréter
Sur n bits en complément à deux, le bit de gauche porte le poids négatif -2 puissance n-1 ; les autres gardent leurs poids positifs habituels. Sur quatre bits, 1101 vaut donc -8 + 4 + 0 + 1 = -3. La largeur fait partie de l’information : 1101 sur quatre bits et 00001101 sur huit bits ne désignent pas le même entier signé. On ne peut donc pas ajouter arbitrairement des zéros à gauche d’un entier négatif en prétendant conserver sa valeur.
Le bit de gauche n’est pas un signe indépendant posé devant une valeur absolue. Il contribue lui-même au calcul avec un poids négatif. Sur quatre bits, 1001 vaut moins huit plus un, donc moins sept, et non moins un.
Une plage asymétrique
Sur n bits, les entiers représentables vont de -2 puissance n-1 à 2 puissance n-1 moins 1. Sur huit bits, l’intervalle est [-128 ; 127]. Il contient toujours 256 valeurs, comme l’interprétation non signée, mais elles sont réparties autour de zéro. Le côté négatif possède une valeur supplémentaire, car zéro appartient au côté dont le bit de signe vaut 0. Le motif 10000000 représente -128 ; aucun motif sur huit bits ne représente +128 dans cette convention.
La largeur et la convention doivent toujours être annoncées ensemble. Huit bits fournissent le même nombre de configurations dans les deux interprétations. Le complément à deux réaffecte une partie des motifs aux négatifs ; il n’ajoute pas de cases de stockage.
Construire un entier négatif
Pour représenter -5 sur huit bits, on part de +5, écrit 00000101. On inverse chaque bit pour obtenir 11111010, puis on ajoute 1 : 11111011. Une méthode équivalente calcule 256 - 5 = 251 puis écrit 251 sur huit bits sans signe. Pour décoder un motif commençant par 1, on peut calculer sa valeur non signée puis soustraire 256. Ces méthodes se vérifient entre elles, mais supposent toujours que le nombre recherché appartient à l’intervalle représentable.
Inverser les bits sans ajouter un produit une valeur décalée. Pour moins cinq sur huit bits, l’inversion seule représente moins six. L’ajout d’une unité est donc une étape essentielle de la convention, pas une astuce facultative de calcul.
Additionner et reconnaître les limites
L’addition des motifs binaires fonctionne en conservant les n bits de droite, à condition que le résultat mathématique reste dans l’intervalle signé. Sur quatre bits, 3 + 4 donne 0111, soit 7. Mais 7 + 1 donne 1000, interprété comme -8 : le résultat exact 8 ne tient pas. Une retenue sortante n’est pas le seul indicateur pertinent du dépassement signé. Ajouter deux nombres positifs et obtenir un motif négatif révèle ici un débordement. Pour élargir un entier signé, on répète son bit de signe à gauche.
Une retenue peut sortir alors que le résultat signé est correct. Sur quatre bits, moins un plus un produit zéro avec une retenue supprimée. À l’inverse, sept plus un déborde sans retenue sortant de la cinquième position. Il faut examiner l’intervalle signé.
Calculer avec les deux interprétations
Sur six bits, le motif 110101 vaut 53 sans signe : 32 + 16 + 4 + 1. En complément à deux, on soustrait 64, ce qui donne moins onze. La somme des poids signés donne la même réponse : moins 32 + 16 + 4 + 1. Cette double lecture vérifie le décodage.
Pour coder moins onze sur six bits, on calcule 64 moins 11, soit 53, puis on écrit cette valeur sur six bits. La méthode n’est applicable qu’après avoir vérifié l’intervalle : six bits signés représentent les entiers de moins trente-deux à trente et un.
Élargir avant de calculer si nécessaire
On souhaite additionner sept et trois, tous deux stockés sur quatre bits signés. La somme exacte dix dépasse le maximum sept. En conservant quatre bits, le motif 1010 serait interprété comme moins six. Si l’on étend d’abord les deux nombres à cinq bits avec des zéros à gauche, le résultat 01010 représente correctement dix.
Pour une valeur négative, l’extension répète des uns. Le motif 1101, égal à moins trois sur quatre bits, devient 11101 sur cinq bits. Cette extension conserve la valeur ; elle ne consiste pas à changer arbitrairement le signe. La largeur choisie pour les opérations intermédiaires détermine si le résultat exact reste représentable.
À vous de faire varier les choses
Les mêmes bits racontent deux nombres
Choisissez une largeur et une valeur non signée. Observez le changement d’interprétation lorsque le bit de gauche passe à 1.
Lire le résultat de l’expérience initiale
11111011 représente -5 en complément à deux
L’intervalle signé est [-128 ; 127]. Le premier poids est négatif.
| Bit | Poids signé | Contribution |
|---|---|---|
| 1 | -128 | -128 |
| 1 | 64 | 64 |
| 1 | 32 | 32 |
| 1 | 16 | 16 |
| 1 | 8 | 8 |
| 0 | 4 | 0 |
| 1 | 2 | 2 |
| 1 | 1 | 1 |
Une suite de bits n’est ni positive ni négative par nature. Son sens dépend d’une convention et d’une largeur explicitement annoncées.
De la compréhension à l’autonomie
À vous de résoudre
Cherchez d’abord par vous-même. Vérifiez les résultats demandés, utilisez les indices si nécessaire, puis comparez votre méthode à la correction.
Décoder un motif
Interprétez 10110110 sur huit bits, d’abord sans signe, puis en complément à deux.
Indice 1
Calculez la valeur non signée à partir des poids.
Indice 2
Le bit de gauche est 1 : soustrayez 256 pour l’interprétation signée.
Comprendre la correction
La valeur non signée est 128 + 32 + 16 + 4 + 2 = 182. En complément à deux sur huit bits, elle vaut 182 - 256 = -74. Les deux réponses sont cohérentes : elles utilisent exactement les mêmes bits, mais des conventions différentes pour leur donner une valeur.
Coder un négatif
Représentez -12 sur huit bits par inversion puis addition de un. Vérifiez avec la méthode 256 - 12.
Indice 1
Douze s’écrit 00001100.
Indice 2
L’inversion change chaque 0 en 1 et chaque 1 en 0.
Comprendre la correction
L’inversion de 00001100 donne 11110011 ; en ajoutant 1, on obtient 11110100. La vérification donne 256 - 12 = 244, qui s’écrit aussi 11110100. Le résultat commence par 1, ce qui est attendu pour une valeur négative dans cette convention.
Une valeur impossible
Peut-on représenter +16 et -16 sur cinq bits en complément à deux ? Justifiez sans essayer tous les motifs.
Indice 1
Calculez l’intervalle signé pour n = 5.
Indice 2
Les bornes négative et positive ne sont pas symétriques.
Comprendre la correction
Sur cinq bits, l’intervalle est [-16 ; 15]. On peut donc représenter -16 par 10000, mais pas +16. Le motif 10000 ne peut pas servir aux deux valeurs en même temps. Cette asymétrie explique aussi pourquoi l’opposé de la plus petite valeur ne tient pas toujours sur la même largeur.
Agrandir sans changer
Le motif 1101 représente -3 sur quatre bits. Un élève propose 00001101 sur huit bits. Corrigez et vérifiez la valeur.
Indice 1
Pour un négatif, les nouveaux bits à gauche doivent conserver le signe.
Indice 2
Répétez le bit de gauche initial.
Comprendre la correction
Il faut écrire 11111101. Sans signe, ce motif vaut 253 ; en soustrayant 256, on retrouve -3. Le motif proposé 00001101 vaut +13, car son bit de signe est nul. L’extension correcte répète donc le bit de signe : des 1 pour ce nombre négatif, des 0 pour un positif.
Décoder sur six bits
Interprétez 110101 sans signe puis en complément à deux sur six bits. Vérifiez le résultat signé avec le poids négatif. Donnez ensuite le motif représentant la même valeur signée sur huit bits.
Indice 1
La capacité non signée de six bits vaut 64.
Indice 2
Répétez le bit de signe pour élargir.
Comprendre la correction
Sans signe, le motif vaut 53. En complément à deux, il vaut 53 moins 64, soit moins onze. Les poids donnent moins 32 + 16 + 4 + 1, également moins onze. L’extension sur huit bits est 11110101. Sa valeur non signée 245 moins 256 confirme la conservation.
Une retenue qui ne signale pas un débordement signé
Sur quatre bits, additionnez les motifs de moins un et de un, puis ceux de sept et de un. Comparez résultat exact, bits conservés et interprétation signée dans chaque cas.
Indice 1
Moins un est représenté par quatre uns.
Indice 2
Le maximum signé vaut sept.
Comprendre la correction
Moins un plus un donne zéro : l’addition des motifs 1111 et 0001 produit 10000, dont on conserve 0000. Malgré la retenue, le résultat signé est correct. Sept plus un produit 1000, interprété moins huit ; le résultat exact huit est hors intervalle. La retenue non signée et le débordement signé sont donc distincts.
La borne négative et son opposé
Sur six bits signés, donnez les bornes, le motif de la valeur minimale et la largeur nécessaire pour représenter son opposé positif. Expliquez pourquoi la procédure inversion puis addition de un ne peut pas produire cet opposé sur la même largeur.
Indice 1
Six bits signés donnent un poids négatif de trente-deux.
Indice 2
Il manque la valeur positive trente-deux dans l’intervalle.
Comprendre la correction
Les bornes sont moins trente-deux et trente et un. Le minimum s’écrit 100000. Son opposé positif trente-deux demande sept bits signés. Sur six bits, inverser puis ajouter un redonne 100000 après limitation de largeur. La convention ne peut pas créer une valeur absente de l’intervalle représentable.
Les erreurs qui méritent un détour
- Traiter le premier bit comme un simple signe indépendant
- En complément à deux, il contribue avec un poids négatif ; ce n’est pas une écriture signe puis valeur absolue.
- Oublier de vérifier l’intervalle
- Un calcul de codage n’autorise pas une valeur qui dépasse les capacités de la largeur choisie.
La fiche à garder
L’essentiel à retenir
- La largeur et la convention déterminent l’interprétation.
- Sur n bits, la borne positive est inférieure d’une unité à la valeur absolue de la borne négative.
- Pour élargir, on propage le bit de signe.
Le prochain pas
Retrouver le catalogue de Première
Ce chapitre s’appuie sur le programme officiel de Première (PDF, nouvel onglet). Les explications et exercices sont proposés pour l’apprentissage.
