Skip to content

Conversion de bases

Rappel d'ouverture (5 minutes, cours fermé)

  1. Un compteur a 4 roues et l'alphabet 01. Quel est le plus grand nombre qu'il peut afficher, et que vaut ce nombre ?
  2. Combien de crans faut-il pour faire avancer la roue 2 d'un seul cran, en base 5 ?
  3. Le mot « poisson » et le dessin 12 ont un point commun. Lequel ?
Corrigé
  1. 1111, qui vaut \(15\). Au clic suivant, il repasse à 0000 : c'est le débordement.
  2. \(5^2 = 25\) crans. Le poids de la roue \(k\) vaut \(b^k\).
  3. Ce sont deux signifiants : des dessins choisis par convention pour désigner une idée. L'idée (le poisson, la quantité douze) ne change pas quand on change de dessin.

Convertir un nombre, ce n'est pas le transformer : c'est le traduire. Le nombre (le signifié) reste le même, on change seulement de signifiant, c'est-à-dire la suite de chiffres qui le note. 1011 en base 2 et 11 en base 10 sont deux écritures du même nombre.

Il y a deux sens à maîtriser : lire un nombre écrit dans une base pour en donner la valeur en base 10, et l'inverse, écrire un nombre de la base 10 dans une autre base.

Vers la base 10 : la formule positionnelle

Lors de l'exploration des roues (page Représentation des entiers naturels), vous avez constaté la même chose dans toutes les bases : il faut \(b^k\) incréments pour faire avancer la roue \(k\) d'un seul cran. Le poids de la roue \(k\) est donc \(b^k\) :

  • un cran de la roue 0 (les unités) vaut \(b^0 = 1\) ;
  • un cran de la roue 1 vaut \(b^1 = b\) ;
  • un cran de la roue 2 vaut \(b^2\) ;
  • et ainsi de suite.

Pour connaître la valeur d'un nombre, il suffit, pour chaque roue, de multiplier son chiffre par son poids, puis d'additionner le tout. On interprète chaque chiffre selon sa position : c'est le système de numération positionnel.

Vous l'utilisez depuis toujours en base 10, sans le nommer. Le nombre \(5429\) se décompose ainsi :

\[5429_{10}=5 \times 1000+4 \times 100+2 \times 10+9 \times 1\]
\[\Large \textcolor{blue}{5429}_{10}= \textcolor{blue}{5} \times 10^{\textcolor{red}{3}}+ \textcolor{blue}{4} \times 10^{\textcolor{red}{2}}+ \textcolor{blue}{2} \times 10^{\textcolor{red}{1}}+ \textcolor{blue}{9} \times 10^{\textcolor{red}{0}}\]

Et c'est vrai dans n'importe quelle base. Par exemple, le nombre \(2102\) écrit en base 3 vaut :

\[2102_3 = 2 \times 3^3 + 1 \times 3^2 + 0 \times 3^1 + 2 \times 3^0 = 54 + 9 + 0 + 2 = 65\]

De façon générale, un nombre dont les chiffres sont \(d_{k-1}\,\dots\,d_1\,d_0\) en base \(b\) a pour valeur :

\[\sum_{i=0}^{k-1} d_i \times b^i\]

Cette valeur est justement son écriture en base 10. Appliquons cette formule, base par base.

Pourquoi le faire à la main ?

Une calculatrice ou une IA convertit en une fraction de seconde. L'intérêt n'est pas le résultat, mais de comprendre le mécanisme : c'est en traçant soi-même qu'on saisit ce que représente une base. C'est cette compréhension qui est évaluée, pas la capacité à recopier un résultat tout fait.

Répétition volontaire

Les paragraphes suivants sont volontairement répétitifs : leur seul but est de vous faire constater que le procédé ne change jamais, quelle que soit la base. Les bases 2 et 3 sont travaillées à fond ; les bases 4 et 16 ne reçoivent que deux exercices chacune, parce qu'à ce stade il n'y a plus rien de neuf à comprendre. Vous les retrouverez en revanche dans les rappels d'ouverture des pages suivantes : mieux vaut quelques conversions étalées sur plusieurs semaines que vingt d'affilée oubliées aussitôt.

De la base 2 à la base 10

Un nombre écrit en base 2 est composé uniquement de chiffres \(0\) et \(1\). Chaque chiffre représente une puissance de \(2\), en partant de la droite vers la gauche. Pour convertir un nombre binaire en décimal, on additionne les puissances de \(2\) correspondant aux positions où il y a un \(1\).

Par exemple, le nombre binaire \(1011\) correspond à : \(1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0\)

Soit : \(8 + 0 + 2 + 1 = 11\) en base 10.

En résumé, pour convertir un nombre binaire en décimal, il suffit de calculer la somme :

\[\displaystyle \sum_{i=0}^{n-1} b_i \times 2^i\]

\(b_i\) est le chiffre en position \(i\) en partant de la droite (avec \(b_i \in \{0, 1\}\)), et \(n\) est le nombre total de chiffres dans l'écriture binaire.

Exercices : convertir des nombres binaires en base décimale

  1. Convertissez le nombre binaire \(1101\) en base 10.
  2. Que vaut le nombre binaire \(10010\) en base 10 ?
  3. Convertissez \(111111\) en base 10.
  4. Que donne le binaire \(1010101\) en base 10 ?
  5. Sans convertir entièrement : lequel de \(1000_2\) et \(111_2\) est le plus grand ? Justifiez.
Corrigé
  1. \(1101 = 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 = 8 + 4 + 0 + 1 = \boxed{13}\)
  2. \(10010 = 1 \times 2^4 + 0 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 0 \times 2^0 = 16 + 0 + 0 + 2 + 0 = \boxed{18}\)
  3. \(111111 = 1 \times 2^5 + 1 \times 2^4 + 1 \times 2^3 + 1 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 = 32 + 16 + 8 + 4 + 2 + 1 = \boxed{63}\)
  4. \(1010101 = 1 \times 2^6 + 0 \times 2^5 + 1 \times 2^4 + 0 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 = 64 + 0 + 16 + 0 + 4 + 0 + 1 = \boxed{85}\)
  5. \(1000_2\) est le plus grand. Il occupe 4 chiffres contre 3, donc il atteint le poids \(2^3 = 8\), que \(111_2\) ne peut pas atteindre : avec 3 chiffres, on ne dépasse jamais \(2^3 - 1 = 7\). En base \(b\), un nombre écrit avec plus de chiffres est toujours plus grand (à condition qu'il n'y ait pas de zéro inutile devant).

De la base 3 à la base 10

Un nombre écrit en base 3 est composé uniquement de chiffres \(0\), \(1\) et \(2\). Comme pour la base 2, chaque chiffre représente une puissance de la base (ici, une puissance de \(3\)) en partant de la droite vers la gauche. Le principe est exactement le même : on multiplie chaque chiffre par la puissance de \(3\) correspondant à sa position, puis on additionne le tout.

Par exemple, le nombre ternaire \(102\) correspond à : \(1 \times 3^2 + 0 \times 3^1 + 2 \times 3^0\)

Soit : \(9 + 0 + 2 = 11\) en base 10.

Exercices : convertir des nombres en base 3 en base décimale

  1. Convertissez le nombre ternaire \(102\) en base 10.
  2. Que vaut le nombre \(210\) en base 10 ?
  3. Convertissez \(222\) en base 10.
  4. Que donne le ternaire \(1001\) en base 10 ?
  5. Que valent \(1000_3\), \(0001_3\) et \(101_3\) ? Quel est le rôle d'un zéro selon sa place ?
Corrigé
  1. \(102 = 1 \times 3^2 + 0 \times 3^1 + 2 \times 3^0 = 9 + 0 + 2 = \boxed{11}\)
  2. \(210 = 2 \times 3^2 + 1 \times 3^1 + 0 \times 3^0 = 18 + 3 + 0 = \boxed{21}\)
  3. \(222 = 2 \times 3^2 + 2 \times 3^1 + 2 \times 3^0 = 18 + 6 + 2 = \boxed{26}\)
  4. \(1001 = 1 \times 3^3 + 0 \times 3^2 + 0 \times 3^1 + 1 \times 3^0 = 27 + 0 + 0 + 1 = \boxed{28}\)
  5. \(1000_3 = 27\), \(0001_3 = 1\), \(101_3 = 9 + 0 + 1 = \boxed{10}\). Un zéro à l'intérieur du nombre est indispensable : il dit que ce poids-là ne compte pas, et il maintient les autres chiffres à leur place. Un zéro à gauche ne sert à rien : il ajoute \(0 \times b^k\). On ne l'écrit que pour remplir un nombre de chiffres imposé, par exemple les 8 bits d'un octet.

De la base 4 à la base 10

Le procédé est exactement le même que pour la base 2 ou la base 3 : chaque chiffre représente une puissance de la base, ici la base \(4\), en partant de la droite vers la gauche. Les chiffres autorisés en base 4 sont \(0\), \(1\), \(2\) et \(3\).

Exercices : convertir des nombres en base 4 en base décimale

  1. Que vaut \(321\) (base 4) en base 10 ?
  2. Que donne \(1002\) (base 4) en base 10 ?
Corrigé
  1. \(321 = 3 \times 4^2 + 2 \times 4^1 + 1 \times 4^0 = 48 + 8 + 1 = \boxed{57}\)
  2. \(1002 = 1 \times 4^3 + 0 \times 4^2 + 0 \times 4^1 + 2 \times 4^0 = 64 + 0 + 0 + 2 = \boxed{66}\)

De la base 16 à la base 10

Le procédé est exactement le même que pour les autres bases : chaque chiffre représente une puissance de la base, ici la base \(16\), en partant de la droite vers la gauche. Comme on a besoin de \(16\) chiffres différents, on utilise les chiffres \(0\) à \(9\) pour les dix premières valeurs, puis les lettres \(A\), \(B\), \(C\), \(D\), \(E\) et \(F\) pour représenter respectivement les valeurs décimales \(10\), \(11\), \(12\), \(13\), \(14\) et \(15\).

Exercices : convertir des nombres hexadécimaux en base décimale

  1. Convertissez \(B4\) (base 16) en base 10.
  2. Que donne \(3E8\) (base 16) en base 10 ?
Corrigé
  1. \(B4 = B \times 16^1 + 4 \times 16^0 = 11 \times 16 + 4 = \boxed{180}\)
  2. \(3E8 = 3 \times 16^2 + E \times 16^1 + 8 \times 16^0 = 3 \times 256 + 14 \times 16 + 8 = 768 + 224 + 8 = \boxed{1000}\)

Le plus grand entier sur \(k\) chiffres

Exercices : plus grand entier représentable avec \(k\) chiffres

  1. Quel est le plus grand entier que l'on peut écrire avec \(4\) chiffres en base \(2\) ?
  2. Quel est le plus grand entier que l'on peut écrire avec \(3\) chiffres en base \(8\) ?
  3. Quel est le plus grand entier que l'on peut écrire avec \(2\) chiffres en base \(16\) ?
  4. Quel est le plus grand entier que l'on peut écrire avec \(5\) chiffres en base \(10\) ?
  5. Donnez la formule générale pour le plus grand entier représentable avec \(k\) chiffres en base \(n\). (à savoir)
Corrigé
  1. En base \(2\), les chiffres vont de \(0\) à \(1\), donc le plus grand nombre à \(4\) chiffres est \(1111_2\) :
    \(1 \times 2^3 + 1 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 = 8 + 4 + 2 + 1 = \boxed{15}\)

  2. En base \(8\), les chiffres vont de \(0\) à \(7\), donc le plus grand nombre à \(3\) chiffres est \(777_8\) :
    \(7 \times 8^2 + 7 \times 8^1 + 7 \times 8^0 = 448 + 56 + 7 = \boxed{511}\)

  3. En base \(16\), les chiffres vont de \(0\) à \(F\) (soit \(15\)), donc le plus grand nombre à \(2\) chiffres est \(FF_{16}\) :
    \(15 \times 16^1 + 15 \times 16^0 = 240 + 15 = \boxed{255}\)

  4. En base \(10\), les chiffres vont de \(0\) à \(9\), donc le plus grand nombre à \(5\) chiffres est \(99999\) (déjà en base 10) :
    \(\boxed{99999}\)

  5. En général, le plus grand entier représentable avec \(k\) chiffres en base \(n\) est donné par la formule :
    \(\(n^k - 1\)\)

Depuis la base 10 : les divisions successives

Faisons l'inverse : partir d'un nombre en base 10 et l'écrire dans une autre base.

Rappel : la division euclidienne

Souvenez-vous de l'école primaire. « J'ai 30 bonbons, je veux faire des paquets de 8. »

  • Combien de paquets complets puis-je faire ? 3 paquets, car \(3 \times 8 = 24\).
  • Combien de bonbons me reste-t-il, en dehors des paquets ? 6, car \(30 - 24 = 6\).

On résume la situation ainsi :

\[30 = 8 \times 3 + 6\]
  • Le quotient (3) est le nombre de paquets complets.
  • Le reste (6) est ce qui ne rentre dans aucun paquet complet.

Le reste est toujours plus petit que la taille d'un paquet (ici, plus petit que 8) : sinon, on pourrait encore faire un paquet de plus.

Diviser par la base, c'est faire des paquets

Reprenons douze. En comptant sur les roues (page précédente), vous l'avez écrit 1100 en base 2, 110 en base 3... Retrouvons ces écritures, mais cette fois par le calcul, en divisant.

Diviser par la base, c'est faire des paquets

Convertir un nombre en base , c'est faire des paquets de , exactement comme les paquets de bonbons. Quand on divise par :

  • le reste (ce qui ne remplit pas un paquet complet) est le chiffre des unités (la roue 0) ;
  • le quotient (le nombre de paquets complets) est ce qui « monte » sur les roues suivantes, autrement dit ce qu'il reste à écrire.

On recommence alors en divisant le quotient par (chiffre suivant), jusqu'à obtenir un quotient nul. On lit les restes de bas en haut.

Pourquoi diviser le quotient à son tour ? (exemple : 125 en base 3)

Pour afficher 125 sur le compteur en base 3, il faudrait l'incrémenter 125 fois. Raisonnons plutôt par paquets de 3.

  • \(125 \div 3 = 41\) reste 2. La roue 0 a fait 41 tours complets, et il reste 2 crans : la roue 0 affiche 2.
  • Ces 41 tours complets de la roue 0 ont fait avancer la roue 1 de 41 crans. Pour savoir ce qu'affiche la roue 1, on divise donc 41 par 3 : \(41 \div 3 = 13\) reste 2la roue 1 affiche 2, et la roue 2 a avancé de 13.
  • \(13 \div 3 = 4\) reste 1roue 2 : 1, et la roue 3 a avancé de 4.
  • \(4 \div 3 = 1\) reste 1roue 3 : 1, et la roue 4 a avancé de 1.
  • \(1 \div 3 = 0\) reste 1roue 4 : 1.

En lisant les roues de la dernière à la première : \(125 = 11122_3\). À chaque étape, le reste donne le chiffre de la roue, et le quotient dit combien de fois la roue suivante a tourné : c'est donc lui qu'on divise à l'étape d'après.

  1. Posez les divisions successives de douze par . À chaque étape, notez le quotient et le reste.
    Réponse
  2. Lisez les restes de bas en haut : quelle est l'écriture de douze en base ?
    Réponse

    douze s'écrit en base , exactement comme vous l'aviez trouvé avec les roues.

Un exemple complet : 13 en base 2

On divise le nombre par \(2\), on note le reste, puis on recommence avec le quotient jusqu'à ce qu'il soit nul. L'écriture binaire est obtenue en lisant les restes de bas en haut.

\[ \begin{aligned} 13 \div 2 &= 6 &\text{reste } 1 \\ 6 \div 2 &= 3 &\text{reste } 0 \\ 3 \div 2 &= 1 &\text{reste } 1 \\ 1 \div 2 &= 0 &\text{reste } 1 \end{aligned} \]

Lecture des restes de bas en haut : \(1101\). Donc :

\[13_{10} = 1101_2\]

Convertir vers une base \(b\) quelconque

Ce procédé fonctionne exactement de la même manière pour convertir un entier de la base 10 vers n'importe quelle base entière \(b > 1\) : on procède par divisions successives par \(b\) jusqu'à obtenir un quotient nul.

Exercices : convertir des entiers de la base 10 vers d'autres bases

  1. Convertissez \(19_{10}\) en base \(2\)
  2. Convertissez \(45_{10}\) en base \(3\)
  3. Convertissez \(31_{10}\) en base \(4\)
  4. Convertissez \(73_{10}\) en base \(8\)
  5. Convertissez \(255_{10}\) en base \(16\)
Corrigé
  1. Divisions successives par \(2\) :
    \(19 \div 2 = 9\) reste \(1\)
    \(9 \div 2 = 4\) reste \(1\)
    \(4 \div 2 = 2\) reste \(0\)
    \(2 \div 2 = 1\) reste \(0\)
    \(1 \div 2 = 0\) reste \(1\)
    Lecture de bas en haut : \(\boxed{10011_2}\)

  2. Divisions successives par \(3\) :
    \(45 \div 3 = 15\) reste \(0\)
    \(15 \div 3 = 5\) reste \(0\)
    \(5 \div 3 = 1\) reste \(2\)
    \(1 \div 3 = 0\) reste \(1\)
    Lecture de bas en haut : \(\boxed{1200_3}\)

  3. Divisions successives par \(4\) :
    \(31 \div 4 = 7\) reste \(3\)
    \(7 \div 4 = 1\) reste \(3\)
    \(1 \div 4 = 0\) reste \(1\)
    Lecture de bas en haut : \(\boxed{133_4}\)

  4. Divisions successives par \(8\) :
    \(73 \div 8 = 9\) reste \(1\)
    \(9 \div 8 = 1\) reste \(1\)
    \(1 \div 8 = 0\) reste \(1\)
    Lecture de bas en haut : \(\boxed{111_8}\)

  5. Divisions successives par \(16\) :
    \(255 \div 16 = 15\) reste \(15\)
    \(15 \div 16 = 0\) reste \(15\)
    En base \(16\), \(15 = F\)
    Lecture de bas en haut : \(\boxed{FF_{16}}\)

Exercices : les cas qui font trébucher

Ce sens est le plus difficile des deux : il demande de dérouler un procédé, alors que l'autre ne demandait qu'une somme. Ces cinq-là sont choisis pour les pièges qu'ils contiennent.

  1. Convertissez \(8_{10}\) en base \(2\). Combien de chiffres obtenez-vous ?
  2. Convertissez \(9_{10}\) en base \(3\). Attention au reste nul.
  3. Convertissez \(1_{10}\) en base \(2\), puis \(0_{10}\) en base \(2\).
  4. Convertissez \(100_{10}\) en base \(16\), puis vérifiez votre résultat en le reconvertissant vers la base 10.
  5. Un élève convertit \(13_{10}\) en base 2 et écrit \(1011\). Sans refaire tout le calcul, montrez qu'il s'est trompé.
Corrigé
  1. \(8 \div 2 = 4\) r \(0\) ; \(4 \div 2 = 2\) r \(0\) ; \(2 \div 2 = 1\) r \(0\) ; \(1 \div 2 = 0\) r \(1\). Lecture de bas en haut : \(\boxed{1000_2}\), soit 4 chiffres. C'est logique : \(8 = 2^3\), il faut donc atteindre le poids \(2^3\), c'est-à-dire une quatrième roue.

  2. \(9 \div 3 = 3\) r \(0\) ; \(3 \div 3 = 1\) r \(0\) ; \(1 \div 3 = 0\) r \(1\). Lecture de bas en haut : \(\boxed{100_3}\). Les restes nuls s'écrivent : les oublier donnerait \(1_3\), c'est-à-dire un tout autre nombre.

  3. \(1 \div 2 = 0\) r \(1\), donc \(\boxed{1_2}\). Pour zéro, la division s'arrête immédiatement (le quotient est déjà nul) et on convient d'écrire \(\boxed{0_2}\).

  4. \(100 \div 16 = 6\) r \(4\) ; \(6 \div 16 = 0\) r \(6\). Lecture de bas en haut : \(\boxed{64_{16}}\). Vérification : \(6 \times 16 + 4 = 96 + 4 = 100\). Reconvertir dans l'autre sens est le seul moyen de contrôler son résultat sans aide extérieure : prenez-en l'habitude.

  5. \(1011_2 = 8 + 0 + 2 + 1 = 11\), et non \(13\). L'erreur se voit sans refaire les divisions, simplement en relisant le résultat dans l'autre sens. (La bonne réponse est \(1101_2\) : l'élève a interverti deux chiffres, ce qui arrive quand on lit les restes de haut en bas au lieu de bas en haut.)

Astuce : passer vite de l'hexadécimal au binaire

Il existe une astuce simple pour passer rapidement d'un nombre en base 16 (hexadécimal) à la base 2 (binaire), et inversement : chaque chiffre hexadécimal correspond exactement à un groupe de 4 bits.

Autrement dit, on convertit chaque chiffre hexadécimal en son équivalent binaire sur 4 chiffres, en ajoutant des zéros à gauche si nécessaire.

\[ \begin{aligned} A_{16} &= 10_{10} = 1010_2 \\ F_{16} &= 15_{10} = 1111_2 \\ 2_{16} &= 2_{10} = 0010_2 \end{aligned} \]

Donc :

\[3F_{16} = 0011\ 1111_2\]

Inversement, pour passer de la base 2 à la base 16, on regroupe les chiffres binaires par paquets de 4, en partant de la droite, puis on convertit chaque groupe en un chiffre hexadécimal.

\[11010110_2 = 1101\ 0110 = D6_{16}\]

Tableau de correspondance

Hexadécimal (base 16) Décimal (base 10) Binaire (base 2, sur 4 bits)
\(0\) \(0\) \(0000\)
\(1\) \(1\) \(0001\)
\(2\) \(2\) \(0010\)
\(3\) \(3\) \(0011\)
\(4\) \(4\) \(0100\)
\(5\) \(5\) \(0101\)
\(6\) \(6\) \(0110\)
\(7\) \(7\) \(0111\)
\(8\) \(8\) \(1000\)
\(9\) \(9\) \(1001\)
\(A\) \(10\) \(1010\)
\(B\) \(11\) \(1011\)
\(C\) \(12\) \(1100\)
\(D\) \(13\) \(1101\)
\(E\) \(14\) \(1110\)
\(F\) \(15\) \(1111\)