Informatique · Première · 5 min de lecture
Bases 2, 10 et 16 : un même nombre, plusieurs écritures
Écriture positionnelle d'un entier naturel dans une base b : valeur de chaque chiffre selon son rang (puissances de b) ; passage de la base 10 à la base 2 par divisions successives et inversement ; base 16 (chiffres 0 à 9 et A à F) et regroupement des bits par paquets de quatre ; bit et octet.
Chapitre du programme : Numérique et sciences informatiques (spécialité)
Bloc 1 sur 7 · Comprendre
Comprendre : la valeur d'un chiffre dépend de sa place
En base 10, l'écriture 345 signifie 3 × 100 + 4 × 10 + 5 × 1 : chaque rang vaut dix fois le rang situé à sa droite. On dit que l'écriture est positionnelle.
Une machine ne manipule que des bits, des chiffres qui valent 0 ou 1. Elle écrit donc les nombres en base 2 : chaque rang vaut deux fois le rang à sa droite. Les poids, en partant de la droite, sont 1, 2, 4, 8, 16, 32, 64, 128…
Exemple. L'écriture binaire 101101 se lit, de droite à gauche :
| Poids | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|
| Bit | 1 | 0 | 1 | 1 | 0 | 1 |
Sa valeur est 32 + 8 + 4 + 1 = 45. On écrit (101101)₂ = 45 pour préciser la base. Un octet est un groupe de 8 bits.
Bloc 2 sur 7 · Approfondir
Approfondir : de la base 10 à la base 2, et la base 16
De la base 10 vers la base 2 : les divisions successives. On divise le nombre par 2, puis le quotient par 2, et ainsi de suite jusqu'à obtenir 0. Les restes, lus du dernier au premier, forment l'écriture binaire. Pour 45 : 45 = 2 × 22 + 1 ; 22 = 2 × 11 + 0 ; 11 = 2 × 5 + 1 ; 5 = 2 × 2 + 1 ; 2 = 2 × 1 + 0 ; 1 = 2 × 0 + 1. Lus de bas en haut : 101101.
Le même algorithme, écrit en Python : chaque reste est placé à GAUCHE de ceux déjà trouvés.
n = 45
bits = ""
while n > 0:
bits = str(n % 2) + bits
n = n // 2
print(bits)101101La base 16 (hexadécimal). Elle utilise seize chiffres : 0 à 9, puis A (dix), B (onze), C, D, E et F (quinze). Les poids sont 1, 16, 256… Comme 16 = 2⁴, un chiffre hexadécimal correspond exactement à 4 bits : on passe du binaire à l'hexadécimal en groupant les bits par quatre à partir de la droite. Par exemple 1111 1010 donne F (quinze) puis A (dix) : (FA)₁₆ = 15 × 16 + 10 = 250.
Python sait faire ces conversions :
print(bin(45))
print(int("101101", 2))
print(hex(250))
print(int("FA", 16))0b101101
45
0xfa
250Les préfixes 0b et 0x signalent une écriture binaire et hexadécimale.
Bloc 3 sur 7 · Exemple
Exemple guidé : (3A7)₁₆ en base 10
Énoncé. Écrire (3A7)₁₆ en base 10.
Résolution.
- Les chiffres sont 3, A et 7 ; A vaut dix.
- Les poids, de droite à gauche : 1, 16 et 16 × 16 = 256.
- Valeur : 3 × 256 + 10 × 16 + 7 × 1 = 768 + 160 + 7 = 935.
Contrôle par le binaire. Chaque chiffre hexadécimal donne 4 bits : 3 → 0011, A → 1010, 7 → 0111, d'où (0011 1010 0111)₂. Les bits à 1 ont pour poids 512, 256, 128, 32, 4, 2 et 1, dont la somme vaut bien 935.
Bloc 4 sur 7 · Visualiser
Voir : les trois écritures côte à côte
| Base 10 | Base 2 | Base 16 |
|---|---|---|
| 0 | 0 | 0 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 15 | 1111 | F |
| 16 | 1 0000 | 10 |
| 45 | 10 1101 | 2D |
| 255 | 1111 1111 | FF |
Le plus grand nombre qui s'écrit sur un octet est (1111 1111)₂ = (FF)₁₆ = 255 : deux chiffres hexadécimaux suffisent pour écrire un octet.
Continuez sur votre lancée
Vous avez découvert l’essentiel et un exemple. Retrouvez la suite du cours et les points à retenir, puis passez à l’entraînement guidé dans votre compte.
- Les formules et les repères à retenir
- Les erreurs fréquentes expliquées
- Un exercice avec des aides et sa correction
L’accès gratuit comprend les cours et exercices de votre niveau choisi.
Sources
- BO spécial n°1 du 22 janvier 2019 — programme de spécialité numérique et sciences informatiques de première, « Représentation des données : types et valeurs de base »
- Documentation officielle de Python 3 — The Python Standard Library, fonctions natives bin, hex et int (https://docs.python.org/3/library/functions.html)
Vous pensez avoir trouvé une erreur dans cette leçon ? Signalez-la par e-mail.