
Les nombres binaires ne sont pas une bizarrerie d’informaticien : ils constituent la seule écriture qu’un circuit électronique sait manipuler de façon fiable. Deux symboles, 0 et 1, suffisent à représenter des entiers, des lettres, des couleurs, des sons et des instructions de programme. Comprendre le codage en base 2 revient à comprendre comment une contrainte matérielle minimale a produit toute la machinerie du numérique contemporain.
Deux états parce que le matériel n’en distingue pas davantage
Un transistor se comporte comme un interrupteur : il laisse passer le courant ou il le bloque. Entre ces deux situations, la tension traverse une zone floue que le circuit ne cherche pas à interpréter. Fixer un seuil et décider qu’en dessous c’est 0, au-dessus c’est 1, rend le système robuste : une petite dérive de tension, un peu de bruit électrique ou un léger vieillissement du composant ne changent pas la lecture.
Une machine décimale a existé sur le papier et même en prototype, mais elle exigerait de distinguer dix niveaux de tension sur la même plage, donc dix seuils, donc dix fois plus de sensibilité au bruit. La base 2 l’a emporté pour cette raison technique, pas par élégance mathématique. Le même arbitrage se retrouve partout où un signal doit survivre à un trajet bruité, du télégraphe optique aux liaisons par fibre.
Le mécanisme de numération, lui, reste identique à celui de la base dix. Chaque position vaut le double de sa voisine de droite : 1, 2, 4, 8, 16, 32, 64, 128. Le nombre 10101100 se lit donc 128 + 32 + 8 + 4, soit 172. Le détail du passage d’une base à l’autre, avec les deux méthodes de calcul manuel, fait l’objet d’un article dédié à la conversion décimal binaire.
Bit, octet, mot : le vocabulaire des tailles

Le bit désigne un seul chiffre binaire, soit la plus petite quantité d’information possible : la réponse à une question fermée. Huit bits regroupés forment un octet, unité de base de la mémoire et des fichiers depuis des décennies. Le terme anglais correspondant, byte, désigne la même chose dans la quasi-totalité des systèmes actuels, ce qui explique la confusion permanente entre les abréviations Mo et MB dans les mesures de débit.
Au-dessus, le mot machine désigne la quantité de bits qu’un processeur traite en une seule opération. Les architectures courantes travaillent sur 32 ou 64 bits, ce qui conditionne la taille maximale des entiers manipulés directement et la quantité de mémoire adressable. Un demi-octet, soit quatre bits, porte parfois le nom de quartet, et il correspond exactement à un symbole hexadécimal.
Les préfixes de taille ajoutent une dernière subtilité. Comme les circuits d’adressage progressent par puissances de deux, la mémoire se compte naturellement en multiples de 1024 et non de 1000. Un kibioctet vaut 1024 octets, un mébioctet vaut 1 048 576 octets. Les fabricants de disques préfèrent souvent les puissances de dix, plus flatteuses, ce qui crée l’écart entre la capacité annoncée sur l’emballage et celle affichée par le système.
Les plages de valeurs selon le nombre de bits
Une largeur fixée détermine mécaniquement le nombre de combinaisons disponibles : deux possibilités par bit, donc 2 élevé à la puissance du nombre de bits. Ce total se répartit ensuite selon que l’on code uniquement des valeurs positives ou également des négatives.
| Largeur | Combinaisons | Plage non signée | Plage signée |
|---|---|---|---|
| 4 bits | 16 | 0 à 15 | -8 à 7 |
| 8 bits | 256 | 0 à 255 | -128 à 127 |
| 12 bits | 4 096 | 0 à 4 095 | -2 048 à 2 047 |
| 16 bits | 65 536 | 0 à 65 535 | -32 768 à 32 767 |
| 24 bits | 16 777 216 | 0 à 16 777 215 | -8 388 608 à 8 388 607 |
| 32 bits | 4 294 967 296 | 0 à 4 294 967 295 | environ -2,1 à 2,1 milliards |
La confusion la plus répandue consiste à lire 256 comme valeur maximale d’un octet. Le total des combinaisons vaut bien 256, mais la première d’entre elles code le zéro, donc la plus grande valeur non signée s’arrête à 255. La même logique explique les 65 536 combinaisons de 16 bits pour un maximum de 65 535, valeur que l’on croise dans les numéros de ports réseau.
Le dépassement de capacité produit un phénomène caractéristique : l’écriture repart de zéro. Ajouter 1 à un octet valant 255 donne 0, parce que le neuvième rang qui devrait apparaître n’existe pas. Ce comportement circulaire, parfois utile, a causé quelques pannes mémorables dans l’histoire de l’informatique embarquée.
Le choix de la largeur relève donc d’un compromis permanent. Trop étroite, elle expose au débordement dès que les valeurs grandissent. Trop large, elle gaspille de la mémoire et de la bande passante, ce qui pèse lourd quand des millions de valeurs circulent chaque seconde. Un capteur de température domestique se contente largement de 12 bits, alors qu’un compteur d’événements sur un équipement industriel exige souvent 32 bits pour ne jamais reboucler pendant sa durée de service.
L’hexadécimal, une écriture compacte du binaire

Lire 1111111111111111 à l’œil nu relève de l’exploit. La base 16 résout élégamment ce problème parce que 16 vaut exactement 2 à la puissance 4 : chaque symbole hexadécimal condense un groupe de quatre bits, sans reste ni approximation. Les symboles vont de 0 à 9 puis de A à F, A valant 10 et F valant 15.
La conversion se fait donc par découpage, sans calcul. 10101100 se sépare en 1010 et 1100, soit A et C, donc AC. Dans l’autre sens, chaque symbole se remplace par ses quatre bits. Cette correspondance directe explique pourquoi les adresses mémoire, les codes couleur des pages web et les identifiants matériels s’écrivent tous en hexadécimal plutôt qu’en décimal.
| Quartet | Décimal | Symbole hexadécimal |
|---|---|---|
| 0000 | 0 | 0 |
| 0101 | 5 | 5 |
| 1001 | 9 | 9 |
| 1010 | 10 | A |
| 1100 | 12 | C |
| 1111 | 15 | F |
Coder autre chose que des nombres
Un octet ne signifie rien par lui-même : c’est la convention de lecture qui lui donne un sens. La même suite 01000001 vaut 65 pour un compteur, la lettre A pour un éditeur de texte et une nuance de gris pour un traitement d’image.
Le codage des caractères a longtemps reposé sur une table de caractères de 128 entrées tenant sur sept bits, où les lettres majuscules commencent à 65 et les minuscules à 97. L’écart constant de 32 entre une majuscule et sa minuscule correspond exactement à un seul bit qui bascule, ce qui rendait la conversion triviale pour les machines de l’époque. Les alphabets non latins ont ensuite imposé des codages à largeur variable, où un caractère occupe de un à quatre octets selon sa position dans le répertoire universel.
Les couleurs suivent la même logique de convention. Trois octets, un par composante rouge, verte et bleue, décrivent chacun une intensité de 0 à 255, soit un peu plus de seize millions de combinaisons. Le son numérisé fonctionne encore autrement : chaque échantillon capté à intervalle régulier reçoit une valeur codée sur seize bits ou davantage, et la succession de ces valeurs reconstitue l’onde.
Les instructions d’un programme obéissent au même principe. Une suite d’octets chargée en mémoire décrit une opération, ses opérandes et parfois l’adresse de la donnée à traiter. Rien ne distingue physiquement ces octets de ceux d’une image ou d’un texte : seule leur position et le contexte d’exécution décident de leur interprétation. Cette indifférence du support à la signification constitue la propriété la plus profonde du codage en base 2, et celle qui rend une machine capable de traiter indifféremment de la comptabilité, de la musique ou de la géométrie avec les mêmes circuits.
Les entiers signés et le complément à deux
Représenter les nombres négatifs demande une convention supplémentaire. La solution retenue presque partout consiste à réserver le bit de gauche au signe, puis à coder les valeurs négatives par ce qu’on appelle le complément à deux. Sur huit bits, le nombre moins un s’écrit 11111111, moins deux s’écrit 11111110, et la valeur la plus négative, moins 128, s’écrit 10000000.
L’intérêt de cette convention tient à un détail décisif : l’addition fonctionne sans modification. Le circuit additionne les bits comme si tout était positif, et le résultat sort correct, y compris quand un opérande est négatif. Une seule opération matérielle suffit donc pour les deux cas, ce qui simplifie considérablement le processeur. La contrepartie est l’asymétrie de la plage, qui descend jusqu’à moins 128 mais s’arrête à 127 du côté positif.
Ce que le binaire fait mal
Une réserve mérite d’être posée. Les fractions passent mal en base 2, parce que les seuls dénominateurs représentables exactement sont des puissances de deux. Un cinquième, un dixième ou un tiers ne tombent jamais juste et se codent par une approximation, exactement comme un tiers s’écrit 0,3333 sans fin en base dix. C’est la raison pour laquelle un calcul monétaire mené en nombres à virgule flottante peut aboutir à des centimes fantômes, et pourquoi les logiciels sérieux comptent en centimes entiers plutôt qu’en euros décimaux.
Ces conventions de codage irriguent tous les usages concrets. La circulation des octets d’une machine à l’autre est décrite dans le fonctionnement d’un réseau informatique, et le long chemin qui mène du signal à deux états jusqu’aux données modernes se lit dans l’histoire de la communication. Deux symboles, quelques conventions et beaucoup de rigueur : tout le reste en découle.