Système hexadécimal

Denis Dréano
INFO2-01

Système hexadécimal

Objectifs cantonaux : O2.3.

Cours complet sur la plateforme Runestone de Cédric Donner : Système hexadécimal.

Vous connaissez déjà le système binaire (base 2). Il existe un autre système de numération très utilisé en informatique : le système hexadécimal (base 16). Il est populaire car chaque chiffre hexadécimal se code sur exactement 4 bits.

Les cartes du système hexadécimal

▷ Rappel — Principe des cartes

Dans un système en base \(b\), la valeur des cartes est à chaque fois multipliée par \(b\). En base 16 : \(1 = 16^0\), \(16 = 16^1\), \(256 = 16^2\), \(4096 = 16^3\), …

L’alphabet hexadécimal

Comme il peut y avoir jusqu’à 15 cartes d’un même type, les chiffres 0 à 9 ne suffisent plus. On utilise les six premières lettres de l’alphabet latin pour les tas de 10 à 15 :

▷ Alphabet hexadécimal

\[\mathrm{A}_{16} = \{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F\}\]

A = 10    B = 11    C = 12    D = 13    E = 14    F = 15
→ Exemple 1 — le nombre 42 en hexadécimal

\(42 = 2 \times 16 + 10\), soit 2 cartes de 16 et 10 cartes de 1. Comme 10 s’écrit A en hexadécimal, on obtient \(42 = \mathrm{2A}_{16}\).

Conversion hexadécimal → décimal

La conversion fonctionne comme pour n’importe quelle base : on multiplie chaque chiffre par le poids de sa position.

→ Exemple 2 — convertir 4D3₁₆ en décimal
4D3_16 = 4 * 16^2 + D * 16^1 + 3 * 16^0
       = 4 * 256 + 13 * 16 + 3 * 1
       = 1024 + 208 + 3
       = 1235

Conversion décimal → hexadécimal et binaire → hexadécimal

La conversion décimal → hexadécimal se fait par divisions successives par 16, comme pour la base 2. L’intérêt principal de l’hexadécimal en informatique est ailleurs : comme \(16 = 2^4\), on peut convertir directement binaire ↔︎ hexadécimal, sans passer par le décimal.

◈ Méthode — Binaire ↔︎ hexadécimal

Il suffit d’écrire (ou de regrouper) chaque chiffre hexadécimal sur exactement 4 bits.

\(\mathrm{B}_{16} = 1011_2 \qquad \mathrm{E}_{16} = 1110_2\)

Donc \(\mathrm{BE}_{16} = 1011\,1110_2\).

! Attention

Il faut toujours écrire chaque chiffre hexadécimal sur 4 bits complets, même si certains zéros semblent inutiles : \(3_{16} = 0011_2\), et non \(11_2\).

Notation Python

◈ Syntaxe — Nombres hexadécimaux en Python

En Python, un nombre hexadécimal se préfixe par 0x :

x = 0x2A       # équivalent à 42 en décimal
print(x)       # affiche 42

print(hex(42)) # affiche '0x2a' : conversion décimal -> hexadécimal

Exercice 1 — conversions hexadécimal → décimal

Convertissez en décimal, sans outil de conversion :

  • \(\mathrm{36}_{16}\)
  • \(\mathrm{ABC}_{16}\)
  • \(\mathrm{FF}_{16}\)
  • \(\mathrm{CAFE}_{16}\)

Exercice 2 — conversions décimal → hexadécimal

Convertissez en hexadécimal :

  • \(15\)
  • \(157\)
  • \(238\)

Exercice 3 — conversion binaire ↔︎ hexadécimal

Convertissez \(\mathrm{BE}_{16}\) en binaire, puis \(10110011_2\) en hexadécimal, en regroupant les bits par paquets de 4 (sans passer par le décimal).

Exercice 4 — le plus grand nombre

Quel est le plus grand nombre que l’on peut représenter avec deux chiffres hexadécimaux ? Et le nombre qui vient juste après \(\mathrm{FF}_{16}\) ?

Devoir donné par Cédric

Terminer les exercices de conversion hexadécimal (vers/depuis le décimal et le binaire).