Dans un ordinateur, toute information est codée par des bits, qui valent 0 ou 1. Pour représenter un entier, on l’écrit donc en base 2 (binaire). Comme les écritures binaires sont longues, on utilise aussi la base 16 (hexadécimal), plus compacte. Enfin, pour coder les entiers négatifs, les machines utilisent le complément à deux.

Une question sur ce cours ?
ULU, le tuteur d’ULUMINE, t’aide à partir de ce cours.
Objectifs
- Convertir un entier naturel entre les bases 10, 2 et 16
- Connaître le nombre de valeurs codables sur n bits
- Coder et décoder un entier relatif en complément à deux sur n bits
- Comprendre le dépassement de capacité et utiliser bin(), hex() et int() en Python
1. Bases 10, 2 et 16
En base 10, chaque chiffre est multiplié par une puissance de 10 : 572 = 5 × 10² + 7 × 10 + 2. En base 2, on n’utilise que les chiffres 0 et 1, et chaque position correspond à une puissance de 2.
Bit et octet : Un bit (binary digit) est un chiffre binaire, 0 ou 1. Un octet est un groupe de 8 bits. Le bit de gauche est le bit de poids fort, celui de droite le bit de poids faible.
| Position | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Poids | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Du binaire au décimal
Convertir (101101)2 en base 10.
- On repère les bits à 1 et leurs poids : 32, 8, 4 et 1.
- On additionne : 32 + 8 + 4 + 1 = 45.
(101101)2 = 45.
Du décimal au binaire (divisions successives par 2)
Convertir 23 en base 2.
- 23 = 2 × 11 + 1
- 11 = 2 × 5 + 1
- 5 = 2 × 2 + 1
- 2 = 2 × 1 + 0
- 1 = 2 × 0 + 1 : on s’arrête quand le quotient vaut 0.
- On lit les restes de bas en haut : 10111.
23 = (10111)2. Vérification : 16 + 4 + 2 + 1 = 23.
2. L’hexadécimal
La base 16 utilise 16 chiffres : 0 à 9 puis A (10), B (11), C (12), D (13), E (14) et F (15). Comme 16 = 2⁴, un chiffre hexadécimal correspond exactement à 4 bits : un octet s’écrit avec 2 chiffres hexadécimaux.
| Binaire | 0000 | 0101 | 1001 | 1010 | 1100 | 1111 |
|---|---|---|---|---|---|---|
| Hexadécimal | 0 | 5 | 9 | A | C | F |
Conversions
- (2B)16 = 2 × 16 + 11 = 43.
- (11010111)2 : on coupe en paquets de 4 bits à partir de la droite → 1101 | 0111 → D7.
- (3F)16 : 3 → 0011 et F → 1111, donc (3F)16 = (00111111)2 = 63.
3. Les entiers relatifs : le complément à deux
Sur n bits, le complément à deux permet de coder les entiers de −2ⁿ⁻¹ à 2ⁿ⁻¹ − 1. Sur 8 bits : de −128 à 127. Un entier positif s’écrit comme d’habitude ; le bit de poids fort vaut alors 0. Un entier négatif a un bit de poids fort égal à 1.
Coder −5 sur 8 bits
- On écrit 5 sur 8 bits : 00000101.
- On inverse tous les bits : 11111010.
- On ajoute 1 : 11111011.
−5 est codé 11111011.
Décoder 11111011 (8 bits)
Le bit de poids fort compte pour −128 au lieu de +128.
- −128 + 64 + 32 + 16 + 8 + 2 + 1 = −128 + 123 = −5.
On retrouve bien −5.
4. En Python
>>> bin(23)
'0b10111'
>>> hex(255)
'0xff'
>>> int("101101", 2)
45
>>> int("2B", 16)
43
>>> 0b1010 + 0x10
26À retenir
- Base 2 : chaque bit a pour poids une puissance de 2 ; on convertit en base 2 par divisions successives par 2 (restes lus de bas en haut).
- Un chiffre hexadécimal correspond à 4 bits ; A = 10, …, F = 15.
- Sur n bits : 2ⁿ valeurs, de 0 à 2ⁿ − 1 pour les entiers naturels.
- Complément à deux sur n bits : de −2ⁿ⁻¹ à 2ⁿ⁻¹ − 1 ; pour coder −x : écrire x, inverser les bits, ajouter 1.
- Python : bin(), hex(), int(chaine, base).

Et maintenant, à toi !
Vérifie que tu as compris avec les exercices, puis révise avec la fiche.