Chapitre 115 minDébutant
Bases de numération : décimal, binaire, hexadécimal
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- lire un nombre écrit en base 2, 10 ou 16 grâce aux poids des positions ;
- dire combien de valeurs on peut coder sur n bits ;
- expliquer pourquoi l'informatique utilise le binaire et l'hexadécimal ;
- distinguer bit, octet, ko et Kio.
5 exercices corrigés1 schéma
Une base de numération est la règle qui sert à écrire un nombre avec un nombre fixe de chiffres : 10 chiffres en base 10 (décimal), 2 en base 2 (binaire), 16 en base 16 (hexadécimal). Dans les trois cas, la valeur d'un chiffre dépend de sa position, et chaque position vaut une puissance de la base. Ce chapitre explique ce principe, montre comment lire un nombre écrit dans n'importe quelle base et pourquoi l'informatique utilise le binaire et l'hexadécimal.
Le principe : une numération de position
Tu utilises la base 10 depuis l'école primaire sans y penser. Dans 3 725, le chiffre 7 ne vaut pas 7 : il vaut 7 centaines, parce qu'il est en troisième position en partant de la droite. Chaque position vaut dix fois la précédente.
3725 = 3 × 1000 + 7 × 100 + 2 × 10 + 5 × 1
= 3 × 10³ + 7 × 10² + 2 × 10¹ + 5 × 10⁰
On appelle poids d'une position la puissance de la base qui lui correspond. On numérote les positions à partir de 0, de droite à gauche : la position 0 (les unités) a le poids 10⁰ = 1, la position 1 le poids 10¹ = 10, et ainsi de suite.
Cette idée se généralise à n'importe quelle base b ≥ 2 :
- on utilise b chiffres, de 0 à b − 1 ;
- le chiffre en position k vaut chiffre × bᵏ ;
- la valeur du nombre est la somme de ces produits.
Le même nombre peut donc s'écrire de plusieurs façons, selon la base. Le nombre de doigts de tes deux mains s'écrit 10 en base 10, 1010 en base 2 et A en base 16. C'est pourquoi on précise la base en indice dès qu'il y a un doute : (1010)₂ = (10)₁₀ = (A)₁₆. Écrire « 1010 = 10 » sans indice est faux, ou au moins ambigu : sur une copie, mets toujours les indices.
Le binaire (base 2)
Le binaire n'utilise que deux chiffres, 0 et 1. Un chiffre binaire s'appelle un bit (de l'anglais binary digit). Chaque position vaut deux fois la précédente : les poids sont les puissances de 2.
| Puissance | 2⁰ | 2¹ | 2² | 2³ | 2⁴ | 2⁵ | 2⁶ | 2⁷ | 2⁸ | 2⁹ | 2¹⁰ |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Valeur | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1 024 |
Pour lire un nombre binaire, tu écris le poids au-dessus de chaque bit et tu additionnes les poids des bits qui valent 1.
(10110110)₂ = 1 × 128 + 0 × 64 + 1 × 32 + 1 × 16 + 0 × 8 + 1 × 4 + 1 × 2 + 0 × 1 = 182.
Le bit le plus à droite, de poids 1, s'appelle le bit de poids faible ; le plus à gauche, le bit de poids fort. Le bit de poids faible dit si le nombre est pair (0) ou impair (1) : (10110110)₂ se termine par 0, 182 est pair.
Pour compter en binaire, tu fais comme en décimal : quand un chiffre dépasse le plus grand chiffre de la base (1), il revient à 0 et tu ajoutes une retenue à gauche.
| Décimal | Binaire | Décimal | Binaire |
|---|---|---|---|
| 0 | 0 | 8 | 1000 |
| 1 | 1 | 9 | 1001 |
| 2 | 10 | 10 | 1010 |
| 3 | 11 | 11 | 1011 |
| 4 | 100 | 12 | 1100 |
| 5 | 101 | 13 | 1101 |
| 6 | 110 | 14 | 1110 |
| 7 | 111 | 15 | 1111 |
Remarque que chaque puissance de 2 s'écrit avec un 1 suivi de zéros : 2 = (10)₂, 4 = (100)₂, 8 = (1000)₂. Et le nombre juste avant s'écrit avec que des 1 : 7 = (111)₂, 15 = (1111)₂.
Combien de valeurs sur n bits ?
Avec n bits, tu peux écrire 2ⁿ valeurs différentes, de 0 à 2ⁿ − 1. Chaque bit ajouté double le nombre de possibilités.
| Nombre de bits | Valeurs possibles | Plus grand entier | Où tu le croises |
|---|---|---|---|
| 1 | 2 | 1 | Un booléen : vrai ou faux |
| 4 | 16 | 15 | Un chiffre hexadécimal |
| 8 (un octet) | 256 | 255 | Un octet d'adresse IPv4, une composante de couleur |
| 16 | 65 536 | 65 535 | Les numéros de port TCP et UDP |
| 32 | 4 294 967 296 | 4 294 967 295 | Une adresse IPv4 entière, un INT UNSIGNED en SQL |
| 48 | environ 2,8 × 10¹⁴ | 2⁴⁸ − 1 | Une adresse MAC |
| 128 | environ 3,4 × 10³⁸ | 2¹²⁸ − 1 | Une adresse IPv6 |
C'est pour ça qu'un octet d'adresse IPv4 ne dépasse jamais 255 : 192.168.1.300 n'est pas une adresse valide, car 300 ne tient pas sur 8 bits. Et c'est pour ça que les ports vont de 0 à 65 535.
L'hexadécimal (base 16)
L'hexadécimal utilise seize chiffres. Comme il n'existe que dix chiffres arabes, on complète avec les lettres A à F :
| Chiffre hexadécimal | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Valeur décimale | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| Écriture binaire sur 4 bits | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
Les poids sont les puissances de 16 :
| Puissance | 16⁰ | 16¹ | 16² | 16³ | 16⁴ |
|---|---|---|---|---|---|
| Valeur | 1 | 16 | 256 | 4 096 | 65 536 |
Pour lire un nombre hexadécimal, tu remplaces chaque lettre par sa valeur et tu multiplies par les poids :
- (2F)₁₆ = 2 × 16 + 15 × 1 = 32 + 15 = 47 ;
- (1A3)₁₆ = 1 × 256 + 10 × 16 + 3 × 1 = 256 + 160 + 3 = 419 ;
- (FF)₁₆ = 15 × 16 + 15 = 240 + 15 = 255, le plus grand nombre d'un octet.
Pourquoi l'informatique utilise le binaire et l'hexadécimal
Un ordinateur ne manipule que deux états électriques : le courant passe ou ne passe pas, une cellule de mémoire est chargée ou non, une zone d'un disque est magnétisée dans un sens ou dans l'autre. Deux états, deux chiffres : toute information (nombre, texte, image, son, programme) est stockée en binaire.
Le binaire a un défaut pour les humains : il est long. 182 s'écrit avec 8 bits, une adresse IPv6 avec 128. L'hexadécimal résout ce problème : comme 16 = 2⁴, un chiffre hexadécimal remplace exactement 4 bits, et un octet (8 bits) s'écrit toujours avec 2 chiffres hexadécimaux. La conversion entre les deux bases se fait de tête, par paquets de 4 bits (chapitre 2). L'hexadécimal est donc une façon compacte et lisible d'écrire du binaire.
| Où tu croises l'hexadécimal | Exemple | Ce que c'est |
|---|---|---|
| Adresse MAC | 3C:52:82:1A:F0:7E | 6 octets, chacun écrit avec 2 chiffres hexadécimaux |
| Adresse IPv6 | 2001:db8:85a3::8a2e:370:7334 | 8 groupes de 16 bits, chacun écrit avec 4 chiffres hexadécimaux |
| Couleur en CSS | #1E90FF | Rouge, vert, bleu : un octet chacun (30, 144, 255) |
| Caractère Unicode | U+00E9 | Le numéro du caractère « é » (233) |
| Empreinte SHA-256 | 9f86d081884c7d65… | 256 bits, soit 64 chiffres hexadécimaux |
| Code d'erreur Windows | 0x80070005 | « Accès refusé », un entier de 32 bits |
| Adresse mémoire | 0x7ffd5c3a | La position d'une donnée en mémoire, dans un débogueur |
Les notations dans les langages
Chaque contexte a sa façon de signaler la base. Retiens les plus courantes :
| Base | Notation mathématique | Python, C, Java, JavaScript | Autres notations |
|---|---|---|---|
| 2 | (1011)₂ | 0b1011 | 1011b |
| 10 | (11)₁₀ ou 11 | 11 | |
| 16 | (B)₁₆ | 0xB | Bh, #B (couleurs), &HB (VBA) |
En Python, 0b1011 et 0xB sont simplement des façons d'écrire l'entier 11 : 0b1011 == 0xB == 11 vaut True. La base ne change que l'écriture, jamais la valeur.
Bits, octets et unités de stockage
Un octet (byte en anglais) est un groupe de 8 bits. C'est l'unité de base de la mémoire : chaque adresse mémoire désigne un octet, et les tailles de fichiers se comptent en octets. Le symbole de l'octet est o (et B en anglais) ; celui du bit est b ou bit. Ne confonds pas les deux : un débit de 100 Mbit/s (mégabits par seconde) correspond à 12,5 Mo/s au plus, puisqu'il faut 8 bits pour un octet.
Pour les multiples, deux systèmes coexistent :
| Préfixe décimal (SI) | Valeur | Préfixe binaire (CEI) | Valeur |
|---|---|---|---|
| kilooctet (ko) | 10³ = 1 000 o | kibioctet (Kio) | 2¹⁰ = 1 024 o |
| mégaoctet (Mo) | 10⁶ o | mébioctet (Mio) | 2²⁰ = 1 048 576 o |
| gigaoctet (Go) | 10⁹ o | gibioctet (Gio) | 2³⁰ = 1 073 741 824 o |
| téraoctet (To) | 10¹² o | tébioctet (Tio) | 2⁴⁰ o |
Les fabricants de disques utilisent les préfixes décimaux : un disque de 1 To contient 10¹² octets. Windows divise par 2³⁰ mais affiche « Go » : il annonce donc 10¹² ÷ 2³⁰ ≈ 931 Go pour ce disque. Aucun octet n'a disparu, seule l'unité diffère. macOS (Finder) compte en puissances de 10 et affiche bien 1 To ; sous Linux, df -h utilise les puissances de 2 (symboles G, T) et df -H les puissances de 10.
Pour aller plus loin : la base 8 (octal)
Exercices
Exercice 1 sur 5 Lire un nombre binaire Réussi À revoir
Donne l'écriture décimale de chaque nombre.
- (1101)₂
- (100000)₂
- (11111111)₂
- (1100100)₂
- (1000000000)₂
Voir la réponseMasquer la réponse de l'exercice 1
- (1101)₂ = 8 + 4 + 1 = 13.
- (100000)₂ = 2⁵ = 32 : un 1 suivi de cinq 0.
- (11111111)₂ = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255. Plus vite : huit 1, c'est 2⁸ − 1 = 255.
- (1100100)₂ = 64 + 32 + 4 = 100.
- (1000000000)₂ = 2⁹ = 512 : un 1 suivi de neuf 0.
Tu avais trouvé ?
Exercice 2 sur 5 Lire un nombre hexadécimal Réussi À revoir
Donne l'écriture décimale de chaque nombre.
- (1F)₁₆
- (80)₁₆
- (C8)₁₆
- (3E8)₁₆
- (FFFF)₁₆
Voir la réponseMasquer la réponse de l'exercice 2
- (1F)₁₆ = 1 × 16 + 15 = 31.
- (80)₁₆ = 8 × 16 = 128.
- (C8)₁₆ = 12 × 16 + 8 = 192 + 8 = 200.
- (3E8)₁₆ = 3 × 256 + 14 × 16 + 8 = 768 + 224 + 8 = 1 000.
- (FFFF)₁₆ = 15 × 4 096 + 15 × 256 + 15 × 16 + 15 = 61 440 + 3 840 + 240 + 15 = 65 535. Plus vite : 4 chiffres F, ce sont 16 bits à 1, soit 2¹⁶ − 1 = 65 535.
Tu avais trouvé ?
Exercice 3 sur 5 Combien de bits ? Réussi À revoir
- Combien de valeurs différentes peut-on coder sur 6 bits ? Quel est le plus grand entier ?
- Une entreprise veut donner un numéro unique, codé en binaire, à chacun de ses 1 500 équipements. Combien de bits faut-il au minimum ?
- Combien de chiffres hexadécimaux faut-il pour écrire une adresse IPv4 entière (32 bits) ? Une adresse MAC (48 bits) ?
Voir la réponseMasquer la réponse de l'exercice 3
- 2⁶ = 64 valeurs, de 0 à 63.
- Il faut 2ⁿ ≥ 1 500. 2¹⁰ = 1 024 ne suffit pas, 2¹¹ = 2 048 suffit : 11 bits.
- Un chiffre hexadécimal code 4 bits : 32 ÷ 4 = 8 chiffres pour une adresse IPv4, 48 ÷ 4 = 12 chiffres pour une adresse MAC (les 6 paires de
3C:52:82:1A:F0:7E).
Tu avais trouvé ?
Exercice 4 sur 5 Le disque qui rétrécit Réussi À revoir
Un technicien installe un SSD vendu pour 500 Go dans un poste Windows. L'utilisateur se plaint : l'explorateur n'affiche qu'environ 465 Go. Explique-lui pourquoi, avec le calcul.
Voir la réponseMasquer la réponse de l'exercice 4
Le fabricant compte en puissances de 10 : 500 Go = 500 × 10⁹ octets. Windows divise par 2³⁰ = 1 073 741 824 et affiche le résultat avec le symbole « Go » :
500 × 10⁹ ÷ 2³⁰ ≈ 465,66.
Le disque contient bien 500 milliards d'octets : c'est le même nombre, exprimé dans deux unités différentes (465,66 Gio en réalité). Une petite partie est aussi réservée par le système de fichiers, mais l'essentiel de l'écart vient de l'unité.
Tu avais trouvé ?
Exercice 5 sur 5 Vrai ou faux Réussi À revoir
Justifie chaque réponse.
- (100)₂ = (4)₁₀.
- Un nombre binaire qui se termine par 1 est impair.
- (10)₁₆ = (10)₁₀.
- Un octet s'écrit toujours avec exactement deux chiffres hexadécimaux (en comptant les 0 de tête).
- L'adresse
10.0.256.1est une adresse IPv4 valide.
Voir la réponseMasquer la réponse de l'exercice 5
- Vrai : (100)₂ = 1 × 2² = 4.
- Vrai : tous les poids sont pairs sauf le dernier (2⁰ = 1). Le nombre est pair plus 1, donc impair.
- Faux : (10)₁₆ = 1 × 16 + 0 = 16.
- Vrai : un octet va de 0 à 255, soit de (00)₁₆ à (FF)₁₆ ; un chiffre hexadécimal code 4 bits, deux en codent 8.
- Faux : chaque octet d'une adresse IPv4 va de 0 à 255, et 256 demande 9 bits.
Tu avais trouvé ?