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
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.
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.
poids de la position n (à partir de 0, à droite) = bn
| Base | Nom | Chiffres disponibles | Poids |
|---|---|---|---|
| 10 | décimal | 0 1 2 3 4 5 6 7 8 9 | 1, 10, 100, 1000… |
| 2 | binaire | 0 1 | 1, 2, 4, 8, 16, 32… |
| 16 | hexadécimal | 0…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.
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.
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.
| Terme | Taille | Ce qu'il représente |
|---|---|---|
| bit | 1 chiffre binaire | 0 ou 1 — de l'anglais binary digit |
| quartet | 4 bits | 0 à 15 — soit exactement un chiffre hexadécimal |
| octet | 8 bits | 0 à 255 — l'unité de base de la mémoire et des adresses IP |
| mot | 16, 32 ou 64 bits | ce que le processeur traite d'un coup |
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.
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.
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.
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.
1011₂ = 1 × 2³ + 0 × 2² + 1 × 2¹ + 1 × 2⁰
= 1 × 8 + 0 × 4 + 1 × 2 + 1 × 1
= 8 + 0 + 2 + 1
= 11₁₀1011101₂ = 1×2⁶ + 0×2⁵ + 1×2⁴ + 1×2³ + 1×2² + 0×2¹ + 1×2⁰
= 64 + 0 + 16 + 8 + 4 + 0 + 1
= 93₁₀- Compter les bits.
1011101en compte 7, donc l'exposant le plus à gauche est 7 − 1 = 6. C'est là que se jouent la moitié des erreurs. - Écrire les poids au-dessus, de gauche à droite : 64, 32, 16, 8, 4, 2, 1.
- N'additionner que les colonnes qui portent un 1. Les zéros ne servent qu'à tenir la place.
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.
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.
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₂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.
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₂| Soustractions | Divisions par 2 | |
|---|---|---|
| Prérequis | connaître les puissances de 2 par cœur | savoir diviser par 2 |
| Sens de lecture | de gauche à droite, dans l'ordre d'écriture | de bas en haut — le piège |
| Grands nombres | rapide si l'on connaît ses poids | long mais mécanique, sans réflexion |
| Risque | oublier 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.
Convertissez 397₁₀ en binaire par la méthode qui vous paraît la plus sûre,
puis vérifiez par l'autre sens.
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 :
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ération | Résultat | Ce qui se passe |
|---|---|---|
0 + 0 | 0 | — |
0 + 1 | 1 | — |
1 + 0 | 1 | — |
1 + 1 | 10 |
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.
¹
1 0 0 1 1001₂ = 9₁₀
+ 1 0 1 0101₂ = 5₁₀
─────────
1 1 1 0 1110₂ = 14₁₀ et 9 + 5 = 14 ✔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.
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ération | Résultat | Ce qui se passe |
|---|---|---|
0 − 0 | 0 | — |
1 − 0 | 1 | — |
1 − 1 | 0 | — |
0 − 1 | 1 |
emprunt de 2 à la colonne de gauche |
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.
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 ✔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.
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.
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 ALe résultat est plus grand que le nombre de départ : c'est impossible pour une soustraction de nombres positifs. Le signal est net.
puis écrire A − B = − (B − A)
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.
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 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.
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.
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.
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 = 0 | 0 × 1 = 0 |
1 × 0 = 0 | 1 × 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.
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 ✔Ajouter un 0 à droite d'un nombre binaire le double — comme
ajouter un 0 à droite d'un nombre décimal le multiplie par 10.
1011₂ = 11₁₀
10110₂ = 22₁₀ ← un 0 ajouté : ×2
101100₂ = 44₁₀ ← deux 0 : ×4C'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 :
dividende = diviseur × quotient + reste · avec 0 ⩽ r < b
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 ✔ 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 ✔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⁻⁴ |
|---|---|---|---|---|---|---|---|---|
| 8 | 4 | 2 | 1 | , | 0,5 | 0,25 | 0,125 | 0,0625 |
2² ne vaut pas 0,25Le cours écrit, à la suite :
2⁻¹ = 1/2 = 0,5 ✔
2² = 1/2² = 1/4 = 0,25 ✘ l'exposant a perdu son signeIl 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 négatif → on divise → le nombre rapetisse
Convertir un nombre à virgule
On traite les deux parties séparément, puis on recolle.
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₂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.
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 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.
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.
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. | Binaire | Hexa | Déc. | Binaire | Hexa |
|---|---|---|---|---|---|
| 0 | 0000 | 0 |
8 | 1000 | 8 |
| 1 | 0001 | 1 |
9 | 1001 | 9 |
| 2 | 0010 | 2 |
10 | 1010 | A |
| 3 | 0011 | 3 |
11 | 1011 | B |
| 4 | 0100 | 4 |
12 | 1100 | C |
| 5 | 0101 | 5 |
13 | 1101 | D |
| 6 | 0110 | 6 |
14 | 1110 | E |
| 7 | 0111 | 7 |
15 | 1111 | F |
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 :
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 bitsLe 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.
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.
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 lettreDans 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.
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 à gauchePour 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.
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
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 ✔Pour convertir un décimal en hexadécimal, beaucoup d'étudiants gagnent du temps en passant par le binaire, qu'ils maîtrisent mieux :
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ésultatChoisissez 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.
Complétez la ligne du tableau : 210,5₁₀ en binaire. (Question réellement posée
au test de novembre.)
Partie entière — 210 :
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.
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 voit | Ce qu'il faut savoir lire |
|---|---|---|
| Adresses IPv4 | 192.168.10.1 |
4 octets, chacun de 0 à 255 — soit 32 bits |
| Masques de sous-réseau | 255.255.255.0 = /24 |
255 = 1111 1111 ; le /24 compte les bits à 1 |
| Adresses MAC | 00: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) |
| IPv6 | fe80::260:70ff:fe41:c1d4 |
128 bits, écrits en hexadécimal — impossibles à lire autrement |
| Capacités mémoire | 1 kio = 1024 octets | 2¹⁰, et non 1000 |
| Permissions Linux | chmod 755 |
base 8 : chaque chiffre = 3 bits (lire, écrire, exécuter) |
C'est l'application la plus directe du chapitre, et celle qui tombe à l'épreuve E5 :
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 utilisablesEt 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.
| Décimal | Binaire | Hexa | Où on le croise |
|---|---|---|---|
| 15 | 1111 | F | un quartet plein |
| 16 | 1 0000 | 10 | la base elle-même |
| 128 | 1000 0000 | 80 |
le bit de poids fort d'un octet |
| 192 | 1100 0000 | C0 |
masque /26, et le 192 de 192.168.x.x |
| 255 | 1111 1111 | FF |
un octet plein — masque, couleur, broadcast |
| 256 | 1 0000 0000 | 100 |
le nombre de valeurs d'un octet |
| 1024 | 100 0000 0000 | 400 |
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.