Système hexadécimal
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
\(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.
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écimalExercice 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).