Les bases numériques, aussi appelées radices, déterminent le nombre de chiffres distincts utilisés dans un système de numération positionnel. Dans la vie courante, les humains utilisent presque toujours la base 10 (décimale, chiffres de 0 à 9), tandis que les ordinateurs fonctionnent en base 2 (binaire, chiffres 0 et 1). Les programmeurs lisent les adresses mémoire en base 16 (hexadécimale, chiffres de 0 à 9 et lettres A à F), et les permissions de fichiers Unix s’écrivent traditionnellement en base 8 (octale). La conversion entre bases est essentielle en informatique, en programmation embarquée et en électronique numérique. Les sections suivantes expliquent pourquoi différentes bases sont utilisées, comment la notation positionnelle fonctionne quelle que soit la base, et comment le complément à deux permet aux ordinateurs de traiter les entiers négatifs avec les mêmes circuits que les entiers positifs.

Pourquoi le binaire, l’octal et l’hexadécimal perdurent

Les ordinateurs fonctionnent en binaire parce que les circuits numériques ont exactement deux états stables : une tension élevée (1) ou basse (0). Toute autre représentation des données doit se ramener à cette couche binaire sous-jacente. Un transistor en silicium est conducteur ou non ; un domaine magnétique pointe dans un sens ou dans l’autre ; une cellule de mémoire flash stocke une charge élevée ou faible. Le binaire n’est donc pas simplement un choix de conception : c’est une contrainte physique du matériel numérique.

L’hexadécimal (base 16) reste pratique parce que chaque chiffre hexadécimal correspond exactement à quatre chiffres binaires. C’est donc une façon compacte et lisible de noter le binaire : un octet (8 bits) s’écrit avec seulement deux chiffres hexadécimaux (00–FF), au lieu de huit chiffres binaires (00000000–11111111). Pour faciliter la lecture, les adresses mémoire, les codes couleur (#FF5733), les adresses MAC et les valeurs de hachage s’écrivent en hexadécimal. L’octal (base 8), où chaque chiffre représente trois bits, reste utilisé pour les permissions de fichiers Unix (rwxr-xr-x = 755) et dans certains systèmes embarqués. La base 10 est surtout pratique pour les humains, probablement parce que nous avons dix doigts. Les ordinateurs ne calculent pas en décimal en interne : ils convertissent les valeurs pour les afficher, ce qui peut entraîner des erreurs d’arrondi (par exemple, 0.1 n’a pas de représentation binaire exacte) et parfois surprendre les programmeurs.

La notation positionnelle dans toutes les bases

La notation positionnelle fonctionne de la même façon dans toutes les bases : chaque position d’un chiffre correspond à une puissance de la base. En base 10, le nombre 5,273 signifie 5×10³ + 2×10² + 7×10¹ + 3×10⁰ = 5,000 + 200 + 70 + 3. En base 2, le nombre binaire 1101 signifie 1×2³ + 1×2² + 0×2¹ + 1×2⁰ = 8 + 4 + 0 + 1 = 13 en décimal. En base 16, le nombre hexadécimal 2AF signifie 2×16² + 10×16¹ + 15×16⁰ = 512 + 160 + 15 = 687 en décimal.

Cette uniformité permet d’utiliser le même algorithme de conversion quelles que soient les bases de départ et d’arrivée : multipliez chaque chiffre par son poids positionnel, puis additionnez les résultats pour obtenir la valeur décimale ; ensuite, divisez cette valeur à plusieurs reprises par la base cible et relevez les restes pour obtenir son écriture dans cette base. Le convertisseur automatise ces étapes et prend aussi en charge les bases personnalisées de 2 à 36 (chiffres de 0 à 9, puis lettres de A à Z pour les valeurs supérieures). La base 36 est la plus grande base représentable avec des caractères alphanumériques standard. Elle sert parfois à encoder de grands entiers de manière compacte, par exemple dans les raccourcisseurs d’URL ou les identifiants de fichiers : un nombre décimal à 10 chiffres peut être condensé en une représentation en base 36 à 6 chiffres.

Le complément à deux pour les entiers signés

Les ordinateurs doivent pouvoir représenter les entiers négatifs de manière efficace. Le complément à deux est la solution moderne universelle, utilisée dans pratiquement tous les processeurs fabriqués depuis les années 1970. En complément à deux sur n bits, le bit de poids fort représente −2^(n−1), tandis que les autres bits représentent des valeurs positives. Sur 8 bits : 00000001 vaut +1, 01111111 vaut +127 (maximum), 10000000 vaut −128 (minimum) et 11111111 vaut −1. La plage des entiers signés sur n bits s’étend de −2^(n−1) à +2^(n−1)−1. Elle est asymétrique parce que zéro occupe l’un des codes positifs.

Le complément à deux a un avantage pratique majeur : l’addition et la soustraction fonctionnent comme pour les nombres non signés, sans traitement particulier des nombres négatifs. Le matériel n’a donc besoin que d’un seul circuit additionneur pour les opérations signées et non signées. Pour nier un nombre, il suffit d’inverser tous les bits puis d’ajouter 1. Les autres représentations, comme le signe et la valeur absolue ou le complément à un, ont été abandonnées parce qu’elles nécessitent une logique distincte pour les opérations signées ou admettent deux représentations de zéro (+0 et −0) : elles ajoutent ainsi de la complexité sans avantage. Le convertisseur affiche la représentation en complément à deux de toute valeur entière sur 8, 16, 32 ou 64 bits. C’est particulièrement utile pour déboguer du code embarqué ou décoder des formats de fichiers binaires qui contiennent des valeurs signées.