Guide de conversion des bases numériques : binaire, hexadécimal et octal expliqués
Si vous avez déjà fixé un code couleur hexadécimal comme #1A2B3C ou une permission Unix comme chmod 755 en vous demandant d'où viennent ces nombres, vous n'êtes pas seul. Les bases numériques font partie de ces concepts fondamentaux que la plupart des développeurs utilisent chaque jour sans y réfléchir — jusqu'au moment où ils doivent réellement convertir d'une base à l'autre.
Remédions à cela. Ce guide passe en revue les systèmes numériques importants en programmation, comment convertir entre eux, et dans quelles situations chacun apparaît en pratique.
Que signifie réellement « base » ?
Nous comptons en base 10 (décimal) parce que nous avons dix doigts. Chaque position de chiffre représente une puissance de 10 :
4 2 7
| | |
| | └── 7 × 10⁰ = 7
| └────── 2 × 10¹ = 20
└────────── 4 × 10² = 400
───
Total = 427
C'est la notation positionnelle. La « base » (aussi appelée radix) indique combien de chiffres uniques existent dans le système et par quoi chaque position est multipliée. La base 10 possède les chiffres 0 à 9. La base 2 possède les chiffres 0 et 1. La base 16 possède les chiffres 0 à 9 et les lettres A à F.
Le concept est identique quelle que soit la base — seuls le nombre de symboles disponibles et le multiplicateur par position changent.
Anecdote : les Babyloniens utilisaient la base 60 (sexagésimale). C'est pour cela que nous avons 60 secondes dans une minute et 360 degrés dans un cercle.
Binaire (base 2) : le langage du matériel
Pourquoi les ordinateurs utilisent le binaire
Les ordinateurs fonctionnent grâce à des transistors, et les transistors possèdent deux états fiables : allumé et éteint. Cela correspond parfaitement à 1 et 0. On pourrait théoriquement construire un ordinateur en base 3, mais distinguer trois niveaux de tension est plus difficile et plus sujet aux erreurs que d'en distinguer deux. Le binaire s'impose car il est simple et robuste.
Lire les nombres binaires
Le binaire fonctionne comme le décimal, mais chaque position représente une puissance de 2 :
1 0 1 1 0 1
| | | | | |
| | | | | └── 1 × 2⁰ = 1
| | | | └────── 0 × 2¹ = 0
| | | └────────── 1 × 2² = 4
| | └────────────── 1 × 2³ = 8
| └────────────────── 0 × 2⁴ = 0
└────────────────────── 1 × 2⁵ = 32
──
Total = 45
Ainsi, 101101 en binaire équivaut à 45 en décimal. On le lit de droite à gauche, en doublant la valeur de position à chaque fois : 1, 2, 4, 8, 16, 32, 64, 128…
Bits, octets et au-delà
- Bit : un seul chiffre binaire (0 ou 1)
- Quartet : 4 bits (représente un chiffre hexadécimal, valeurs 0 à 15)
- Octet : 8 bits (valeurs 0 à 255)
- Kilooctet : 1 024 octets (2¹⁰)
Un seul octet peut représenter 256 valeurs différentes, c'est pourquoi les caractères ASCII tiennent dans un octet et les canaux de couleur RVB vont de 0 à 255.
Bases de l'arithmétique binaire
L'addition en binaire suit les mêmes règles qu'en décimal, mais on effectue une retenue à 2 au lieu de 10 :
1 0 1 1 (11 in decimal)
+ 0 1 1 0 ( 6 in decimal)
─────────
1 0 0 0 1 (17 in decimal)
Quand 1 + 1 = 10 en binaire (tout comme 9 + 1 = 10 en décimal), on écrit 0 et on reporte 1.
Octal (base 8) : le système hérité
Un bref historique
L'octal était populaire dans les années 1960 et 1970 avec des machines comme le PDP-8, qui utilisait des mots de 12 bits — divisibles en quatre groupes de trois bits. Chaque chiffre octal correspond exactement à trois chiffres binaires, ce qui en faisait une notation abrégée pratique.
Où trouve-t-on encore l'octal ?
L'endroit le plus courant aujourd'hui concerne les permissions de fichiers Unix. Lorsque vous tapez chmod 755 script.sh, chaque chiffre est un nombre octal représentant les permissions de lecture (4), écriture (2) et exécution (1) :
7 = 4 + 2 + 1 = rwx (owner: read, write, execute)
5 = 4 + 0 + 1 = r-x (group: read, execute)
5 = 4 + 0 + 1 = r-x (others: read, execute)
Les chiffres octaux en programmation utilisent le préfixe 0o (ou simplement un zéro en tête en C, ce qui a causé de nombreux bugs) :
const permissions = 0o755; // 493 in decimal
console.log(permissions.toString(8)); // "755"
Attention en JavaScript et Python : un zéro en tête comme 0755 peut être interprété comme octal dans certains contextes. Utilisez toujours le préfixe explicite 0o pour éviter toute ambiguïté.
Hexadécimal (base 16) : le favori des développeurs
Pourquoi l'hexadécimal existe
L'hexadécimal résout un problème pratique : les nombres binaires deviennent très longs très vite. Le nombre décimal 255 s'écrit 11111111 en binaire — huit chiffres. En hexadécimal, c'est simplement FF. Chaque chiffre hexadécimal correspond exactement à quatre chiffres binaires (un quartet), ce qui rend les conversions triviales et les nombres compacts.
L'hexadécimal utilise les chiffres 0 à 9 plus les lettres A à F :
| Decimal | Binary | Hex |
|---|---|---|
| 0 | 0000 | 0 |
| 1 | 0001 | 1 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 11 | 1011 | B |
| 15 | 1111 | F |
L'hexadécimal au quotidien
Les couleurs web sont l'utilisation la plus visible de l'hexadécimal. #FF5733 se décompose ainsi :
#FF5733
││││││
││││└┘── Blue: 0x33 = 51
││└┘──── Green: 0x57 = 87
└┘────── Red: 0xFF = 255
Les adresses mémoire dans les débogueurs s'affichent en hexadécimal : 0x7FFF5FBFFA10 est plus lisible que son équivalent décimal de 140 734 799 804 944.
Les adresses MAC utilisent des paires hexadécimales séparées par des deux-points : A4:83:E7:2B:00:1F.
Les couleurs en CSS : rgba(255, 87, 51, 1.0) et #FF5733 représentent la même couleur — l'hexadécimal est simplement plus compact.
Convertir entre les bases
Décimal vers binaire
Divisez successivement par 2 et collectez les restes, en les lisant de bas en haut :
45 ÷ 2 = 22 remainder 1 ↑
22 ÷ 2 = 11 remainder 0 │
11 ÷ 2 = 5 remainder 1 │ Read upward:
5 ÷ 2 = 2 remainder 1 │ 101101
2 ÷ 2 = 1 remainder 0 │
1 ÷ 2 = 0 remainder 1 │
Résultat : 45 en décimal = 101101 en binaire.
Décimal vers hexadécimal
Même méthode, mais en divisant par 16 :
427 ÷ 16 = 26 remainder 11 (B) ↑
26 ÷ 16 = 1 remainder 10 (A) │ Read upward: 1AB
1 ÷ 16 = 0 remainder 1 │
Résultat : 427 en décimal = 1AB en hexadécimal.
Binaire vers hexadécimal (la conversion facile)
Regroupez les chiffres binaires par quatre (de droite à gauche), puis convertissez chaque groupe :
Binary: 10 1101
Padded: 0010 1101
Groups: 2 D
Result: 0x2D
Vérification : 0x2D = 2×16 + 13 = 45 ✓
Hexadécimal vers binaire
Inversez le processus. Développez chaque chiffre hexadécimal en quatre chiffres binaires :
Hex: F A 3
Binary: 1111 1010 0011
Result: 111110100011
Conseil : mémorisez les motifs binaires de 0 à F (il n'y en a que 16). Une fois acquis, les conversions hexadécimal↔binaire se font instantanément de tête. Commencez par les puissances de deux : 1=0001, 2=0010, 4=0100, 8=1000.
Notation des bases numériques dans les langages de programmation
Chaque langage majeur possède une syntaxe pour écrire des nombres dans différentes bases :
// JavaScript
const binary = 0b101101; // 45
const octal = 0o55; // 45
const hex = 0x2D; // 45
const decimal = 45; // 45
(45).toString(2); // "101101"
(45).toString(8); // "55"
(45).toString(16); // "2d"
parseInt("101101", 2); // 45
parseInt("55", 8); // 45
parseInt("2D", 16); // 45
# Python
binary = 0b101101 # 45
octal = 0o55 # 45
hexval = 0x2D # 45
bin(45) # '0b101101'
oct(45) # '0o55'
hex(45) # '0x2d'
int("101101", 2) # 45
int("55", 8) # 45
int("2D", 16) # 45
// C / C++
int binary = 0b101101; // 45 (C23 / GCC extension)
int octal = 055; // 45 (leading zero = octal!)
int hex = 0x2D; // 45
Notez le piège en C : un zéro en tête signifie octal. Écrire int x = 010; donne 8, et non 10. Cela a fait trébucher d'innombrables programmeurs.
Cas d'utilisation pratiques
Opérations bit à bit et drapeaux
const READ = 0x01; // 0001
const WRITE = 0x02; // 0010
const EXECUTE = 0x04; // 0100
const ADMIN = 0x08; // 1000
let permissions = READ | WRITE; // 0x03 = 0011
if (permissions & EXECUTE) {
// check if execute bit is set
}
Débogage et inspection mémoire
Quand vous voyez une erreur de segmentation à l'adresse 0xDEADBEEF ou que de la mémoire est initialisée avec 0xCAFEBABE, ce sont des constantes hexadécimales choisies spécifiquement parce qu'elles sont faciles à repérer dans les vidages mémoire. Les fichiers de classe Java commencent par le nombre magique 0xCAFEBABE — et oui, quelqu'un s'est amusé en le nommant.
Protocoles réseau
Les adresses IPv6 utilisent la notation hexadécimale : 2001:0db8:85a3:0000:0000:8a2e:0370:7334. Les adresses MAC, les identifiants de fournisseur USB et les UUID Bluetooth utilisent tous la représentation hexadécimale car elle garde les données binaires compactes et lisibles.
Essayez par vous-même
Oubliez le calcul à la main. Notre convertisseur de bases numériques gère les conversions entre toutes les bases instantanément — décimal, binaire, octal, hexadécimal ou toute base personnalisée jusqu'à 36. Collez un nombre, choisissez la base source et la base cible, et obtenez le résultat immédiatement. Tout fonctionne dans votre navigateur, rien n'est envoyé à un serveur.
C'est particulièrement utile lorsque vous devez :
- Déboguer des vidages mémoire hexadécimaux en les convertissant en décimal
- Calculer des permissions Unix en binaire/octal
- Vérifier des codes couleur entre hexadécimal et valeurs RVB
- Convertir entre des bases qui ne sont pas des puissances de deux
Ressources associées
- L'encodage Base64 expliqué — Base64 utilise une approche différente (groupes de 6 bits associés à 64 caractères) pour encoder du binaire en texte
- Comparaison des algorithmes de hachage — les sorties de hachage sont généralement affichées en hexadécimal
- Convertisseur de bases numériques — convertissez entre n'importe quelles bases instantanément dans votre navigateur
🛠️ Essayez maintenant : Convertisseur de bases numériques — convertissez entre binaire, octal, décimal, hexadécimal et toute base jusqu'à 36. 100 % côté client, entièrement gratuit.