Un cap pour ce chapitre
Ce que vous saurez faire
- Calculer la capacité d’une représentation non signée
- Déterminer le nombre de bits nécessaire à un résultat
- Expliquer une retenue et un dépassement de capacité
Les bases utiles pour commencer
Compter les configurations possibles
Un bit possède deux états. Deux bits donnent quatre configurations, trois bits en donnent huit, et n bits donnent 2 puissance n configurations. Pour représenter des entiers naturels en commençant à zéro, l’intervalle va donc de 0 à 2 puissance n moins 1. Sur huit bits, on représente 256 valeurs distinctes, mais la plus grande est 255. Un octet contient exactement huit bits. Confondre le nombre de valeurs et la valeur maximale provoque un décalage fréquent, que l’inclusion de zéro permet de comprendre immédiatement.
Chaque bit supplémentaire double le nombre de configurations. Passer de huit à neuf bits ne fournit donc pas simplement une valeur supplémentaire : on passe de 256 à 512 configurations. Cette croissance explique pourquoi quelques bits supplémentaires peuvent représenter beaucoup plus d’états.
Choisir assez de bits
Pour un entier positif N, on cherche le plus petit n tel que N soit strictement inférieur à 2 puissance n. Ainsi 31 tient sur cinq bits, mais 32 en demande six. Pour coder un ensemble de cent états différents, sept bits suffisent car 64 est insuffisant et 128 convient. Le besoin dépend donc soit de la plus grande valeur numérique, soit du nombre d’états à distinguer : ces formulations sont proches sans être interchangeables. Pour zéro seul, nous adopterons la convention usuelle d’une écriture avec un bit 0.
Pour identifier trois cents objets différents, il faut trois cents codes ; pour coder les entiers de zéro à trois cents inclus, il en faut trois cent un. La largeur minimale reste ici neuf bits, mais la différence devient décisive près d’une puissance de deux.
Additionner avec des retenues
L’addition binaire suit le même principe que l’addition décimale. Zéro plus zéro donne zéro, zéro plus un donne un, et un plus un donne zéro avec une retenue vers la position suivante. Si une retenue rejoint déjà deux bits à 1, la somme locale vaut trois : on écrit 1 et on reporte 1. Additionner deux entiers représentés sur n bits peut nécessiter n + 1 bits. La retenue qui sort de la dernière colonne signale alors que le résultat ne tient plus dans la largeur initiale.
Une colonne peut recevoir trois unités : les deux bits additionnés et la retenue précédente. Trois s’écrit onze en binaire, donc le bit résultat et la nouvelle retenue valent tous deux un. Il faut suivre la retenue colonne par colonne, sans l’ajouter plusieurs fois.
Distinguer résultat mathématique et stockage
Sur quatre bits non signés, 13 + 5 vaut mathématiquement 18, écrit 10010 en binaire. Il faut cinq bits. Si un modèle de registre conserve uniquement les quatre bits de droite, il stocke 0010, soit 2, et perd le bit de poids 16. Ce comportement doit être annoncé : tous les langages et machines ne traitent pas le dépassement de la même façon. Les entiers Python peuvent grandir au-delà de 32 ou 64 bits dans la limite des ressources disponibles. Pour le produit de nombres de n et m bits, n + m bits suffisent toujours.
La simulation limite les opérandes à la largeur choisie avant de les additionner. Consultez donc les valeurs effectives affichées. Un résultat calculé après réduction d’un opérande n’est pas le résultat de l’addition initialement imaginée ; cette préparation des données fait partie du modèle.
Dimensionner un ensemble de codes
Un système doit identifier soixante-quatre cas distincts. Six bits suffisent, car ils fournissent exactement soixante-quatre configurations. On peut numéroter ces cas de zéro à soixante-trois. Si l’on exige au contraire les numéros de un à soixante-quatre comme valeurs binaires directes, le numéro soixante-quatre demande sept bits.
Il faut donc distinguer un code arbitraire représentant un objet de l’écriture directe d’un nombre. Avant de choisir la largeur, précisez les états autorisés et les éventuels codes réservés, par exemple un état « inconnu ». Soixante-quatre états plus un code réservé dépassent déjà la capacité de six bits.
Un compteur qui revient au début
Un compteur pédagogique sur cinq bits conserve le reste de la division par trente-deux. Après trente, une augmentation donne trente et un ; la suivante donne zéro dans le registre, alors que la somme exacte vaut trente-deux. Le retour à zéro provient de la largeur, pas d’une propriété de l’addition ordinaire.
Pour additionner deux valeurs maximales de cinq bits, le résultat exact vaut soixante-deux et demande six bits. Pour leur produit, le maximum vaut neuf cent soixante et un et demande dix bits. Dimensionner un stockage intermédiaire exige ainsi de considérer l’opération effectuée, pas seulement la largeur des données de départ.
À vous de faire varier les choses
L’addition rentre-t-elle dans le registre ?
Modifiez la largeur et les deux opérandes. Les valeurs sont ramenées dans la capacité choisie ; comparez résultat exact et bits conservés.
Lire le résultat de l’expérience initiale
Dépassement : une retenue sort
Le résultat mathématique vaut 18. Ce modèle conserve seulement les 4 bits de droite ; il stocke 2.
| Valeur effective | Décimal | Binaire |
|---|---|---|
| a | 13 | 1101 |
| b | 5 | 0101 |
| Somme | 18 | 10010 |
| Registre | 2 | 0010 |
La capacité concerne la représentation. Le résultat mathématique et la valeur stockée peuvent diverger si la largeur est insuffisante.
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.
Configurations et maximum
Un identifiant utilise six bits non signés. Combien de valeurs différentes sont possibles et quelle est la plus grande ?
Indice 1
Comptez toutes les configurations, y compris celle composée uniquement de zéros.
Indice 2
Le maximum est inférieur d’une unité au nombre de valeurs.
Comprendre la correction
Il existe 2 puissance 6 = 64 configurations. Elles représentent les entiers de 0 à 63, donc le maximum est 63. Répondre 64 comme maximum ajouterait une valeur qui exige un septième bit : 64 s’écrit 1000000 en binaire.
Choisir une largeur
Un capteur produit des entiers de 0 à 300 inclus. Sept, huit ou neuf bits sont-ils nécessaires ? Justifiez avec les limites.
Indice 1
Le nombre 300 doit être représentable.
Indice 2
Huit bits atteignent seulement 255.
Comprendre la correction
Neuf bits sont nécessaires : huit bits donnent les valeurs de 0 à 255, ce qui exclut une partie des mesures. Neuf bits permettent d’aller jusqu’à 511 et suffisent donc. Il ne faut pas arrondir simplement la taille de 300 en décimal ; les bornes pertinentes sont les puissances de deux.
La retenue supplémentaire
Calculez 1111₂ + 0001₂, puis expliquez ce qu’un registre pédagogique de quatre bits conserverait en ignorant la retenue finale.
Indice 1
Faites l’addition colonne par colonne depuis la droite.
Indice 2
Chaque colonne de 1 transmet sa retenue à la suivante.
Comprendre la correction
Le résultat mathématique est 10000₂, soit 16. Un registre limité aux quatre bits de droite conserverait 0000 et une retenue serait sortie. Ce zéro ne signifie pas que l’addition mathématique vaut zéro : il traduit la règle de stockage du modèle et un dépassement de capacité.
Prévoir la taille d’un produit
Deux entiers non signés utilisent chacun quatre bits. Quelle largeur garantit de stocker leur produit ? Utilisez leurs valeurs maximales pour vérifier.
Indice 1
Le maximum de chaque facteur est 15.
Indice 2
Comparez le produit maximal aux puissances de deux.
Comprendre la correction
Le produit maximal est 15 × 15 = 225. Il dépasse 127 mais reste inférieur à 256 ; huit bits suffisent et sont nécessaires pour couvrir tous les cas. Cela correspond à la borne générale de quatre plus quatre bits. Des valeurs particulières, comme 1 × 1, demandent évidemment moins de place.
Un code réservé
Une application distingue 128 appareils et veut un code supplémentaire pour « appareil inconnu ». Combien de codes sont nécessaires et quelle est la largeur minimale ? Comparez avec la version sans code réservé.
Indice 1
Sept bits fournissent exactement 128 configurations.
Indice 2
Le code réservé s’ajoute aux appareils.
Comprendre la correction
Il faut 129 codes. Sept bits sont insuffisants, huit bits en fournissent 256 et conviennent. Sans état réservé, sept bits suffiraient exactement pour numéroter les appareils de zéro à 127. La valeur maximale et le nombre d’objets doivent être distingués pour compter les besoins.
Un résultat exact et un résultat conservé
Un registre non signé de cinq bits additionne 27 et 9 en conservant les cinq bits de droite. Calculez la somme, sa représentation binaire et la valeur conservée. Quelle largeur aurait suffi pour cet exemple ?
Indice 1
Cinq bits représentent les valeurs de zéro à trente et un.
Indice 2
Retirer le poids trente-deux donne la partie conservée.
Comprendre la correction
La somme exacte vaut 36 et s’écrit 100100. Les cinq bits conservés sont 00100, soit quatre ; une retenue sort. Six bits suffisent à représenter 36. La réponse quatre concerne le stockage dans le modèle, tandis que trente-six reste la réponse mathématique à l’addition.
Dimensionner toute une opération
Deux mesures non signées sont codées sur six bits chacune. Calculez le maximum possible de leur somme et de leur produit. Déterminez les largeurs minimales qui garantissent tous les résultats.
Indice 1
Chaque mesure peut atteindre 63.
Indice 2
Comparez les maxima aux puissances de deux voisines.
Comprendre la correction
La somme maximale vaut 126 : elle tient sur sept bits, dont le maximum est 127. Le produit maximal vaut 3969 : onze bits s’arrêtent à 2047 et douze à 4095. Il faut donc douze bits pour le produit. Additionner les largeurs est une garantie adaptée au produit, pas la largeur minimale de la somme.
Les erreurs qui méritent un détour
- Dire que huit bits donnent un maximum de 256
- Ils donnent 256 configurations ; zéro en occupe une, d’où un maximum de 255.
- Attribuer automatiquement un débordement aux entiers Python
- Le modèle de largeur fixe doit être distingué des entiers Python de taille adaptable.
La fiche à garder
L’essentiel à retenir
- n bits représentent 2 puissance n états.
- La somme peut demander un bit supplémentaire.
- Un stockage trop étroit peut perdre une partie du résultat.
Cette notion au bac
Retrouvez ces idées dans un sujet complet, avec des indices, une correction expliquée et des ateliers.
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.
