Aller au contenu principal

Représentation de l’information

Progression

#Représentation de l’information

À quoi ça sert ?

À quoi ça sert: manipuler correctement des données au plus bas niveau (texte, nombres, médias) pour éviter les bugs (encodage, dépassements) et raisonner sur les formats. Comment: bits/octet, bases (binaire/hex), encodages (UTF‑8), et formats compressés.

#Binaire et hexadécimal

texttext
1Décimal 13 = Binaire 1101 = Hex 0x0D

#Conversion de base (divisions euclidiennes)

La conversion décimal → base B se fait par divisions euclidiennes en cascade: on divise n par B, on empile les restes, puis on lit les restes de bas en haut.

Animation:
n÷ basequotientreste
42÷ 2210 (0)
Résultat: 42 en base 10 = 101010 en base 2
Vitesse900ms

#Encodage texte (UTF-8)

Chargement de l’éditeur...

#Erreur typique: découper des bytes en plein caractère

pythonpython
1s = 'été'                # 3 caractères2b = s.encode('utf-8')    # 5 octets3print(list(b))4# Tronquer au mauvais endroit casse l'encodage5try:6    print((b[:3]).decode('utf-8'))7except UnicodeDecodeError as e:8    print('Décodage invalide:', e)
Longueur de chaîne vs octets

len(s) compte les caractères; len(s.encode('utf-8')) compte les octets. En fichiers binaires, raisonnez en octets; pour l’affichage, raisonnez en caractères.

#Comprendre l’addition binaire

L’addition binaire suit les mêmes règles que l’addition décimale, mais chaque colonne ne contient que 0 ou 1. On additionne les bits du poids faible vers le poids fort : 1 + 1 donne 0 avec une retenue de 1, 1 + 0 reste 1, et ainsi de suite.

texttext
1   retenue : 1 1 02   a      : 1 0 1 13   b      : 0 1 1 04-------------------5 résultat : 1 0 0 1

La retenue finale indique s’il y a débordement. Sur 8 bits, 255 + 1 produit 0000 0000 avec une retenue de 1 : la somme réelle vaut 256 mais, limitée à 8 bits, elle « reboucle » à 0.

Débordement (8 bits)

En arithmétique binaire à 8 bits non signés, 255 + 1 retourne à 0 (modulo 256). C’est un overflow : la retenue de poids fort est perdue si on reste sur 8 bits.

#Quiz éclair

Combien d’octets sont nécessaires pour encoder 🙂 (U+1F642) en UTF‑8 ?
Combien d’octets sont nécessaires pour encoder 🙂 (U+1F642) en UTF‑8 ?
Laquelle provoque un débordement en entier non signé 8 bits ?
Laquelle provoque un débordement en entier non signé 8 bits ?

#Images (idée)

Une image n’est qu’une matrice de pixels (ex.: RGBA). Les formats (PNG/JPEG) ajoutent compression et métadonnées.

Pièges courants

Caractères multi‑octets (UTF‑8) vs longueur d’une chaîne; conversions implicites locales; endianness pour l’IO binaire.