- Convertir un nombre entre décimal et binaire
- Expliquer ce qu’est un bit, un octet, l’hexadécimal
- Comprendre comment le texte et les couleurs sont codés
Pourquoi seulement 0 et 1 ?
Un circuit électronique distingue très facilement deux états : courant ou pas de courant. Trois, dix états seraient bien plus fragiles face au bruit électrique. L’informatique a donc choisi deux symboles : 0 et 1. Un seul symbole s’appelle un bit (binary digit). Huit bits forment un octet.
Compter en base 2
En base 10, chaque chiffre vaut 10 fois plus que celui de droite : unités, dizaines, centaines. En base 2, chaque position vaut 2 fois plus : 1, 2, 4, 8, 16, 32, 64, 128…
Le nombre binaire 1011 se lit : 1×8 + 0×4 + 1×2 + 1×1 = 11.
Avec n bits, on peut représenter 2n valeurs différentes. Un octet (8 bits) donne donc 256 valeurs, de 0 à 255.
n = 11
print(bin(n)) # '0b1011'
print(int("1011", 2)) # 11
print(2 ** 8) # 256 valeurs avec un octet
Convertir un nombre en binaire à la main
Méthode des divisions par 2 : on divise, on note le reste, on recommence avec le quotient, puis on lit les restes de bas en haut.
Exemple pour 13 : 13 ÷ 2 = 6 reste 1 ; 6 ÷ 2 = 3 reste 0 ; 3 ÷ 2 = 1 reste 1 ; 1 ÷ 2 = 0 reste 1. On lit 1101. Vérification : 8 + 4 + 0 + 1 = 13 ✓.
L’hexadécimal : le binaire en abrégé
Lire 11111111 est pénible. On regroupe les bits par 4 : chaque groupe devient un chiffre en base 16 (0–9 puis A–F). Ainsi 11111111 s’écrit FF. Tu le croiseras partout : couleurs web (#51daf0), adresses mémoire, identifiants réseau.
Et le texte, les couleurs, les images ?
Tout est affaire de convention : on décide qu’un nombre représente autre chose.
- Texte : chaque caractère a un numéro. En ASCII, « A » = 65. Unicode étend l’idée à tous les alphabets et aux emojis ; l’encodage UTF-8 les écrit sur 1 à 4 octets.
- Couleur : trois octets — rouge, vert, bleu — soit 256 × 256 × 256 ≈ 16,7 millions de couleurs.
- Image : une grille de pixels, chacun avec sa couleur.
- Son : des milliers de mesures de l’onde sonore chaque seconde.
print(ord("A")) # 65
print(chr(66)) # 'B'
print("é".encode("utf-8")) # 2 octets
print(len("é".encode("utf-8")))
Erreurs courantes
- Lire les restes dans le mauvais sens lors des divisions par 2 : on lit de bas en haut.
- Oublier que 8 bits vont de 0 à 255, pas de 1 à 256.
- Croire que « kilo » vaut toujours 1000 : 1 Kio = 1024 octets (210), alors que 1 ko = 1000 octets.