Convertisseurs

Comment fonctionne l'hexadécimal : guide complet des nombres en base 16

Apprenez comment fonctionne l'hexadécimal (base 16), comment convertir l'hex en décimal et inversement, le rôle de l'hex en informatique, l'hex signé avec le complément à deux, l'arithmétique hex et des exemples en Python, JavaScript et C.

Publié sur 19 mars 2026
15 min lire
Guides CaesarCipher.org

Comment fonctionne l'hexadécimal : guide complet des nombres en base 16

L'hexadécimal est partout en informatique. Si vous avez déjà vu un code couleur web comme #FF5733, une adresse mémoire comme 0x7FFF5FBFF8AC ou un hachage cryptographique, vous avez rencontré des nombres hexadécimaux. Pourtant, beaucoup de développeurs traitent l'hex comme une notation mystérieuse qu'ils copient-collent sans vraiment la comprendre.

Ce guide change cela. À la fin, vous comprendrez exactement comment fonctionne le système hexadécimal, saurez convertir entre hex et décimal dans les deux sens, et comprendrez pourquoi l'hex est la notation dominante en informatique bas niveau. Essayez notre convertisseur hexadécimal vers décimal gratuit pour suivre les exemples ci-dessous.

Pourquoi la base 16 ? Le lien avec les puissances de 2

Pour comprendre pourquoi l'hexadécimal existe, commencez par une question simple : pourquoi ne pas simplement utiliser le décimal pour tout en informatique ?

La réponse se trouve dans le binaire. Les ordinateurs fonctionnent en binaire (base 2), où les données sont représentées par des séquences de 0 et de 1. Un seul octet, l'unité fondamentale de la mémoire informatique, contient 8 chiffres binaires (bits). La valeur d'octet 11010110 est parfaitement précise pour un ordinateur, mais elle est longue, facile à mal lire et pénible pour les humains.

Le décimal (base 10) est naturel pour les humains, mais il ne s'aligne pas proprement avec le binaire. Convertir entre binaire et décimal exige des divisions et multiplications qui masquent les motifs de bits sous-jacents.

L'hexadécimal (base 16) résout ce problème parce que 16 est une puissance de 2 : 16 = 2^4. Cela signifie que chaque chiffre hex représente exactement 4 bits binaires. Deux chiffres hex représentent exactement un octet. L'alignement est parfait :

Binaire (8 bits)Hex (2 chiffres)Décimal
0000 0000000
0111 11117F127
1000 000080128
1111 1111FF255

L'octet 11010110 devient simplement D6 en hex, deux caractères qui correspondent directement aux bits sous-jacents sans arithmétique. C'est pourquoi l'hexadécimal est devenu la notation privilégiée en informatique.

Chiffres hexadécimaux : 0-9 et A-F

L'hexadécimal utilise seize symboles pour représenter les valeurs zéro à quinze :

Chiffre hexValeur décimaleBinaire
000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
A101010
B111011
C121100
D131101
E141110
F151111

Les lettres A à F dépassent les dix chiffres décimaux pour couvrir les valeurs 10-15. Les majuscules (A-F) comme les minuscules (a-f) sont acceptées dans presque tous les contextes, même si les majuscules sont le standard conventionnel.

Préfixes et notations hex courants

Différents langages et contextes utilisent différentes notations pour indiquer qu'un nombre est hexadécimal :

  • 0x -- C, C++, Java, Python, JavaScript : 0xFF
  • # -- codes couleur CSS : #FF5733
  • $ -- assembleur 6502/68000 : $FF
  • suffixe h -- assembleur Intel : FFh
  • U+ -- points de code Unicode : U+0041
  • \x -- échappement hex dans les chaînes : \x41 (la lettre A)

Le préfixe ou la notation ne change pas la valeur : il indique seulement au parseur ou au lecteur d'interpréter les chiffres comme de l'hexadécimal.

Comment convertir l'hexadécimal en décimal

La technique centrale est la notation positionnelle, le même principe qui régit tous les systèmes numériques, appliqué avec une base 16 au lieu de la base 10.

La formule

Pour un nombre hexadécimal avec les chiffres d(n-1), d(n-2), ..., d(1), d(0), la valeur décimale est :

decimal = d(n-1) x 16^(n-1) + d(n-2) x 16^(n-2) + ... + d(1) x 16^1 + d(0) x 16^0

Chaque chiffre hex est multiplié par 16 élevé à la puissance de sa position (en comptant depuis la droite à partir de 0), puis tous les produits sont additionnés.

Référence des puissances de 16

Mémoriser les premières puissances de 16 rend la conversion mentale beaucoup plus rapide :

PuissanceValeur
16^01
16^116
16^2256
16^34 096
16^465 536
16^51 048 576
16^616 777 216
16^7268 435 456
16^84 294 967 296

Exemple 1 : convertir 2F en décimal

Entrée hex : 2F

  1. Le chiffre 2 est en position 1 : 2 x 16^1 = 2 x 16 = 32
  2. Le chiffre F (15) est en position 0 : 15 x 16^0 = 15 x 1 = 15
  3. Somme : 32 + 15 = 47

Résultat : 2F(hex) = 47(décimal)

Exemple 2 : convertir 1A3F en décimal

Entrée hex : 1A3F

  1. Chiffre 1 en position 3 : 1 x 16^3 = 1 x 4 096 = 4 096
  2. Chiffre A (10) en position 2 : 10 x 16^2 = 10 x 256 = 2 560
  3. Chiffre 3 en position 1 : 3 x 16^1 = 3 x 16 = 48
  4. Chiffre F (15) en position 0 : 15 x 16^0 = 15 x 1 = 15
  5. Somme : 4 096 + 2 560 + 48 + 15 = 6 719

Résultat : 1A3F(hex) = 6 719(décimal)

Exemple 3 : convertir DEADBEEF en décimal

Entrée hex : DEADBEEF (une célèbre valeur "hexspeak" utilisée comme nombre magique en débogage)

  1. D (13) x 16^7 = 13 x 268 435 456 = 3 489 660 928
  2. E (14) x 16^6 = 14 x 16 777 216 = 234 881 024
  3. A (10) x 16^5 = 10 x 1 048 576 = 10 485 760
  4. D (13) x 16^4 = 13 x 65 536 = 851 968
  5. B (11) x 16^3 = 11 x 4 096 = 45 056
  6. E (14) x 16^2 = 14 x 256 = 3 584
  7. E (14) x 16^1 = 14 x 16 = 224
  8. F (15) x 16^0 = 15 x 1 = 15

Somme : 3 489 660 928 + 234 881 024 + 10 485 760 + 851 968 + 45 056 + 3 584 + 224 + 15 = 3 735 928 559

C'est un entier non signé 32 bits couramment utilisé pour marquer la mémoire non initialisée dans les outils de débogage.

Comment convertir le décimal en hexadécimal

Le processus inverse utilise la division répétée par 16 :

  1. Divisez le nombre décimal par 16
  2. Notez le reste (il devient un chiffre hex)
  3. Remplacez le nombre par le quotient
  4. Répétez jusqu'à ce que le quotient soit 0
  5. Lisez les chiffres hex de bas en haut (dernier reste en premier)

Exemple : convertir 6 719 en hex

ÉtapeOpérationQuotientResteChiffre hex
16719 / 1641915F
2419 / 162633
326 / 16110A
41 / 16011

Lecture de bas en haut : 1A3F

Vérification : 1A3F(hex) = 1x4096 + 10x256 + 3x16 + 15x1 = 4096 + 2560 + 48 + 15 = 6 719. Correct.

L'hexadécimal en informatique

Adresses mémoire

Lorsque vous déboguez un programme, les adresses mémoire sont affichées en hexadécimal :

0x7FFF5FBFF8AC
0x00400000 (typical .text section start on Linux)
0xDEADBEEF (debug marker for uninitialized memory)

L'hex est utilisé parce que la mémoire est adressable par octets, et deux chiffres hex correspondent à un octet. Une adresse 64 bits comme 0x7FFF5FBFF8AC contient 12 chiffres hex, bien plus lisibles que les 48 bits binaires qu'elle représente.

Codes couleur web

Les couleurs hex CSS encodent les intensités rouge, verte et bleue :

Code hexR (décimal)G (décimal)B (décimal)Couleur
#000000000Noir
#FFFFFF255255255Blanc
#FF000025500Rouge
#00FF0002550Vert
#0000FF00255Bleu
#FF57332558751Rouge-orangé
#3A7BD558123213Bleu acier

Chaque paire hex représente un octet (0-255 en décimal), et vous pouvez convertir ces valeurs avec notre convertisseur hexadécimal vers décimal. Pour une décomposition RGB complète, essayez notre convertisseur hex vers RGB.

Adresses MAC

Les adresses d'interfaces réseau utilisent six paires d'octets hex séparées par des deux-points ou des tirets :

00:1A:2B:3C:4D:5E

Les trois premiers octets (00:1A

) identifient le fabricant (OUI), et les trois derniers (3C:4D
) sont l'identifiant propre à l'appareil. Chaque paire est un octet hex qui se convertit en valeur décimale 0-255.

Points de code Unicode

Chaque caractère Unicode a un point de code écrit en hex :

Point de codeValeur hexDécimalCaractère
U+00414165A
U+00484872H
U+00E9E9233e (avec accent)
U+4E164E1619 990"monde" en chinois
U+1F6001F600128 512Emoji visage souriant

La notation hex est utilisée parce qu'elle s'aligne avec l'encodage d'octets sous-jacent (UTF-8, UTF-16) et qu'elle est plus compacte que le décimal pour toute la plage Unicode (0 à 10FFFF).

Valeurs hex courantes que tout développeur devrait connaître

Certaines valeurs hex apparaissent si souvent en programmation et administration système que les reconnaître instantanément fait gagner beaucoup de temps.

Limites d'octets

HexDécimalSignification
0x000Octet nul, terminateur de chaîne en C
0x0A10Line feed (LF), nouvelle ligne Unix
0x0D13Carriage return (CR)
0x2032Caractère espace ASCII
0x7F127Entier signé 8 bits maximum, caractère DEL
0x80128Minimum signé 8 bits (complément à deux)
0xFF255Maximum non signé 8 bits (1 octet)
0xFFFF65 535Maximum non signé 16 bits
0xFFFFFFFF4 294 967 295Maximum non signé 32 bits

Plages de caractères ASCII en hex

Plage hexPlage décimaleCaractères
30-3948-57Chiffres '0' à '9'
41-5A65-90Majuscules 'A' à 'Z'
61-7A97-122Minuscules 'a' à 'z'

Savoir que A majuscule commence à 0x41 (65) et a minuscule à 0x61 (97), avec une différence exacte de 0x20 (32), est utile pour implémenter la conversion de casse dans du code bas niveau.

Nombres de débogage et nombres magiques

Les programmeurs utilisent des motifs hex reconnaissables pour marquer des états mémoire spéciaux :

HexDécimalUsage
0xDEADBEEF3 735 928 559Marqueur de mémoire non initialisée (IBM)
0xCAFEBABE3 405 691 582Nombre magique des fichiers de classe Java
0xBAADF00D3 131 961 357Tas Windows LocalAlloc non initialisé
0xFEEDFACE4 277 009 102En-tête binaire Mach-O (macOS)
0xDEADC0DE3 735 929 054Marqueur de tampon non initialisé OpenSolaris

Ces valeurs "hexspeak" sont choisies parce qu'elles sont faciles à repérer dans les dumps mémoire tout en n'utilisant que des lettres valides en hex (A-F).

Hexadécimal signé et complément à deux

Dans la plupart des ordinateurs modernes, les entiers négatifs sont stockés avec l'encodage en complément à deux. Le comprendre est essentiel pour interpréter les valeurs hex signées dans les dumps mémoire, registres et protocoles réseau.

Fonctionnement du complément à deux

Pour un entier signé sur N bits :

  • Si le bit le plus significatif (MSB) vaut 0, le nombre est positif (ou zéro)
  • Si le MSB vaut 1, le nombre est négatif

Pour trouver la valeur négative d'un nombre hex dont le MSB est défini :

  1. Convertir en binaire
  2. Inverser tous les bits (0 devient 1, 1 devient 0)
  3. Ajouter 1
  4. Le résultat est la magnitude ; ajoutez un signe moins

Exemples hex signés sur 8 bits

HexBinaireNon signéSigné (8 bits)
000000000000
7F01111111127+127 (positif max)
8010000000128-128 (négatif min)
FF11111111255-1
FE11111110254-2
8110000001129-127

Exemple : que vaut 0x9C comme entier signé 8 bits ?

  1. Binaire : 10011100
  2. Le MSB vaut 1, donc le nombre est négatif
  3. Inverser : 01100011
  4. Ajouter 1 : 01100100 = 100 en décimal
  5. Résultat : -100

0x9C comme octet non signé vaut donc 156, mais comme octet signé il vaut -100. L'interprétation dépend entièrement du contexte.

Valeurs signées 16 bits et 32 bits

Le même principe s'étend aux entiers plus larges :

HexNon signéSigné (32 bits)
0000000000
7FFFFFFF2 147 483 647+2 147 483 647 (max)
800000002 147 483 648-2 147 483 648 (min)
FFFFFFFF4 294 967 295-1
FFFFFFFE4 294 967 294-2

Arithmétique hexadécimale

Même si la plupart des gens utilisent des calculatrices pour l'arithmétique hex, en comprendre les bases aide au débogage et au calcul mental.

Addition hexadécimale

L'addition hex fonctionne comme l'addition décimale, mais avec un seuil de retenue à 16 au lieu de 10 :

  3A
+ 1F
----
  1. Colonne de droite : A(10) + F(15) = 25. Comme 25 >= 16, écrire 25 - 16 = 9 et retenir 1
  2. Colonne de gauche : 3 + 1 + 1(retenue) = 5

Résultat : 3A + 1F = 59

Vérification : 58 + 31 = 89 en décimal. 59(hex) = 5x16 + 9 = 89. Correct.

Soustraction hexadécimale

  FF
- 3A
----
  1. Colonne de droite : F(15) - A(10) = 5
  2. Colonne de gauche : F(15) - 3 = C(12)

Résultat : FF - 3A = C5

Vérification : 255 - 58 = 197. C5(hex) = 12x16 + 5 = 197. Correct.

Astuces de calcul mental

  • Ajouter 1 à F donne 10 (hex), pas 16 : souvenez-vous que vous êtes en base 16
  • FF + 1 = 100 (hex) = 256 (décimal)
  • Soustraire 1 à 10 (hex) donne F
  • Doubler un chiffre hex : doublez la valeur décimale, puis reconvertissez si >= 16

Hexadécimal vers décimal dans les langages de programmation

Python

La fonction int() de Python est la façon standard de parser des chaînes hex :

# Hex string to decimal
result = int("FF", 16)     # 255
result = int("1A3F", 16)   # 6719

# Hex literal
value = 0xFF               # 255

# Decimal to hex
hex(255)                    # '0xff'
format(255, 'X')            # 'FF'
format(255, '04X')          # '00FF' (zero-padded)

# Parse with 0x prefix
int("0xFF", 16)             # 255
int("0xFF", 0)              # 255 (auto-detect base)

JavaScript

JavaScript utilise parseInt() pour les chaînes hex et le préfixe 0x pour les littéraux :

// Hex string to decimal
parseInt("FF", 16)          // 255
parseInt("1A3F", 16)        // 6719

// Hex literal
const value = 0xFF;         // 255

// Decimal to hex
(255).toString(16)          // 'ff'
(255).toString(16).toUpperCase() // 'FF'

// For very large values, use BigInt
BigInt("0xDEADBEEFDEADBEEF") // 16045690984833335023n

// Number.parseInt also works
Number.parseInt("FF", 16)   // 255

C / C++

C utilise strtol() pour la conversion de chaînes et prend directement en charge les littéraux hex :

#include <stdio.h>
#include <stdlib.h>

int main() {
    // String to decimal
    long value = strtol("FF", NULL, 16);  // 255
    printf("%ld\n", value);

    // Hex literal
    int x = 0xFF;            // 255
    printf("%d\n", x);       // decimal: 255
    printf("%X\n", x);       // hex: FF
    printf("%08X\n", x);     // zero-padded: 000000FF

    // Unsigned 32-bit
    unsigned long big = strtoul("DEADBEEF", NULL, 16);
    printf("%lu\n", big);    // 3735928559

    return 0;
}

Foire aux questions

Comment convertir l'hex en décimal ?

Multipliez chaque chiffre hex par sa puissance positionnelle de 16, puis additionnez tous les produits. Par exemple, hex 2F = 2x16 + 15x1 = 32 + 15 = 47. Remplacez les lettres A-F par leurs valeurs décimales (A=10, B=11, C=12, D=13, E=14, F=15) avant de multiplier.

Que vaut 0xFF en décimal ?

0xFF vaut 255 en décimal. F(15) x 16 + F(15) x 1 = 240 + 15 = 255. C'est la valeur maximale d'un octet non signé de 8 bits (binaire 11111111), souvent utilisée comme masque de bits en programmation.

Que signifie le préfixe 0x ?

Le préfixe 0x est une convention de notation utilisée en C, Java, Python, JavaScript et de nombreux autres langages pour indiquer que les chiffres suivants sont hexadécimaux. Il ne change pas la valeur : 0xFF et FF représentent le même nombre (255 en décimal).

Comment convertir le décimal en hex ?

Divisez répétitivement le nombre décimal par 16 en notant chaque reste. Les restes, lus de bas en haut, forment le nombre hex. Pour les restes 10-15, utilisez les lettres A-F. Par exemple, 255 / 16 = 15 reste 15, puis 15 / 16 = 0 reste 15. Lecture de bas en haut : FF.

Quelle est la différence entre hex et décimal ?

L'hexadécimal est en base 16 (chiffres 0-9 et A-F), tandis que le décimal est en base 10 (chiffres 0-9 seulement). L'hex est préféré en informatique parce que chaque chiffre hex correspond exactement à 4 bits binaires, ce qui donne une représentation compacte des données binaires. Le décimal est le système de comptage humain standard.

Comment convertir l'hex signé en décimal ?

Pour les valeurs hex signées (complément à deux), vérifiez le bit le plus significatif. S'il est défini (chiffre hex 8-F en position la plus à gauche pour les valeurs 8 bits), le nombre est négatif. Pour trouver la magnitude : inversez tous les bits et ajoutez 1. Par exemple, 0xFF comme entier signé 8 bits vaut -1 (inverser 11111111 en 00000000, ajouter 1 pour obtenir 1, puis appliquer le signe négatif).

Où utilise-t-on l'hexadécimal ?

L'hex est utilisé pour les adresses mémoire, les codes couleur web (#FF5733), les adresses MAC, les points de code Unicode (U+0041), les hachages cryptographiques (SHA-256), le langage assembleur, les adresses IPv6 et partout où des données binaires doivent être notées de façon compacte et lisible.

Pourquoi l'hex est-il meilleur que l'octal ?

L'hex s'aligne sur la frontière d'octet : 2 chiffres hex = 1 octet (8 bits). L'octal (base 8) utilise des groupes de 3 bits, qui ne s'alignent pas proprement avec les octets de 8 bits. Un octet nécessite 2,67 chiffres octaux mais exactement 2 chiffres hex. C'est pourquoi l'hex a largement remplacé l'octal en informatique moderne, même si l'octal subsiste dans les permissions de fichiers Unix (chmod 755).

Comment faire de l'arithmétique hex ?

L'arithmétique hex suit les mêmes règles que l'arithmétique décimale, avec un seuil de retenue/emprunt à 16 au lieu de 10. Pour l'addition, si la somme d'une colonne dépasse 15 (F), soustrayez 16 et retenez 1 dans la colonne suivante. Pour la soustraction, si la différence d'une colonne est négative, ajoutez 16 et empruntez 1 à la colonne suivante.

L'hexadécimal peut-il avoir des points décimaux ?

Oui, même si c'est rare. Hex 1.8 vaut 1 + 8/16 = 1,5 en décimal. Certains contextes de programmation (format %a de C99, notation hex flottante IEEE 754) utilisent des flottants hex comme 0x1.8p3 (signifiant 1,5 x 2^3 = 12,0). En pratique, la plupart des conversions hex-vers-décimal concernent des entiers.

Hex vs autres systèmes numériques

Comprendre comment l'hexadécimal se compare aux autres systèmes numériques clarifie quand utiliser chacun :

PropriétéBinaire (Base 2)Octal (Base 8)Décimal (Base 10)Hex (Base 16)
Chiffres utilisés0-10-70-90-9, A-F
Bits par chiffre13~3.324
Alignement octetParfait (8 chiffres)Mauvais (2.67 chiffres)Aucun (variable)Parfait (2 chiffres)
Usage principalLogique matériellePermissions UnixMath humainesNotation informatique

L'hex gagne dans les contextes informatiques grâce à son alignement parfait sur les octets. L'octal survit dans les permissions Unix (chmod 755 = rwxr-xr-x), où le groupement de 3 bits correspond au modèle read/write/execute sur 3 bits. Le décimal reste le standard pour les valeurs destinées aux humains comme les prix, les quantités et les mesures.

Pour convertir entre ces systèmes, vous pouvez utiliser notre convertisseur binaire vers décimal ou notre convertisseur binaire vers octal en plus du convertisseur hex vers décimal.

Résumé

L'hexadécimal est le pont entre une notation lisible par l'humain et la réalité binaire des ordinateurs. Sa puissance vient d'un fait mathématique simple : 16 = 2^4, ce qui signifie que chaque chiffre hex correspond exactement à 4 bits binaires. Cet alignement fait de l'hex la manière naturelle d'exprimer les données binaires de façon compacte.

Points clés de ce guide :

  • Hex vers décimal : multipliez chaque chiffre par sa puissance de 16 et additionnez les produits
  • Décimal vers hex : divisez répétitivement par 16 en collectant les restes de bas en haut
  • Deux chiffres hex = un octet : FF = 255, la valeur maximale d'un octet non signé
  • L'hex signé utilise le complément à deux : les mêmes 8 bits peuvent signifier 255 (non signé) ou -1 (signé)
  • L'arithmétique hex suit les règles standard avec un seuil de retenue à 16
  • Programmation : Python int("FF", 16), JavaScript parseInt("FF", 16), C strtol("FF", NULL, 16)

Prêt à convertir ? Utilisez notre convertisseur hexadécimal vers décimal gratuit pour convertir instantanément n'importe quelle valeur hexadécimale en décimal, avec une décomposition étape par étape en notation positionnelle. Vous pouvez aussi explorer notre convertisseur hexadécimal vers binaire et notre convertisseur hexadécimal vers texte pour les conversions associées.

À propos de cet article

Cet article fait partie de notre collection de guides Convertisseurs. Explorez les outils, exemples et workflows pratiques associés sur CaesarCipher.org.

Autres Tutoriels Convertisseurs

Essayez l'outil Convertisseurs

Mettez le guide en pratique avec des outils et exemples liés à convertisseurs.

Essayez l'outil Convertisseurs