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.