Accueil/Mathématiques /Chapitre 01 hors programme

Systèmes de numération

Une machine ne sait dire que « courant » ou « pas de courant ». Tout le reste — vos photos, vos adresses IP, ce texte — n'est qu'une façon d'écrire des nombres avec deux chiffres.

📌

Résumé flash

Dans toute base, la position d'un chiffre fixe son poids : une puissance de la base. En base 10 ce sont les puissances de 10, en base 2 celles de 2, en base 16 celles de 16. Convertir, c'est passer d'un jeu de poids à un autre — par soustractions (on retire les poids du plus grand au plus petit) ou par divisions successives (on lit les restes à l'envers). Et l'hexadécimal n'existe que pour une raison : un chiffre hexa = exactement quatre bits.

🔑 #base #poids #binaire #bit #quartet #octet #hexadécimal #méthode-soustractive #divisions-successives #retenue #emprunt #complément-à-deux #partie-fractionnaire

⚠️ Ce chapitre n'est pas au programme de l'épreuve

Il a bien été enseigné, mais la numération ne figure pas au programme de mathématiques du BTS CIEL : aucune question de l'épreuve ne portera dessus. L'étiquette rouge « hors programme » le rappelle sur les quatre fiches et dans l'index du pôle.

Il reste en ligne, et il reste compté, parce qu'il sert ailleurs : les masques de sous-réseau sont du binaire, les couleurs du Web de l'hexadécimal, et les opérateurs de bits du langage C ne se comprennent pas autrement.

À réviser pour les réseaux et pour le C, pas pour l'épreuve de maths. C'est précisément le genre de chose qu'on ne veut pas découvrir la veille.

01Le principe de position

On écrit 247 depuis l'école primaire sans jamais se demander pourquoi cela vaut deux cent quarante-sept. La réponse tient en un mot : la position.

calcul
247₁₀ = 2 centaines + 4 dizaines + 7 unités

      = 2 × 100  +  4 × 10  +  7 × 1

      = 2 × 10²  +  4 × 10¹ +  7 × 10⁰

Le chiffre 2 ne vaut pas « deux » : il vaut « deux fois cent », parce qu'il occupe la troisième position en partant de la droite. C'est la position qui porte le poids, pas le chiffre.

🧰 La règle, dans n'importe quelle base
base b → b chiffres, de 0 à b − 1
poids de la position n (à partir de 0, à droite) = bn
BaseNomChiffres disponiblesPoids
10décimal0 1 2 3 4 5 6 7 8 9 1, 10, 100, 1000…
2binaire0 1 1, 2, 4, 8, 16, 32…
16hexadécimal0…9 puis A B C D E F 1, 16, 256, 4096…

Et une règle qui sert partout : x0 = 1, quel que soit x non nul. C'est pourquoi la colonne de droite vaut toujours 1, dans toutes les bases.

🔗 Le compteur kilométrique

Sur un compteur, chaque roue affiche 0 à 9. Quand la roue des unités passe de 9 à 0, elle entraîne celle des dizaines. La base 10 tient entièrement dans ce mécanisme : dix positions par roue, et une retenue quand on fait le tour.

Un compteur binaire aurait des roues à deux positions : 0, 1, puis retour à 0 en entraînant la voisine. C'est exactement pourquoi 1 + 1 = 10 en binaire — la roue a fait le tour.

💡 Pourquoi la machine compte en base 2

Un transistor n'a que deux états stables : il laisse passer le courant, ou non. Construire un composant qui distingue deux niveaux de tension est simple et fiable ; en distinguer dix demanderait des seuils serrés, sensibles à la température et au bruit. La base 2 n'a pas été choisie pour ses qualités mathématiques : elle a été choisie parce qu'elle est la plus facile à fabriquer.

02Le système binaire

Deux chiffres : 0 et 1. Les poids sont les puissances de 2. Le tableau ci-dessous est l'outil unique de tout le chapitre — c'est lui qu'il faut savoir réécrire de mémoire.

exposant valeur 1011₂ 2¹⁰ 2⁹ 2⁸ 2⁷ 2⁶ 2⁵ 2⁴ 2³ 2² 2¹ 2⁰ 1024 512 256 128 64 32 16 8 4 2 1 1 0 1 1 on additionne les poids des colonnes qui portent un 1 8 + 0 + 2 + 1 = 11₁₀ les colonnes à 0 ne comptent pas — on peut les ignorer
Le tableau des poids : la seule chose à retenir par cœur. Chaque valeur est le double de sa voisine de droite.
🧰 Le vocabulaire, à employer juste
TermeTailleCe qu'il représente
bit1 chiffre binaire 0 ou 1 — de l'anglais binary digit
quartet4 bits 0 à 15 — soit exactement un chiffre hexadécimal
octet8 bits 0 à 255 — l'unité de base de la mémoire et des adresses IP
mot16, 32 ou 64 bits ce que le processeur traite d'un coup
🔧 Corrigé — un chiffre hexadécimal n'est pas un « bit »

Le cours d'origine présente l'hexadécimal ainsi : « 16 chiffres (digits, bits) de 0 à 9 puis de A à F ». Le mot bit y est employé à tort.

bit = binary digit = un chiffre binaire
il ne vaut que 0 ou 1, jamais A ni F

Un chiffre hexadécimal vaut 0 à 15 : il lui faut 4 bits. Dire qu'un F est un bit revient à dire qu'un chiffre décimal en est un. La confusion est sans conséquence sur les calculs, mais elle gêne exactement là où l'on en a besoin — pour comprendre que 8B7₁₆ fait 12 bits, soit un octet et demi.

⚠️ Piège d'examen — 2⁸ vaut 256, mais un octet s'arrête à 255
8 bits → 2⁸ = 256 valeurs
de 0 à 255

256 valeurs différentes, mais la plus grande vaut 255 — parce qu'on commence à compter à zéro. C'est l'erreur d'un cran (off-by-one), et elle revient à chaque chapitre : en adressage IP, un octet va de 0 à 255 ; un sous-réseau /24 offre 2⁸ − 2 = 254 adresses utilisables.

🧠 Auto-évaluation

Sans calculatrice : combien vaut 2¹⁰ ? Et pourquoi ce nombre revient-il partout en informatique ?

2¹⁰ = 1024. On double dix fois à partir de 1 : 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024.

Il revient partout parce que 1024 est presque mille. Les informaticiens ont donc détourné les préfixes du système métrique : 1 kio = 1024 octets, 1 Mio = 1024 kio, 1 Gio = 1024 Mio. D'où l'écart qui étonne tout le monde : un disque vendu « 500 Go » (500 × 10⁹ octets, la définition commerciale) affiche 465 Gio dans le système d'exploitation. Personne n'a triché — ce sont deux unités différentes.

Apprenez les puissances de 2 jusqu'à 2¹⁰ comme on apprend les tables de multiplication. Tout le chapitre en dépend, et l'adressage IP aussi.

03Binaire → décimal

C'est le sens facile : on décompose, on additionne. Une seule chose à ne pas rater — l'alignement des exposants.

calcul
1011₂ = 1 × 2³ + 0 × 2² + 1 × 2¹ + 1 × 2⁰
      = 1 × 8  + 0 × 4  + 1 × 2  + 1 × 1
      = 8 + 0 + 2 + 1
      = 11₁₀
calcul
1011101₂ = 1×2⁶ + 0×2⁵ + 1×2⁴ + 1×2³ + 1×2² + 0×2¹ + 1×2⁰
         = 64 + 0 + 16 + 8 + 4 + 0 + 1
         = 93₁₀
🧭 La méthode sûre, en trois gestes
  1. Compter les bits. 1011101 en compte 7, donc l'exposant le plus à gauche est 7 − 1 = 6. C'est là que se jouent la moitié des erreurs.
  2. Écrire les poids au-dessus, de gauche à droite : 64, 32, 16, 8, 4, 2, 1.
  3. N'additionner que les colonnes qui portent un 1. Les zéros ne servent qu'à tenir la place.
64 + 16 + 8 + 4 + 1 = 93 — trois termes de moins à écrire
⚠️ L'exposant de droite est 0, pas 1

Sur 1011, le bit le plus à droite porte 2⁰ = 1, pas 2¹. On numérote les positions à partir de zéro. Un décalage d'un cran sur toute la ligne double le résultat — et le calcul paraît pourtant impeccable.

Le contrôle en deux secondes : un nombre binaire qui finit par 1 est impair, puisque seul 2⁰ apporte une unité. 1011 finit par 1 → 11, impair. Si vous trouvez un nombre pair, l'alignement est faux.

💡 Un espace tous les quatre bits

Le cours écrit 101 0100 0111 plutôt que 101010001112. Ce découpage en quartets, depuis la droite, n'est pas décoratif : il évite de perdre le compte, et chaque groupe de quatre se traduit ensuite directement en un chiffre hexadécimal (section 10).

Prenez l'habitude dès maintenant : 10101000111 devient 101 0100 0111, et l'erreur d'alignement disparaît presque toujours d'elle-même.

04Décimal → binaire

Deux méthodes, enseignées toutes les deux. Elles donnent le même résultat ; mieux vaut en maîtriser une parfaitement et connaître l'autre pour vérifier.

Méthode 1 — les soustractions successives

On part du plus gros poids qui tient dans le nombre, et on le retire. Le chiffre écrit est 1 si le poids tient, 0 sinon.

calcul — 392 en binaire
392 − 1 × 256 = 136      ← 256 tient       → 1
136 − 1 × 128 =   8      ← 128 tient       → 1
  8 − 0 ×  64 =   8      ← 64 ne tient pas → 0
  8 − 0 ×  32 =   8                        → 0
  8 − 0 ×  16 =   8                        → 0
  8 − 1 ×   8 =   0      ← 8 tient         → 1
  0 − 0 ×   4 =   0                        → 0
  0 − 0 ×   2 =   0                        → 0
  0 − 0 ×   1 =   0                        → 0

392₁₀ = 1 1000 1000₂
⚠️ Le reste se reporte, même quand il ne change pas

Une fois 8 − 1 × 8 = 0, les lignes suivantes partent de 0, pas de 8. Le cours d'origine recopie 8 sur les trois dernières lignes : le résultat final reste bon, mais la colonne de gauche devient fausse — et si l'on s'y fie pour vérifier, on croit avoir encore 8 à placer.

Le contrôle : la dernière ligne doit toujours aboutir à 0. Si vous terminez sur autre chose, il reste un poids à placer.

Méthode 2 — les divisions successives par 2

On divise par 2, encore et encore, et l'on note les restes. Le résultat se lit de bas en haut.

calcul — 251 en binaire
251 │ 2
  1 │ 125 │ 2
      1 │ 62 │ 2
           0 │ 31 │ 2
                1 │ 15 │ 2
                     1 │ 7 │ 2
                         1 │ 3 │ 2
                             1 │ 1 │ 2
                                 1 │ 0

on lit les restes du DERNIER au PREMIER :  1 1 1 1 1 0 1 1

251₁₀ = 1111 1011₂
🧭 Laquelle choisir
SoustractionsDivisions par 2
Prérequisconnaître les puissances de 2 par cœur savoir diviser par 2
Sens de lecturede gauche à droite, dans l'ordre d'écriture de bas en haut — le piège
Grands nombresrapide si l'on connaît ses poids long mais mécanique, sans réflexion
Risqueoublier une colonne à 0 lire les restes à l'endroit

En examen : faites-en une, vérifiez avec l'autre sens (reconvertissez en décimal, section 3). Deux minutes de plus, et l'erreur ne passe pas.

🧠 Auto-évaluation

Convertissez 397₁₀ en binaire par la méthode qui vous paraît la plus sûre, puis vérifiez par l'autre sens.

calcul — soustractions
397 − 1 × 256 = 141    → 1
141 − 1 × 128 =  13    → 1
 13 − 0 ×  64 =  13    → 0
 13 − 0 ×  32 =  13    → 0
 13 − 0 ×  16 =  13    → 0
 13 − 1 ×   8 =   5    → 1
  5 − 1 ×   4 =   1    → 1
  1 − 0 ×   2 =   1    → 0
  1 − 1 ×   1 =   0    → 1

397₁₀ = 1 1000 1101₂

Vérification — on repart du binaire :

calcul
1 1000 1101₂ = 256 + 128 + 8 + 4 + 1 = 397 ✔

Deux contrôles gratuits : le nombre finit par 1 donc il est impair — 397 l'est ✔ ; et 397 est entre 256 et 512, donc il lui faut 9 bits — on en a bien 9 ✔.

05Addition et soustraction

L'addition

Quatre cas, et c'est tout. Le quatrième est le seul qui demande de l'attention.

OpérationRésultatCe qui se passe
0 + 00—
0 + 11—
1 + 01—
1 + 110 on écrit 0, on retient 1

C'est le compteur qui fait le tour : 1₂ + 1₂ = 10₂, et en décimal 1 + 1 = 2. Les deux disent la même chose.

calcul
     ¹
   1 0 0 1        1001₂ = 9₁₀
+    1 0 1        0101₂ = 5₁₀
─────────
   1 1 1 0        1110₂ = 14₁₀     et 9 + 5 = 14 ✔
🧰 Additionner plus de deux 1 à la fois

Dans une colonne, on peut se retrouver avec trois ou quatre 1 (les bits plus les retenues). On ne devine pas le résultat : on additionne deux par deux.

calcul
1 + 1 + 1        1 + 1 + 1 + 1

  1               1       10      11
+ 1              +1      + 1     + 1
────             ───     ────    ────
 10               10      11     100

1+1+1 = 11₂ = 3₁₀        1+1+1+1 = 100₂ = 4₁₀

On retrouve le décimal : 11₂ = 3 et 100₂ = 4. La retenue d'une colonne peut donc valoir 2 — c'est le cas où l'on se trompe.

La soustraction

OpérationRésultatCe qui se passe
0 − 00—
1 − 01—
1 − 10—
0 − 11 emprunt de 2 à la colonne de gauche
🔗 L'emprunt, comme à l'école — mais on emprunte 2

En décimal, pour faire 3 − 7 on emprunte 10 au voisin : 13 − 7 = 6, et le voisin perd 1. En binaire, on emprunte 2 : 0 − 1 devient 2 − 1 = 1, et le voisin perd 1.

C'est le même geste, avec une autre valeur de prêt. Rien de neuf — seulement la base qui change.

calcul
   1 0 1 0 1 0 0 1        10101001₂ = 169₁₀
 −   0 1 0 1 0 0 1 1   →  01010011₂ =  19₁₀   (sur 8 bits)
 ─────────────────────
   1 0 0 1 0 1 1 0        10010110₂ = 150₁₀

vérification en décimal :  169 − 19 = 150 ✔
🧭 Vérifier toujours en repassant par le décimal

C'est la méthode que le cours applique systématiquement, et c'est la bonne : on convertit les deux opérandes et le résultat, puis on refait l'opération en base 10. Trois conversions de plus, mais une certitude.

poser en binaire → convertir les trois nombres →
refaire l'opération en décimal → comparer

En examen, cette vérification rapporte des points par elle-même : elle montre que le résultat est maîtrisé, pas trouvé au hasard.

06Quand A est plus petit que B

Poser A − B avec A < B produit un résultat aberrant. Le cours traite le cas de front, et c'est l'un des passages les plus utiles du chapitre.

calcul
A = 1001 1101₂ = 157₁₀
B = 1010 0001₂ = 161₁₀

   1 0 0 1 1 1 0 1        ← A
 − 1 0 1 0 0 0 0 1        ← B
 ─────────────────
   1 1 1 1 1 1 0 0        ← ??? un nombre PLUS GRAND que A

Le résultat est plus grand que le nombre de départ : c'est impossible pour une soustraction de nombres positifs. Le signal est net.

🧰 La règle : on inverse, puis on met le signe
Si A < B : calculer B − A,
puis écrire A − B = − (B − A)
calcul
   1 0 1 0 0 0 0 1        ← B
 − 1 0 0 1 1 1 0 1        ← A
 ─────────────────
   0 0 0 0 0 1 0 0        ← B − A = 100₂ = 4₁₀

donc  A − B = − 100₂ = − 4₁₀

contrôle : 157 − 161 = − 4 ✔

C'est la propriété a − b = −(b − a), qu'on utilise sans y penser en base 10 : pour calculer 3 − 7, on fait 7 − 3 = 4 et l'on écrit −4.

💡 Ce résultat « aberrant » n'en est pas un

Le premier calcul avait donné 1111 1100. Converti bêtement, cela fait 252. Or 252 = 256 − 4, et le résultat attendu était −4. Ce n'est pas une coïncidence : c'est le complément à deux, la façon dont tous les processeurs représentent les nombres négatifs.

sur n bits : −x s'écrit 2n − x

Sur 8 bits, le bit de gauche devient un bit de signe : 0 pour positif, 1 pour négatif. La plage n'est plus 0…255 mais −128…+127. Et le circuit qui additionne sait alors soustraire sans rien changer — il additionne le complément.

Le cours ne va pas jusque-là, mais le DST de novembre comportait un exercice intitulé « Nombres binaires signés » : la notion est attendue. Retenez au moins ceci — un résultat plus grand que l'opérande de départ signale un nombre négatif en complément à deux, pas une erreur de calcul.

🧠 Auto-évaluation

Calculez W = X − Y avec X = 0101 1001₂ et Y = 0101 1111₂, puis vérifiez en décimal.

1. Comparer d'abord. Les deux nombres commencent par 0101 ; ils diffèrent sur le second quartet : 1001 (9) contre 1111 (15). Donc X < Y : le résultat sera négatif.

calcul — on pose Y − X
   0 1 0 1 1 1 1 1        ← Y
 − 0 1 0 1 1 0 0 1        ← X
 ─────────────────
   0 0 0 0 0 1 1 0        ← Y − X = 110₂ = 6₁₀

donc  W = X − Y = − 110₂ = − 6₁₀

2. Vérification en décimal.

calcul
X = 0101 1001₂ = 64 + 16 + 8 + 1 = 89₁₀
Y = 0101 1111₂ = 64 + 16 + 8 + 4 + 2 + 1 = 95₁₀

89 − 95 = − 6  ✔

Le réflexe qui fait gagner du temps : comparer avant de poser. Deux nombres de même longueur se comparent quartet par quartet, de gauche à droite — le premier qui diffère décide.

07Multiplication et division

La multiplication

La table est ridiculement simple — plus simple que celle de la base 10, qu'il faut apprendre par cœur pendant des années.

0 × 0 = 00 × 1 = 0 1 × 0 = 01 × 1 = 1

Multiplier par 0 donne une ligne de zéros, par 1 recopie le nombre. Toute la difficulté est dans le décalage des lignes.

calcul
       1 0 1 1          1011₂ = 11₁₀
   ×     1 0 1          0101₂ =  5₁₀
   ───────────
       1 0 1 1          ← × 1 (unités)
     0 0 0 0 ·          ← × 0, décalé d'un rang
   1 0 1 1 · ·          ← × 1, décalé de deux rangs
   ───────────
   1 1 0 1 1 1          110111₂ = 55₁₀     et 11 × 5 = 55 ✔
💡 Multiplier par 2, c'est décaler d'un cran

Ajouter un 0 à droite d'un nombre binaire le double — comme ajouter un 0 à droite d'un nombre décimal le multiplie par 10.

calcul
1011₂  = 11₁₀
10110₂ = 22₁₀        ← un 0 ajouté : ×2
101100₂ = 44₁₀       ← deux 0 : ×4

C'est le fondement des opérateurs << et >> qu'on retrouve en Python et en C : x << 3 multiplie par 8, et c'est bien plus rapide qu'une vraie multiplication.

La division euclidienne

La division binaire repose sur la même identité qu'en base 10 — celle qu'on retrouvera au chapitre arithmétique :

a = b × q + r
dividende = diviseur × quotient + reste  ·  avec 0 ⩽ r < b
calcul — en base 10 d'abord
340 ÷ 32 = 10,6…      on ne garde que le quotient ENTIER : 10

r = 340 − 32 × 10 = 20

340 = 32 × 10 + 20        ← a = b × q + r  ✔
calcul — la même chose en binaire
  1 0 1 1 1 │ 1 0 1
− 1 0 1     │ ───────
 ─────────  │  1 0 0
      1 1   │

10111₂ = 101₂ × 100₂ + 11₂

contrôle en décimal :  23 = 5 × 4 + 3  ✔
⚠️ Le reste est toujours plus petit que le diviseur

Si vous obtenez r ⩾ b, le quotient est trop petit : le diviseur tient encore une fois de plus. C'est le contrôle le plus rapide d'une division, dans n'importe quelle base.

Exemple : 111010₂ ÷ 11₂ donne q = 10011₂ et r = 1₂. En décimal, 58 = 3 × 19 + 1, et 1 < 3 ✔.

08La partie fractionnaire

À droite de la virgule, les poids continuent — avec des exposants négatifs. Rien de nouveau : la règle de position ne s'arrête pas à la virgule.

2³2²2¹2⁰, 2⁻¹2⁻²2⁻³2⁻⁴
8421, 0,50,250,1250,0625
x−n = 1 / xn
🔧 Corrigé — 2² ne vaut pas 0,25

Le cours écrit, à la suite :

calcul — ce qui était écrit
2⁻¹ = 1/2  = 0,5           ✔
2²  = 1/2² = 1/4 = 0,25    ✘  l'exposant a perdu son signe

Il fallait lire 2⁻². 2² vaut 4, pas 0,25 — ce sont même deux nombres inverses l'un de l'autre. La suite du calcul est juste ; seul l'exposant a sauté à la recopie. Mais relu tel quel, ce passage installe une confusion durable.

exposant positif → on multiplie → le nombre grandit
exposant négatif → on divise → le nombre rapetisse

Convertir un nombre à virgule

On traite les deux parties séparément, puis on recolle.

calcul — 21,625 en binaire
PARTIE ENTIÈRE                  PARTIE FRACTIONNAIRE
21 = 16 + 4 + 1                 méthode soustractive :
   = 10101₂                     0,625 − 1 × 0,5   = 0,125   → 1
                                0,125 − 0 × 0,25  = 0,125   → 0
                                0,125 − 1 × 0,125 = 0       → 1
                                              → 0,101₂

21,625₁₀ = 10101,101₂
🧰 L'autre méthode : multiplications successives par 2

Plus mécanique, et sans avoir à connaître 0,5 / 0,25 / 0,125 par cœur. On multiplie la partie fractionnaire par 2 et l'on ramasse la partie entière à chaque tour.

calcul
0,625 × 2 = 1,25    → on prend 1, il reste 0,25
0,25  × 2 = 0,5     → on prend 0, il reste 0,5
0,5   × 2 = 1       → on prend 1, il reste 0  → on s'arrête

on lit dans l'ORDRE d'obtention :  0,101₂
Partie entière → on lit les restes à l'envers
Partie fractionnaire → on lit les retenues à l'endroit

Les deux sens opposés sont la source d'erreur numéro un. Retenez-les ensemble, jamais séparément.

⚠️ Piège d'examen — 0,1 n'existe pas en binaire

Essayez de convertir 0,1 : 0,1 × 2 = 0,2 → 0 ; 0,2 × 2 = 0,4 → 0 ; 0,4 × 2 = 0,8 → 0 ; 0,8 × 2 = 1,6 → 1 ; 0,6 × 2 = 1,2 → 1 ; 0,2 × 2 = 0,4 → et l'on revient au deuxième tour. Le motif 0011 se répète à l'infini.

0,1₁₀ = 0,0001100110011…₂ — périodique

La machine doit couper quelque part : elle stocke une valeur approchée. C'est pour cela qu'en Python 0.1 + 0.2 affiche 0.30000000000000004. Ce n'est pas un bug, c'est cette impossibilité. Et c'est pourquoi on ne compare jamais deux nombres à virgule par ==, et qu'on ne stocke jamais un montant en euros dans un float — on compte en centimes, avec des entiers.

09L'hexadécimal

Seize chiffres : 0 à 9, puis A à F pour représenter 10 à 15 — parce qu'il n'existe pas de chiffre unique pour « dix ».

Déc.BinaireHexa Déc.BinaireHexa
000000 810008
100011 910019
200102 101010A
300113 111011B
401004 121100C
501015 131101D
601106 141110E
701117 151111F
🧰 Pourquoi l'hexadécimal existe — la seule raison
16 = 2⁴  →  1 chiffre hexa = exactement 4 bits
1 octet = 8 bits = exactement 2 chiffres hexa

L'hexadécimal n'apporte rien de nouveau : c'est du binaire écrit plus court, et surtout sans perte d'alignement. Comparez :

calcul
binaire      1101 0110 1010 1111     ← 16 caractères, et on perd le compte
hexadécimal  D    6    A    F        ← 4 caractères, chacun = 1 quartet
décimal      54959                   ← court, mais AUCUN lien avec les bits

Le décimal est plus court encore — mais il est inutilisable ici : rien dans « 54959 » ne dit quels bits sont à 1. L'hexadécimal garde la structure binaire visible tout en divisant la longueur par quatre. C'est la raison de sa présence dans les adresses MAC, les couleurs du web, les vidages mémoire et les adresses IPv6.

⚠️ Toujours écrire la base en indice

10 vaut dix en décimal, deux en binaire et seize en hexadécimal. Sans indication de base, une copie est ambiguë — et une ambiguïté coûte le point.

10₁₀ = 10  ·  10₂ = 2  ·  10₁₆ = 16

Les conventions équivalentes en programmation : 0b1010 pour le binaire, 0x1A ou 1Ah pour l'hexadécimal, et en CSS #FF0000. Elles disent toutes la même chose : attention, ce n'est pas du décimal.

💡 A est un chiffre, pas une lettre

Dans 2A3₁₆, le A occupe une position et porte un poids, exactement comme le 2 et le 3. Il se comporte comme un chiffre, il s'additionne comme un chiffre : A + 1 = B, et F + 1 = 10₁₆ — la retenue, comme 9 + 1 = 10 en décimal.

Le déclic vient quand on cesse de lire « A » comme une lettre pour le lire comme « le chiffre qui vaut dix ».

10Les conversions hexadécimales

Hexa ↔ binaire : la conversion gratuite

Un chiffre hexa ↔ un quartet. Aucun calcul : on remplace, terme à terme.

calcul
8 B 7₁₆

8 → 1000        B → 1011        7 → 0111

8B7₁₆ = 1000 1011 0111₂

et dans l'autre sens, on regroupe par 4 EN PARTANT DE LA DROITE :

1 1010 1111₂  →  0001 1010 1111  →  1 A F  →  1AF₁₆
                 ↑ on complète avec des zéros à gauche
⚠️ Le regroupement part de la droite

Pour 110101111₂ (9 bits), grouper depuis la gauche donnerait 1101 0111 1 — et le dernier groupe, incomplet, serait lu 1 au lieu de 0001. Le résultat serait faux d'un facteur 8.

On part toujours de la droite et l'on complète à gauche par des zéros. C'est la même raison qui fait écrire les nombres binaires par quartets depuis le début du chapitre.

Décimal → hexa : méthode soustractive

Mêmes gestes qu'en binaire, avec les poids 1, 16, 256, 4096, 65 536.

calcul — 3151 en hexadécimal
combien de fois 256 dans 3151 ?   3151 ÷ 256 = 12,3…  → 12  (soit C)

3151 − 12 × 256 = 3151 − 3072 =  79      → C
  79 −  4 ×  16 =   79 −   64 =  15      → 4
  15 − 15 ×   1 =              =   0     → F

3151₁₀ = C4F₁₆

contrôle :  12 × 256 + 4 × 16 + 15 = 3072 + 64 + 15 = 3151 ✔

Décimal → hexa : divisions successives

calcul — 3167 en hexadécimal
3167 │ 16
  15 │ 197 │ 16          3167 = 16 × 197 + 15     ← a = b × q + r
        5  │ 12 │ 16      197 = 16 ×  12 +  5
             12 │  0       12 = 16 ×   0 + 12

restes lus de bas en haut :  12 , 5 , 15  →  C , 5 , F

3167₁₀ = C5F₁₆

contrôle :  12 × 256 + 5 × 16 + 15 = 3072 + 80 + 15 = 3167 ✔
🧭 Le chemin le plus court passe par le binaire

Pour convertir un décimal en hexadécimal, beaucoup d'étudiants gagnent du temps en passant par le binaire, qu'ils maîtrisent mieux :

décimal → binaire → regrouper par quartets → hexadécimal
calcul — 219 par les deux chemins
DIRECT                          PAR LE BINAIRE
219 │ 16                        219 = 128 + 64 + 16 + 8 + 2 + 1
 11 │ 13 │ 16                       = 1101 1011₂
      13 │  0
                                1101 → D      1011 → B
restes : 13 , 11  →  D , B
                                219₁₀ = DB₁₆
219₁₀ = DB₁₆                    ✔ même résultat

Choisissez le chemin où vous faites le moins d'erreurs — les deux sont acceptés. Le passage par le binaire a un avantage : il donne deux écritures du nombre, et si l'énoncé demande les deux, le travail est déjà fait.

🧠 Auto-évaluation

Complétez la ligne du tableau : 210,5₁₀ en binaire. (Question réellement posée au test de novembre.)

Partie entière — 210 :

calcul
210 − 1 × 128 = 82    → 1
 82 − 1 ×  64 = 18    → 1
 18 − 0 ×  32 = 18    → 0
 18 − 1 ×  16 =  2    → 1
  2 − 0 ×   8 =  2    → 0
  2 − 0 ×   4 =  2    → 0
  2 − 1 ×   2 =  0    → 1
  0 − 0 ×   1 =  0    → 0

210₁₀ = 1101 0010₂

Partie fractionnaire — 0,5 : c'est exactement 2⁻¹, donc 0,1₂. En une ligne.

210,5₁₀ = 1101 0010,1₂

On peut écrire 1101 0010,1000₂ pour compléter le quartet — même valeur, les zéros de droite d'une partie fractionnaire ne changent rien, comme 0,5 = 0,500 en décimal.

Contrôle : 128 + 64 + 16 + 2 = 210 ✔, et le nombre finit par 0 avant la virgule, donc il est pair — 210 l'est ✔.

11À quoi ça sert en CIEL

Ce chapitre n'est pas une curiosité mathématique : c'est l'outillage de presque tous les autres cours de la formation. Voici où il ressort, concrètement.

OùCe qu'on y voitCe qu'il faut savoir lire
Adresses IPv4192.168.10.1 4 octets, chacun de 0 à 255 — soit 32 bits
Masques de sous-réseau255.255.255.0 = /24 255 = 1111 1111 ; le /24 compte les bits à 1
Adresses MAC00:60:70:41:C1:D4 6 octets en hexadécimal, 12 chiffres hexa = 48 bits
Couleurs web#2D5A27 3 octets : rouge 2D (45), vert 5A (90), bleu 27 (39)
IPv6fe80::260:70ff:fe41:c1d4 128 bits, écrits en hexadécimal — impossibles à lire autrement
Capacités mémoire1 kio = 1024 octets 2¹⁰, et non 1000
Permissions Linuxchmod 755 base 8 : chaque chiffre = 3 bits (lire, écrire, exécuter)
💡 Un masque de sous-réseau n'est rien d'autre qu'un nombre binaire

C'est l'application la plus directe du chapitre, et celle qui tombe à l'épreuve E5 :

calcul
255.255.255.0  →  1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
                  └────────── 24 bits à 1 ──────────┘

                  d'où la notation /24

il reste 32 − 24 = 8 bits pour les machines
→ 2⁸ = 256 combinaisons, moins l'adresse réseau et le broadcast
→ 254 adresses utilisables

Et 255.255.255.192 ? 192 = 128 + 64 = 1100 0000 : deux bits de plus à 1, donc /26. Il reste 6 bits, soit 2⁶ − 2 = 62 adresses. Tout l'adressage IP tient dans ce chapitre — voir Adressage IPv4 et VLSM.

🧰 Les valeurs à reconnaître d'un coup d'œil
DécimalBinaireHexaOù on le croise
151111Fun quartet plein
161 000010la base elle-même
1281000 000080 le bit de poids fort d'un octet
1921100 0000C0 masque /26, et le 192 de 192.168.x.x
2551111 1111FF un octet plein — masque, couleur, broadcast
2561 0000 0000100 le nombre de valeurs d'un octet
1024100 0000 0000400 1 kio

Ces sept lignes couvrent la grande majorité des conversions rencontrées en examen. Les connaître dispense de poser le calcul — et le temps gagné sert à vérifier le reste.

⚡ Récap 2 minutes

  • La position porte le poids : en base b, la position n vaut bn, en comptant depuis 0, à droite.
  • Poids binaires : 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024. À savoir par cœur.
  • Vocabulaire : bit = 1 chiffre binaire · quartet = 4 bits = 1 chiffre hexa · octet = 8 bits = 2 chiffres hexa = 0 à 255.
  • Binaire → décimal : écrire les poids au-dessus, additionner les colonnes à 1.
  • Décimal → binaire : soustractions (du plus grand poids) ou divisions par 2 — restes lus de bas en haut.
  • Addition : 1 + 1 = 10, on pose 0 et on retient 1. Soustraction : 0 − 1 → emprunt de 2.
  • Si A < B : calculer B − A, puis écrire le signe moins. Un résultat plus grand que l'opérande signale un négatif en complément à deux.
  • Division : a = b × q + r avec r < b — le contrôle le plus rapide.
  • Partie fractionnaire : poids 0,5 · 0,25 · 0,125… Par soustractions, ou par multiplications par 2 — retenues lues à l'endroit.
  • Hexadécimal : 0–9 puis A–F. 16 = 2⁴, donc 1 chiffre hexa = 4 bits : la conversion avec le binaire est gratuite, en regroupant depuis la droite.
  • Toujours indiquer la base : 10₂, 10₁₀ et 10₁₆ sont trois nombres différents.
  • Vérifier : repasser par le décimal, contrôler la parité, compter les bits attendus.

Sources exploitées

  • Cours manuscrit « Chapitre 1 — Système de numération : décimal, binaire, hexadécimal », 20 pages (scan) — dont la page 1 qui fixe le programme de l'année
  • Second jeu de notes du même cours, 14 pages (scan d'un cahier de la promotion)
  • Feuille d'exercices corrigés, pages 17 à 20 du cours
  • Test de mathématiques du 13/11/2025, corrigé — conversions, opérations binaires et nombres binaires signés
  • Exercices « Systèmes de numération » (fiche de révision de la promotion)