Représentation de l’information
Progression
#Représentation de l’information
À 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
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.
n | ÷ base | quotient | reste |
---|---|---|---|
42 | ÷ 2 | 21 | 0 (0) |
#Encodage texte (UTF-8)
#Erreur typique: découper des bytes en plein caractère
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)
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.
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.
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
#Images (idée)
Une image n’est qu’une matrice de pixels (ex.: RGBA). Les formats (PNG/JPEG) ajoutent compression et métadonnées.
Caractères multi‑octets (UTF‑8) vs longueur d’une chaîne; conversions implicites locales; endianness pour l’IO binaire.