Convertisseur de bases numériques

Convertissez entre binaire, octal, décimal et hexadécimal.

À propos de cet outil

Saisissez un nombre en binaire, octal, décimal ou hexadécimal et voyez-le dans toutes les autres bases, avec ses bits regroupés en octets. Gère des entiers de taille arbitraire et reconnaît les préfixes 0x, 0b et 0o.

Mode d’emploi

  1. Saisissez un nombre dans l’un des quatre champs : binaire, octal, décimal ou hexadécimal.
  2. Les autres champs se mettent à jour instantanément. Les préfixes comme 0x, 0b et 0o sont acceptés.
  3. Consultez le panneau des bits pour voir la valeur découpée en octets.

Questions

Quelle taille de nombre peut-il gérer ?
N’importe quelle taille. L’outil utilise BigInt de JavaScript : il n’y a donc ni limite à 32 ou 64 bits, ni arrondi.
Pourquoi les nombres hexadécimaux commencent-ils par 0x ?
C’est une convention issue du C, désormais utilisée par la plupart des langages, pour indiquer que les chiffres sont hexadécimaux. De même, 0b indique du binaire et 0o de l’octal.
Où l’octal est-il encore utilisé ?
Principalement pour les permissions de fichiers Unix, où 755 signifie rwxr-xr-x. Chaque chiffre octal correspond exactement à trois bits de permission.
Comment convertir de l’hexadécimal en texte ASCII ?
Cet outil convertit des nombres, pas des chaînes. Dans un texte en hexadécimal, chaque paire de chiffres est un octet, à chercher dans une table ASCII : 48 65 6C 6C 6F donne « Hello ». En ligne de commande, echo 48656c6c6f | xxd -r -p retransforme une chaîne hexadécimale en texte.
Peut-on convertir des fractions ou des nombres à virgule ?
Non, uniquement des nombres entiers. Les fractions sont de toute façon délicates en binaire : 0.1 en décimal n’a pas de représentation binaire exacte et se répète à l’infini, c’est pourquoi 0.1 + 0.2 ne vaut pas exactement 0.3 dans la plupart des langages de programmation. Les valeurs à virgule flottante sont stockées au format IEEE 754, et non comme de simples entiers binaires.
Quel est le plus grand nombre qui tient sur 8, 16, 32 ou 64 bits ?
En non signé, c’est 2ⁿ − 1 : 255, 65 535, 4 294 967 295 et 18 446 744 073 709 551 615. Les valeurs signées atteignent environ la moitié, par exemple 2 147 483 647 sur 32 bits. Les nombres JavaScript ne sont exacts que jusqu’à 9 007 199 254 740 991 : cet outil utilise donc BigInt pour rester précis au-delà.

Comment convertir du binaire en décimal, et inversement ?

Chaque chiffre d’un nombre binaire vaut une puissance de deux, en commençant par 1 à droite. Pour convertir 1011 en décimal, additionnez les positions qui contiennent un 1 : 8 + 0 + 2 + 1 = 11. L’hexadécimal fonctionne de la même façon avec des puissances de 16 : 0x2F vaut donc 2 × 16 + 15 = 47. L’octal utilise des puissances de huit. Une seule règle couvre toutes les bases : chaque chiffre multiplié par la base élevée à la puissance de sa position.

Pour faire l’inverse, divisez plusieurs fois par la base cible et notez les restes du dernier au premier. Diviser 11 par 2 encore et encore laisse les restes 1, 1, 0 et 1, qui, lus à l’envers, donnent 1011. Avec ce convertisseur de bases, il suffit de saisir une valeur dans n’importe quel champ pour que les trois autres se mettent à jour. Dans du code, JavaScript propose parseInt(text, 2) et n.toString(16), et Python int(text, 2) et hex(n).

Pourquoi les développeurs utilisent-ils l’hexadécimal ?

Un chiffre hexadécimal représente exactement quatre bits : deux chiffres hexadécimaux décrivent donc un octet. L’hexadécimal est ainsi une façon compacte et lisible d’écrire des données binaires : 11111111 s’écrit FF, et n’importe quelle valeur 32 bits tient en huit caractères. On le rencontre dans les adresses mémoire, les codes couleur comme #FF8800, les hachages, les adresses MAC, les points de code Unicode comme U+1F680 et les dumps d’octets affichés par des outils comme xxd et hexdump.

Le panneau des bits montre directement ce lien. La valeur est complétée jusqu’à des octets entiers, et chaque groupe de huit bits est affiché avec sa valeur hexadécimale à deux chiffres en dessous. 48879 devient 10111110 11101111, étiqueté BE et EF, ce qui explique qu’il se lise 0xBEEF. Cela facilite la vérification des flags, des masques de bits et des limites d’octets. Le Calculateur de sous-réseaux applique la même vue binaire aux adresses IPv4 et aux masques de réseau.

Comment fonctionnent les nombres négatifs en binaire : le complément à deux

Les ordinateurs stockent généralement les entiers signés en complément à deux. Pour écrire −1 sur 8 bits, inversez chaque bit de 1 et ajoutez un : 00000001 devient 11111110, plus un donne 11111111, soit 0xFF. Le bit de poids fort sert de signe : une valeur signée sur 8 bits va donc de −128 à 127, tandis que les mêmes bits lus comme non signés vont de 0 à 255. Le motif de bits est identique ; seule l’interprétation change.

Ce convertisseur travaille avec des entiers simples, pas avec des registres de largeur fixe. Saisissez -5 et vous obtenez -101 en binaire et -5 en hexadécimal, avec le signe moins conservé devant au lieu d’un motif en complément à deux. Pour obtenir le motif sur 8 bits d’un nombre négatif, ajoutez d’abord 256 : −5 + 256 = 251, soit 0xFB. Pour 32 bits, ajoutez 4294967296. Les espaces et les underscores sont ignorés : 1111_1011 est donc accepté en entrée.

Tableau décimal, hexadécimal, binaire et octal

Les nombres que vous chercherez le plus souvent, dans les quatre bases.

DécimalHexadécimalBinaireOctal
00x000000o0
10x100010o1
20x200100o2
30x300110o3
40x401000o4
50x501010o5
60x601100o6
70x701110o7
80x810000o10
90x910010o11
100xA10100o12
110xB10110o13
120xC11000o14
130xD11010o15
140xE11100o16
150xF11110o17
160x100001 00000o20
320x200010 00000o40
640x400100 00000o100
1000x640110 01000o144
1270x7F0111 11110o177
1280x801000 00000o200
2550xFF1111 11110o377
2560x1000001 0000 00000o400
5120x2000010 0000 00000o1000
10000x3E80011 1110 10000o1750
10240x4000100 0000 00000o2000
40960x10000001 0000 0000 00000o10000
655350xFFFF1111 1111 1111 11110o177777

Quelque chose ne fonctionne pas, ou un résultat semble faux ? Signaler un problème avec cet outil