Comment Convertir un Nombre Entre Binaire, Octal, Décimal et Hexadécimal
Convertir un nombre entre bases revient à réécrire la même valeur avec un alphabet de chiffres différent. Pour passer du décimal à une autre base à la main, on divise à répétition par cette base et on relit les restes de bas en haut, ou bien on soustrait des puissances de la base une à une. Le décimal 202 s’écrit ainsi 11001010 en binaire, 312 en octal et CA en hexadécimal, trois représentations d’une seule et même quantité.
Ce qu’est réellement une base numérique
Une base (ou radix) fixe le nombre de chiffres distincts qu’un système de numération positionnel peut utiliser à chaque position. Le décimal, base 10, utilise dix chiffres, de 0 à 9. Le binaire, base 2, n’en a que deux, 0 et 1. L’octal, base 8, en utilise huit, de 0 à 7. L’hexadécimal, base 16, épuise les dix chiffres arabes puis emprunte les lettres A à F pour représenter les valeurs 10 à 15.
Ce qui rend le système positionnel : chaque position dans un nombre correspond à une puissance de la base, et la valeur totale est la somme de chaque chiffre multiplié par la puissance de sa position. Dans le nombre décimal 202, le chiffre 2 à la position des centaines vaut 2 x 10^2, le 0 des dizaines vaut 0 x 10^1, et le 2 des unités vaut 2 x 10^0. Le même principe s’applique quelle que soit la base, seule la valeur qu’on multiplie par la puissance change : en binaire ce sont des puissances de 2, en octal des puissances de 8, en hexadécimal des puissances de 16.
Convertir un nombre décimal en binaire, octal et hexadécimal à la main
Prenons 202 comme exemple de référence et posons les deux méthodes qui fonctionnent pour n’importe quel nombre décimal.
Méthode 1 : division-reste. On divise le nombre par la base cible, on note le reste, puis on recommence avec le quotient jusqu’à atteindre 0. Les restes lus de bas en haut donnent le résultat.
Pour convertir 202 en octal (base 8) :
| Division | Quotient | Reste |
|---|---|---|
| 202 ÷ 8 | 25 | 2 |
| 25 ÷ 8 | 3 | 1 |
| 3 ÷ 8 | 0 | 3 |
En lisant les restes de bas en haut (3, 1, 2), on obtient 312, la représentation octale de 202.
Pour convertir 202 en hexadécimal (base 16) :
| Division | Quotient | Reste |
|---|---|---|
| 202 ÷ 16 | 12 | 10 (A) |
| 12 ÷ 16 | 0 | 12 (C) |
Les restes lus de bas en haut donnent 12 puis 10, soit C puis A : CA. Le premier reste, 10, dépasse 9, donc il s’écrit avec la lettre A (10 à 15 deviennent A à F en hexadécimal).
Méthode 2 : décomposition en puissances (idéale pour le binaire). On cherche la plus grande puissance de la base qui tient dans le nombre, on la soustrait, puis on répète avec le reste. Pour 202 en binaire, les puissances de 2 pertinentes sont 128, 64, 32, 16, 8, 4, 2, 1 :
| Puissance de 2 | Tient dans le reste ? | Reste après soustraction |
|---|---|---|
| 128 | oui | 202 - 128 = 74 |
| 64 | oui | 74 - 64 = 10 |
| 32 | non | 10 |
| 16 | non | 10 |
| 8 | oui | 10 - 8 = 2 |
| 4 | non | 2 |
| 2 | oui | 2 - 2 = 0 |
| 1 | non | 0 |
Les positions qui ont reçu un 1 sont 128, 64, 8 et 2. En vérification : 128 + 64 + 8 + 2 = 202. En écrivant un 1 à chaque position retenue et un 0 ailleurs, de la puissance la plus forte à la plus faible, on obtient 11001010, exactement le résultat attendu.
Les deux méthodes sont interchangeables, la division-reste fonctionne pour n’importe quelle base cible tandis que la décomposition en puissances est surtout pratique en binaire, où il n’y a que deux issues possibles à chaque position (le bit tient ou ne tient pas).
Relire l’octal et l’hexadécimal en décimal
L’opération inverse, relire une valeur octale ou hexadécimale en décimal, revient à additionner chaque chiffre multiplié par la puissance de sa position. Prenons un exemple très concret : la valeur octale 755, la notation de permissions Unix que tout développeur croise un jour dans un chmod 755.
En octal, les positions valent respectivement 64, 8 et 1 (soit 8^2, 8^1, 8^0) :
7 x 64 + 5 x 8 + 5 x 1 = 448 + 40 + 5 = 493
Donc 755 en octal vaut 493 en décimal. Pour repasser en binaire, il existe un raccourci qui évite de refaire toute la division-reste : chaque chiffre octal correspond exactement à un groupe de 3 bits, puisque 8 est 2^3. Il suffit de convertir chaque chiffre séparément et de coller les groupes :
| Chiffre octal | 7 | 5 | 5 |
|---|---|---|---|
| Binaire (3 bits) | 111 | 101 | 101 |
Collés ensemble : 111101101. Le même principe existe pour l’hexadécimal, mais avec des groupes de 4 bits (un nibble) au lieu de 3, puisque 16 est 2^4. C’est pour cette raison que l’hexadécimal est omniprésent en informatique : deux chiffres hexadécimaux couvrent exactement un octet (8 bits), ce qui rend les adresses mémoire, les codes couleur #RRGGBB ou les valeurs d’octets bien plus courts et lisibles qu’en binaire brut. 0xFF, par exemple, tient en deux caractères là où sa version binaire, 11111111, en demande huit. L’octal a suivi une logique similaire à une époque où certaines architectures utilisaient des mots de taille divisible par 3 bits, et il subsiste aujourd’hui presque exclusivement dans la notation des permissions Unix, exactement le 755 de notre exemple. Pour vérifier : 755 en octal donne 1ED en hexadécimal, une autre façon d’écrire ce même 493.
Testez avec vos propres valeurs
Le calcul manuel est utile pour comprendre le mécanisme, mais dès qu’il faut vérifier une valeur rapidement ou explorer plusieurs nombres, un convertisseur évite les erreurs d’arithmétique. Entrez une valeur dans n’importe quel champ ci-dessous, binaire, octal, décimal ou hexadécimal, et les trois autres se mettent à jour instantanément.
Erreurs courantes et cas particuliers
Confondre le signe-magnitude et le complément à deux pour les nombres négatifs. Le convertisseur ci-dessus accepte un signe moins devant n’importe quel champ. Pour -18, il affiche -10010 en binaire, -22 en octal et -12 en hexadécimal. Il s’agit d’une représentation en signe-magnitude, un simple signe moins placé devant la valeur absolue, et non d’un complément à deux. C’est une source fréquente de surprise chez les développeurs habitués aux entiers signés d’un langage de programmation : en complément à deux sur 8 bits, -18 s’écrirait 11101110, une suite de bits totalement différente puisque le complément à deux code le signe en inversant les bits et en ajoutant 1, au lieu d’ajouter un symbole séparé. Les deux représentations existent pour des raisons différentes (le complément à deux simplifie l’arithmétique binaire en matériel), mais ce convertisseur reste volontairement sur le signe-magnitude, plus direct à lire et à vérifier à la main.
Oublier que la casse des lettres hexadécimales n’a pas d’importance à la saisie. Taper ca ou CA donne le même résultat, le convertisseur normalise toujours l’affichage en majuscules. Ce n’est qu’une convention d’affichage, la valeur numérique sous-jacente est identique.
Ajouter des zéros non significatifs en pensant changer la valeur. 00202 en décimal, 0011001010 en binaire ou 0312 en octal représentent exactement le même nombre que sans les zéros de tête. Ils ne servent qu’à aligner visuellement des valeurs sur une largeur fixe (souvent 8, 16 ou 32 bits en programmation), jamais à modifier la quantité représentée.
Se heurter à la limite de précision sur de très grands nombres. Le convertisseur travaille avec les entiers sûrs de JavaScript, un intervalle qui monte jusqu’à environ 2^53 - 1, soit un peu plus de 9 quadrillions. En dessous de cette limite, chaque conversion est exacte. Au-delà, la précision en virgule flottante commence à s’effriter, un cas rare en pratique pour un usage courant mais à garder en tête si vous manipulez des identifiants ou des sommes de contrôle extrêmement grands.
Confondre les préfixes de code source avec la saisie du convertisseur. En JavaScript, Python, C ou la plupart des langages, un littéral binaire s’écrit avec un préfixe 0b (0b11001010), un littéral octal avec 0o (0o312) et un littéral hexadécimal avec 0x (0xCA). Le convertisseur, lui, attend uniquement les chiffres bruts dans le champ correspondant, sans préfixe : tapez 11001010 dans le champ binaire, pas 0b11001010. Coller un préfixe par réflexe de code est l’erreur de saisie la plus fréquente.
Questions fréquentes
Qu’est-ce qu’une base ou un radix exactement ? C’est le nombre de chiffres uniques disponibles à chaque position d’un système de numération positionnel, et la puissance que chaque position multiplie. Le décimal (base 10) utilise 0 à 9, le binaire (base 2) utilise 0 et 1, l’octal (base 8) utilise 0 à 7, et l’hexadécimal (base 16) ajoute A à F pour couvrir 10 à 15.
Pourquoi l’informatique utilise-t-elle autant l’hexadécimal plutôt que le binaire brut ? Parce qu’un chiffre hexadécimal représente exactement 4 bits, ni plus ni moins. Deux chiffres hexadécimaux couvrent donc précisément un octet. Cela rend les adresses mémoire, les codes couleur et les valeurs d’octets nettement plus courts à écrire et plus faciles à relire qu’une longue chaîne de 0 et de 1, sans perdre la correspondance directe avec le binaire sous-jacent.
Comment convertir un nombre binaire en décimal à la main ? Additionnez la valeur de chaque bit à 1 multipliée par la puissance de 2 de sa position, en partant de la droite à la puissance 0. Pour 11001010, les bits à 1 se trouvent aux positions valant 128, 64, 8 et 2, ce qui donne 128 + 64 + 8 + 2 = 202.
Quel est le plus grand nombre que ce convertisseur peut traiter ? Il gère tout entier dans l’intervalle des entiers sûrs de JavaScript, environ jusqu’à 2^53 - 1 (environ 9 quadrillions). Au-delà, la précision en virgule flottante n’est plus garantie.
Le convertisseur gère-t-il les nombres négatifs ? Oui. Placez un signe moins devant la valeur dans n’importe lequel des quatre champs et les trois autres bases affichent leur équivalent négatif en signe-magnitude (un simple signe devant la valeur absolue), pas en complément à deux.
Peut-on partager le convertisseur avec des valeurs déjà remplies ? Oui, sur la page complète de l’outil l’URL se met à jour avec vos valeurs au fur et à mesure de la saisie, ce qui permet de copier le lien et de le partager tel quel. La version intégrée ci-dessus, elle, ne touche pas à l’URL de cet article puisqu’elle est pensée pour rester à l’intérieur de la page qui l’affiche.