Aller au contenu principal

Coder des données

Avant de programmer ou d'analyser un objet connecté, il faut comprendre comment il représente les informations.

Une montre connectée, un capteur de température ou un GPS ne manipulent pas directement des nombres comme 23 ou 45.
Ils utilisent uniquement deux états électriques :

  • courant → 1
  • pas de courant → 0

Toute information est donc codée en binaire.

Fil rouge : la couleur sur votre écran

Tout au long de ce cours, on va se demander comment votre téléphone affiche une couleur précise, comme l'orange.

Une couleur est définie par trois valeurs : Rouge, Vert, Bleu (système RVB).
Par exemple : Rouge = 255, Vert = 128, Bleu = 0 → donne un orange.

Ces trois nombres doivent être stockés et transmis par des circuits électroniques… qui ne connaissent que les 0 et les 1. Comment font-ils ?


Le système décimal (base 10)

C'est le système que nous utilisons tous les jours.

On dispose des chiffres de 0 à 9, et chaque position correspond à une puissance de 10.

Exemple :

273 = 2 × 100 + 7 × 10 + 3 × 1  
273 = 2 × 10² + 7 × 10¹ + 3 × 10⁰
À retenir

Chaque chiffre dépend de sa position.


Le système binaire (base 2)

Notion de bit

Les ordinateurs utilisent uniquement : 0 et 1, chaque chiffre s'appelle un bit.

Quand on compte en binaire, 1 est la plus grande des valeurs, comme l'est 9 en décimal. Ainsi, quand on passe au nombre suivant, on remet le bit le plus à droite à 0, et on rajoute une colonne à gauche avec la valeur 1 :

DécimalBinaire
00
11
210
311
4100
5101
6110
7111

Pour le chiffre 2 en décimal, on observe qu'en binaire on a la valeur 10.

Valeurs possibles
  • Un bit ne peut avoir que 2 valeurs possibles : 0 ou 1.
  • Avec 2 bits, on peut avoir 4 valeurs possibles : 00, 01, 10, 11.
  • Avec 3 bits, on peut avoir 8 valeurs possibles : 000, 001, 010, 011, 100, 101, 110, 111.
  • Avec n bits, on peut avoir 2ⁿ valeurs possibles.

Pourquoi ? Chaque bit a 2 choix (0 ou 1), et les choix se multiplient : 2 × 2 × … × 2 = 2ⁿ.

Notion d'octet

Un octet = 8 bits, il permet de coder : 2⁸ = 256 valeurs (de 0 à 255).

Il est très utilisé dans les objets connectés pour coder :

  • une température (ex : 23°C → stocké sur 1 octet)
  • une luminosité
  • un niveau de batterie

Conversion décimal → binaire

Méthode 1 : divisions par 2

On divise notre nombre par 2 successivement, et on note les restes à chaque étape.

Exemple avec 13 :

13 ÷ 2 = 6, reste 1
6 ÷ 2 = 3, reste 0
3 ÷ 2 = 1, reste 1
1 ÷ 2 = 0, reste 1

On lit les restes de bas en haut : 13 = 1101₂


Méthode 2 : tableau des puissances de 2

On utilise un tableau recensant les puissances de 2, de droite à gauche. On cherche la plus grande puissance inférieure ou égale à notre nombre, on met un 1, on soustrait, et on continue jusqu'à atteindre 0. Les cases restantes reçoivent un 0.

Exemple avec 29 :

2⁷2⁶2⁵2⁴2⁰
1286432168421
00011101

Détail du raisonnement :

  • 29 ≥ 16 → on met 1, il reste 29 − 16 = 13
  • 13 ≥ 8 → on met 1, il reste 13 − 8 = 5
  • 5 ≥ 4 → on met 1, il reste 5 − 4 = 1
  • 1 < 2 → on met 0 pour 2¹
  • 1 ≥ 1 → on met 1, il reste 0

Résultat : 29 = 00011101₂


Conversion binaire → décimal

Chaque bit correspond à une puissance de 2, en partant de la droite (rang 0). On multiplie chaque bit par sa puissance et on additionne.

Exemple :

11001₂ = 1×2⁴ + 1×2³ + 0×2² + 0×2¹ + 1×2⁰
= 16 + 8 + 0 + 0 + 1
= 25
Erreur fréquente

Le bit le plus à droite vaut toujours 2⁰ = 1. Le rang commence à 0, pas à 1.


Le système hexadécimal (base 16)

Comparons ces trois façons d'écrire la même information :

ReprésentationValeur
Binaire11111111 10000000 00000000
Décimal255, 128, 0
HexadécimalFF 80 00

L'hexadécimal est beaucoup plus compact et lisible que le binaire, tout en restant directement lié aux bits. C'est pourquoi il est utilisé partout en informatique.

Il utilise 16 symboles :

DécimalHexaBinaire
000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
10A1010
11B1011
12C1100
13D1101
14E1110
15F1111
Règle clé

1 chiffre hexadécimal = 4 bits
1 octet = 2 chiffres hexadécimaux


Conversion binaire → hexadécimal

  1. On regroupe les bits par 4 en partant de la droite (on complète avec des 0 à gauche si nécessaire)
  2. On convertit chaque groupe de 4 bits en un chiffre hexadécimal

Exemple :

Valeur binaire : 10101100

Groupes de 4 bits : 1010 | 1100
Conversion :
1010 → A
1100 → C

Résultat : 10101100₂ = AC₁₆


Conversion hexadécimal → binaire

On convertit chaque chiffre hexadécimal en 4 bits et on les concatène.

Exemple :

Valeur hexadécimale : 3F

Conversion de chaque chiffre sur 4 bits :
3 → 0011
F → 1111

Résultat : 00111111

Résultat : 3F₁₆ = 00111111₂


Conversion décimal → hexadécimal

On peut passer par le binaire (méthode vue plus haut), ou diviser directement par 16.

Exemple avec 255 :

255 ÷ 16 = 15, reste 15 → F
15 ÷ 16 = 0, reste 15 → F

On lit les restes de bas en haut : 255 = FF₁₆

255 = FF, c'est la valeur maximale d'un octet — vous la verrez souvent dans les couleurs !


Bilan : la couleur de votre écran expliquée

Revenons à notre fil rouge. Votre téléphone veut afficher de l'orange vif.
Pour de l'orange vif, il faudrait que les pixels à l'écran aient tous besoin de mélanger du rouge et un peu de vert (synthèse additive). Il faudrait que chaque composante d'un pixel soit allumée avec ces valeurs :

  • Rouge : 255
  • Vert : 128
  • Bleu : 0

En convertissant en binaire, cela donnerait : 11111111 10000000 00000000 ; ce n'est pas très lisible. Pour coder des couleurs, il faudrait plutôt passer par l'hexadécimal :

ComposanteDécimalBinaireHexadécimal
Rouge25511111111FF
Vert1281000000080
Bleu00000000000

La couleur s'écrit #FF8000 en hexadécimal — c'est exactement ce que vous voyez dans un sélecteur de couleur CSS par exemple.

Dans la vie quotidienne

L'hexadécimal est partout autour de vous :

  • 🎨 Couleurs web : #FF8000 (orange), #FFFFFF (blanc), #000000 (noir)
  • 📡 Adresse MAC de votre carte Wi-Fi : A4:C3:F0:85:AC:20 (6 octets)
  • 🌐 Adresses IP : 192.168.1.1 → chaque nombre est un octet (0–255)
  • 📱 QR codes : chaque carré noir ou blanc = 1 bit