Convertisseur de bases numériques, gratuit
Convertissez entre binaire, octal, décimal et hexadécimal.
Comprendre les bases numériques
Une base numérique (ou radix) détermine combien de chiffres uniques servent à représenter les nombres. La plus familière est la base 10 (décimale), qui utilise les chiffres 0-9. Les ordinateurs utilisent nativement la base 2 (binaire), avec seulement 0 et 1.
- Binaire (base 2) : utilisée en interne par tous les systèmes numériques. Chaque chiffre est un « bit ».
- Octal (base 8) : utilise les chiffres 0-7. Courant pour les permissions de fichiers Unix (par ex. chmod 755).
- Décimal (base 10) : le système numérique humain standard.
- Hexadécimal (base 16) : utilise 0-9 et A-F. Très utilisé pour les couleurs (#FF0000), les adresses mémoire et la représentation d'octets.
Questions fréquentes
Prend-il en charge les très grands nombres ?
Oui. Cet outil utilise le BigInt de JavaScript, qui prend en charge des entiers arbitrairement grands sans perte de précision. Vous pouvez convertir des nombres de centaines de chiffres.
Pourquoi le binaire est-il important en informatique ?
Les ordinateurs utilisent des signaux électriques à deux états (on/off), qui correspondent naturellement au binaire (1/0). Toute donnée · texte, image, vidéo · est finalement stockée et traitée en binaire.
Comment fonctionne la notation positionnelle
Un système de numération positionnel représente un nombre à l'aide d'un ensemble de taille fixe de symboles de chiffres, où la position de chaque chiffre détermine son poids. Le poids de la position i (comptée depuis la droite, en commençant à zéro) est base^i. La valeur du nombre est la somme de digit × base^i sur toutes les positions. La chaîne 352 en base 10 signifie 3×100 + 5×10 + 2×1 = 352. La chaîne 1011 en base 2 signifie 1×8 + 0×4 + 1×2 + 1×1 = 11 en décimal.
La notation positionnelle est l'une des deux grandes inventions de la représentation des nombres. L'autre est la notation non positionnelle (chiffres romains, hiératique égyptien), où les symboles ont des valeurs fixes quelle que soit leur position. Les systèmes positionnels compriment ; les systèmes non positionnels, non : le nombre 1 888 occupe quatre chiffres en décimal, mais huit caractères en chiffres romains : MDCCCLXXXVIII.
Brève histoire des bases
Les Babyloniens utilisaient un système positionnel en base 60 (sexagésimale) au moins dès la période paléo-babylonienne, vers 1900-1600 av. J.-C. Les tablettes cunéiformes de cette époque emploient déjà la notation positionnelle. Pourquoi 60 ? Ce nombre possède un nombre exceptionnellement élevé de petits diviseurs (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60), ce qui facilitait le calcul des fractions dans un monde antérieur aux fractions décimales. L'héritage babylonien est toujours dans votre poche : le temps (60 secondes dans une minute, 60 minutes dans une heure) et les angles / coordonnées géographiques (360 degrés dans un cercle, 60 minutes d'arc par degré, 60 secondes d'arc par minute) en sont des descendants directs. Quand vous lisez une horloge ou une latitude, vous lisez du sexagésimal.
Le système positionnel décimal tel que nous le connaissons fut mis au point par des mathématiciens indiens aux premiers siècles de notre ère. Le bond conceptuel qui le distingue des anciennes tables à calcul est un symbole écrit pour le zéro jouant le rôle de marqueur de position. La première utilisation non ambiguë du zéro dans un contexte positionnel est généralement attribuée à Brahmagupta (628 apr. J.-C.), dont le traité Brāhmasphuṭasiddhānta a énoncé des règles d'arithmétique avec le zéro. Le manuscrit de Bakhshali atteste un usage encore plus ancien d'un point (bindu) comme marqueur de position.
Le système décimal voyagea de l'Inde vers le monde islamique aux VIIIe et IXe siècles ; le polymathe perse al-Khwārizmī écrivit Sur le calcul avec les chiffres indiens vers 825 apr. J.-C. (les mots « algorithme » et « algèbre » sont des descendants étymologiques directs de son nom et des titres de ses ouvrages). L'Europe était à la traîne. Léonard de Pise, connu sous le nom de Fibonacci, introduisit formellement les chiffres indo-arabes dans l'Europe latine dans Liber Abaci (1202), démontrant leur supériorité sur les chiffres romains. Les chiffres romains subsistèrent dans la comptabilité européenne jusqu'au XVIe siècle.
Gottfried Wilhelm Leibniz décrivit un système de numération entièrement binaire dans son article de 1703 Explication de l'arithmétique binaire : bien que sa motivation première fût philosophique (une correspondance avec le I Ching) plutôt que pratique. Le saut vers le calcul binaire vint avec la thèse de master de Claude Shannon, soutenue en 1937 au MIT, « A Symbolic Analysis of Relay and Switching Circuits », qui montra que l'algèbre de Boole pouvait modéliser des réseaux de relais électriques, faisant du binaire le langage naturel de la logique numérique.
Les algorithmes de conversion
Décimal vers une autre base, divisions successives. Pour convertir un entier décimal N en base b, divisez N par b, notez le reste, remplacez N par le quotient, et répétez jusqu'à ce que le quotient soit 0. Les restes lus de bas en haut sont les chiffres en base b. Exemple traité pour la conversion de 156 en binaire : 156÷2 = 78 r0, 78÷2 = 39 r0, 39÷2 = 19 r1, 19÷2 = 9 r1, 9÷2 = 4 r1, 4÷2 = 2 r0, 2÷2 = 1 r0, 1÷2 = 0 r1, puis en lisant les restes de bas en haut : 10011100. Vérification : 128 + 16 + 8 + 4 = 156.
Autre base vers décimal, méthode de Horner. Partez de 0 ; pour chaque chiffre, de gauche à droite, multipliez le total courant par la base et ajoutez le nouveau chiffre. Exemple traité pour l'hexadécimal 1F4 : 0×16 + 1 = 1, puis 1×16 + 15 = 31, puis 31×16 + 4 = 500.
Les deux algorithmes s'exécutent en temps linéaire par rapport au nombre de chiffres, et le BigInt de JavaScript les implémente en coulisses, ce qui explique pourquoi cet outil n'a aucun plafond de précision. Un nombre de 200 chiffres se convertit proprement entre deux bases quelconques sans perte d'arrondi, exactement comme le ferait une calculatrice dotée d'une arithmétique entière à précision arbitraire.
Les quatre bases qui comptent en informatique
- Binaire (base 2) : les transistors sont passants ou bloqués, donc le binaire est la représentation naturelle de la logique numérique. Toute donnée, en fin de compte, est binaire.
- Octal (base 8) : historiquement courant aux débuts de l'informatique, car 3 chiffres binaires correspondent exactement à 1 chiffre octal. Moins répandu aujourd'hui, mais encore utilisé pour les permissions de fichiers Unix (
chmod 755) et certains formats de fichiers hérités. - Décimal (base 10) : le système numérique humain de tous les jours, presque certainement parce que nous avons dix doigts. Utilisé par les systèmes financiers, les sciences, et partout où des humains lisent des nombres.
- Hexadécimal (base 16) : exactement 4 bits par chiffre, ce qui signifie qu'1 octet = 2 caractères hexadécimaux. La norme de fait pour la représentation compacte au niveau de l'octet : codes de couleur hexadécimaux (
#FF0000), adresses mémoire (0x7fff...), points de code Unicode (U+1F600), adresses MAC, empreintes de hachage.
Puissances de 2 à mémoriser
| Puissance | Décimale | Hexadécimal | Pourquoi c'est important |
|---|---|---|---|
| 2⁸ | 256 | 0x100 | Un octet ; valeur maximale d'un canal 8 bits (RGB) |
| 2¹⁰ | 1,024 | 0x400 | « 1K » en contexte informatique |
| 2¹⁶ | 65,536 | 0x10000 | Taille du BMP UTF-16 ; valeur maximale d'un entier 16 bits |
| 2²⁰ | 1,048,576 | 0x100000 | « 1M » en contexte informatique |
| 2²⁴ | 16,777,216 | 0x1000000 | RGB 24 bits (« 16,7 millions de couleurs ») |
| 2³² | ~4,3 milliards | 0x100000000 | Valeur maximale d'un entier non signé 32 bits ; espace d'adressage IPv4 |
| 2⁶⁴ | ~1.8×10¹⁹ | 0x100… | Valeur maximale d'un entier 64 bits ; bien au-delà de la précision des nombres à virgule flottante |
Quand recourir à un convertisseur de bases
- Lire des vidages hexadécimaux issus d'un débogueur, d'une capture de paquets réseau ou d'un fichier binaire. Traduire
0xFFen 255 de tête, c'est faisable ;0x7F4A, généralement pas. - Codes de couleur CSS :
#FF0000vaut (255, 0, 0) en décimal. La conversion hexadécimal vers RGB revient exactement à une conversion base 16 → base 10 sur chaque paire de deux caractères. - Permissions de fichiers Unix :
chmod 755est en octal : 7 = rwx (lecture+écriture+exécution = 4+2+1), 5 = r-x (lecture+exécution = 4+1), et de nouveau 5. Chaque chiffre octal vaut exactement 3 bits binaires. - Octets IPv4 : les adresses comme
192.168.1.1sont quatre nombres de 8 bits. Les masques de sous-réseau sont plus faciles à appréhender en binaire (un masque/24correspond à 24 uns suivis de 8 zéros). - Points de code Unicode : les caractères sont répertoriés en hexadécimal (U+2665 pour ♥, U+1F600 pour 😀). Des équivalents décimaux existent, mais la forme hexadécimale correspond aux tables Unicode.
- Arithmétique de masques de bits : les indicateurs de fonctionnalités, les bits de permission et les valeurs de registres matériels sont tous plus faciles à lire en binaire ou en hexadécimal qu'en décimal.
- Déboguer de l'assembleur ou du code désassemblé : les adresses, les opcodes et les valeurs immédiates s'écrivent par convention en hexadécimal.
Autres bases à connaître
- Base 36 : la base la plus élevée qui tient dans les caractères alphanumériques sans caractères spéciaux (10 chiffres + 26 lettres). Utilisée pour les hachages d'URL courts et certains schémas d'encodage. La méthode
Number.toString(36)de JavaScript l'expose directement. - Base 58 : utilisée dans les adresses Bitcoin et Ripple. Elle écarte les caractères faciles à confondre
0(zéro),O(O majuscule),I(i majuscule) etl(L minuscule), de sorte que les adresses résistent aux erreurs de transcription manuscrite. - Base 62 : alphanumérique complet (chiffres + minuscules + majuscules). Courante dans les slugs des raccourcisseurs d'URL (le « abc123 » de
example.com/abc123). - Base 64 : encode des données binaires en ASCII imprimable pour le transport sur des canaux à texte uniquement (e-mail, JSON, URL). Champ d'application différent de cet outil ; elle opère sur des flux d'octets plutôt que sur des entiers.
Conventions de préfixes dans le code source
La plupart des langages modernes utilisent le même jeu de préfixes littéraux pour lever l'ambiguïté de la base dans le code source :
- Binaire :
0bou0B(Python, Ruby, Java depuis la 7, C++ depuis C++14, JavaScript depuis ES6, Rust). Exemple :0b10011100. - Octal :
0oou0O(Python 3, ES6, Rust). Les langages plus anciens de la famille C utilisent un zéro initial (0755), ce qui constitue parfois un piège si vous complétez par mégarde un nombre décimal avec un zéro. - Hex :
0xou0X: compris universellement dans pratiquement tous les langages de programmation. - Décimal : aucun préfixe nécessaire.
Autres questions
Et les nombres négatifs ?
Les ordinateurs représentent les entiers négatifs à l'aide du complément à deux : on inverse tous les bits et on ajoute 1. Ainsi, en complément à deux sur 8 bits, −1 vaut 11111111 (0xFF), −5 vaut 11111011 (0xFB) et −128 vaut 10000000 (0x80). Le bit de poids fort indique le signe. Cet outil affiche les entiers négatifs avec un signe moins en tête plutôt qu'en représentation en complément à deux, car cette dernière n'a de sens qu'à une largeur de bits fixe ; or, comme l'outil utilise des BigInt de précision arbitraire, il n'y a aucune largeur fixe à interpréter.
Pourquoi l'hexadécimal utilise-t-il les lettres A-F ?
Parce que la base 16 nécessite 16 symboles de chiffres distincts, alors que les chiffres décimaux 0-9 n'en fournissent que dix. La convention consistant à utiliser A-F (insensible à la casse) pour 10-15 a été popularisée par l'IBM System/360 dans les années 1960, puis normalisée dans toute l'industrie. Des systèmes antérieurs ont expérimenté d'autres glyphes (le G-15 de Bendix utilisait u, v, w, x, y, z), mais A-F l'a emporté.
Cet outil gère-t-il les fractions ?
Non, il fonctionne uniquement avec des entiers. La conversion de bases pour les fractions est plus complexe, car la plupart des fractions décimales n'ont pas de représentation exacte en binaire (le célèbre problème de virgule flottante 0.1 + 0.2 ≠ 0.3). Pour une inspection au niveau du bit des nombres à virgule flottante, un visualiseur IEEE 754 dédié est l'outil approprié.
Des données sont-elles envoyées à un serveur ?
Non. Les conversions s'exécutent dans votre navigateur grâce à l'arithmétique BigInt native de JavaScript. Rien de votre saisie ne quitte la page ; l'outil fonctionne hors ligne une fois chargé.