# Encodage des Données - Exercices & Corrigés Bienvenue dans cette série d'exercices dédiée à l'encodage des données, un pilier fondamental en programmation et en informatique. Que ce soit pour représenter du texte, des couleurs ou d'autres types d'informations, comprendre comment les données sont transformées en une séquence de bits est essentiel. Ces exercices couvrent les concepts clés de l'encodage ASCII, UTF-8 et RVB (Rouge-Vert-Bleu). Ils sont conçus pour renforcer votre compréhension et votre capacité à manipuler ces encodages. Nous progresserons des applications directes du cours à des problèmes plus complexes, nécessitant une réflexion approfondie. > [!note] Pré-requis > Une bonne maîtrise des [[Systèmes de numération]] (binaire, décimal, hexadécimal) est essentielle pour aborder ces exercices. ## Partie 1 : Exercices ### A. Prise en main > [!tip] Astuce > Pour ces exercices, ayez à portée de main une table ASCII. #### Exercice 1.1 : Encodage ASCII d'un Caractère Donner les représentations décimale, binaire (sur 8 bits) et hexadécimale du caractère `'C'` en ASCII. #### Exercice 1.2 : Couleurs RVB Basiques Donner les codes hexadécimaux RVB complets (ex: `#RRGGBB`) pour les couleurs suivantes : 1. Rouge pur 2. Vert pur 3. Bleu pur 4. Blanc 5. Noir ### B. Manipulation #### Exercice 2.1 : Encodage et Décodage ASCII 1. Encoder la chaîne de caractères `"Promo"` en une séquence d'octets hexadécimaux ASCII. 2. Décoder la séquence d'octets hexadécimaux `49 4E 47 45 4E 49 45 55 52` en caractères ASCII. #### Exercice 2.2 : Manipulation de Couleurs RVB 1. Convertir la couleur RVB hexadécimale `#A3C1E0` en ses composantes décimales (Rouge, Vert, Bleu). 2. Convertir les composantes décimales $(192, 255, 128)$ en code hexadécimal RVB. #### Exercice 2.3 : Mélange et Complémentaire de Couleurs RVB 1. Quelle est la couleur résultante (en hexadécimal) si l'on mélange à parts égales le Bleu pur (`#0000FF`) et le Jaune (`#FFFF00`) ? 2. Quelle est la couleur complémentaire de `#336699` ? (La couleur complémentaire est celle dont la somme avec la couleur d'origine donne du blanc pur). ## Partie 2 : Corrigés ### A. Prise en main #### Exercice 1.1 : Encodage ASCII d'un Caractère **Question :** Donner les représentations décimale, binaire (sur 8 bits) et hexadécimale du caractère `'C'` en ASCII. **Corrigé :** > [!definition] Code ASCII > Le code ASCII (American Standard Code for Information Interchange) est une norme d'encodage de caractères sur 7 bits (souvent stocké sur 8 bits, le 8ème bit étant à 0 ou utilisé pour la parité). Il permet de représenter 128 caractères. 1. **Valeur Décimale :** En consultant une table ASCII, le caractère `'C'` correspond à la valeur décimale $67$. 2. **Valeur Binaire (8 bits) :** Pour convertir $67$ en binaire : * $67 \div 2 = 33$ reste $1$ * $33 \div 2 = 16$ reste $1$ * $16 \div 2 = 8$ reste $0$ * $8 \div 2 = 4$ reste $0$ * $4 \div 2 = 2$ reste $0$ * $2 \div 2 = 1$ reste $0$ * $1 \div 2 = 0$ reste $1$ En lisant les restes de bas en haut, on obtient $1000011_2$. Sur 8 bits, cela donne $01000011_2$. 3. **Valeur Hexadécimale :** Pour convertir $67$ en hexadécimal : * $67 \div 16 = 4$ reste $3$ * $4 \div 16 = 0$ reste $4$ En lisant les restes de bas en haut, on obtient $43_{16}$. Alternativement, à partir du binaire $01000011_2$, on peut grouper par 4 bits : * $0100_2 = 4_{16}$ * $0011_2 = 3_{16}$ Ce qui donne $43_{16}$. **Réponse Finale :** * Décimal : $67$ * Binaire (8 bits) : $01000011_2$ * Hexadécimal : $43_{16}$ #### Exercice 1.2 : Couleurs RVB Basiques **Question :** Donner les codes hexadécimaux RVB complets (ex: `#RRGGBB`) pour les couleurs suivantes : Rouge pur, Vert pur, Bleu pur, Blanc, Noir. **Corrigé :** > [!definition] Encodage RVB (RGB) > Le modèle de couleur RVB (Rouge-Vert-Bleu) est un modèle additif où une couleur est définie par l'intensité de ses trois composantes primaires. Chaque composante est généralement représentée par un octet (8 bits), allant de 0 (absence) à 255 (intensité maximale). En hexadécimal, cela correspond à `00` (0) et `FF` (255). 1. **Rouge pur :** * Rouge : Intensité maximale ($255_{10} = FF_{16}$) * Vert : Absence ($0_{10} = 00_{16}$) * Bleu : Absence ($0_{10} = 00_{16}$) Code RVB : `#FF0000` 2. **Vert pur :** * Rouge : Absence ($0_{10} = 00_{16}$) * Vert : Intensité maximale ($255_{10} = FF_{16}$) * Bleu : Absence ($0_{10} = 00_{16}$) Code RVB : `#00FF00` 3. **Bleu pur :** * Rouge : Absence ($0_{10} = 00_{16}$) * Vert : Absence ($0_{10} = 00_{16}$) * Bleu : Intensité maximale ($255_{10} = FF_{16}$) Code RVB : `#0000FF` 4. **Blanc :** * Toutes les composantes à intensité maximale ($255_{10} = FF_{16}$) Code RVB : `#FFFFFF` 5. **Noir :** * Toutes les composantes à absence d'intensité ($0_{10} = 00_{16}$) Code RVB : `#000000` ### B. Manipulation #### Exercice 2.1 : Encodage et Décodage ASCII **Question :** 1. Encoder la chaîne de caractères `"Promo"` en une séquence d'octets hexadécimaux ASCII. 2. Décoder la séquence d'octets hexadécimaux `49 4E 47 45 4E 49 45 55 52` en caractères ASCII. **Corrigé :** 1. **Encodage de `"Promo"` :** Nous allons convertir chaque caractère en sa valeur ASCII hexadécimale. * `P` : $80_{10} = 50_{16}$ * `r` : $114_{10} = 72_{16}$ * `o` : $111_{10} = 6F_{16}$ * `m` : $109_{10} = 6D_{16}$ * `o` : $111_{10} = 6F_{16}$ La séquence d'octets hexadécimaux est donc : `50 72 6F 6D 6F`. 2. **Décodage de `49 4E 47 45 4E 49 45 55 52` :** Nous allons convertir chaque octet hexadécimal en son caractère ASCII correspondant. * `49` : $73_{10}$ = `I` * `4E` : $78_{10}$ = `N` * `47` : $71_{10}$ = `G` * `45` : $69_{10}$ = `E` * `4E` : $78_{10}$ = `N` * `49` : $73_{10}$ = `I` * `45` : $69_{10}$ = `E` * `55` : $85_{10}$ = `U` * `52` : $82_{10}$ = `R` La chaîne de caractères décodée est : `"INGENIEUR"`. #### Exercice 2.2 : Manipulation de Couleurs RVB **Question :** 1. Convertir la couleur RVB hexadécimale `#A3C1E0` en ses composantes décimales (Rouge, Vert, Bleu). 2. Convertir les composantes décimales $(192, 255, 128)$ en code hexadécimal RVB. **Corrigé :** 1. **Conversion de `#A3C1E0` en décimal :** Le format `#RRGGBB` signifie que les deux premiers chiffres hexadécimaux représentent le Rouge, les deux suivants le Vert, et les deux derniers le Bleu. * **Rouge (RR) :** `A3` $A3_{16} = (10 \times 16^1) + (3 \times 16^0) = 160 + 3 = 163_{10}$ * **Vert (GG) :** `C1` $C1_{16} = (12 \times 16^1) + (1 \times 16^0) = 192 + 1 = 193_{10}$ * **Bleu (BB) :** `E0` $E0_{16} = (14 \times 16^1) + (0 \times 16^0) = 224 + 0 = 224_{10}$ Les composantes décimales sont $(163, 193, 224)$. 2. **Conversion de $(192, 255, 128)$ en hexadécimal :** Nous allons convertir chaque composante décimale en hexadécimal. * **Rouge :** $192_{10}$ $192 \div 16 = 12$ reste $0$. $12_{10} = C_{16}$. Donc $192_{10} = C0_{16}$. * **Vert :** $255_{10}$ $255 \div 16 = 15$ reste $15$. $15_{10} = F_{16}$. Donc $255_{10} = FF_{16}$. * **Bleu :** $128_{10}$ $128 \div 16 = 8$ reste $0$. Donc $128_{10} = 80_{16}$. Le code hexadécimal RVB est `#C0FF80`. #### Exercice 2.3 : Mélange et Complémentaire de Couleurs RVB **Question :** 1. Quelle est la couleur résultante (en hexadécimal) si l'on mélange à parts égales le Bleu pur (`#0000FF`) et le Jaune (`#FFFF00`) ? 2. Quelle est la couleur complémentaire de `#336699` ? (La couleur complémentaire est celle dont la somme avec la couleur d'origine donne du blanc pur). **Corrigé :** 1. **Mélange de Bleu pur et Jaune :** > [!note] Mélange additif de couleurs > En RVB, le mélange de couleurs est additif. Pour mélanger deux couleurs à parts égales, on fait la moyenne arithmétique de leurs composantes R, G, B respectives. * **Couleur 1 (Bleu pur) :** `#0000FF` $\rightarrow$ $R_1=0, G_1=0, B_1=255$ * **Couleur 2 (Jaune) :** `#FFFF00` $\rightarrow$ $R_2=255, G_2=255, B_2=0$ Calcul des composantes de la couleur résultante (moyenne) : * $R_{res} = (R_1 + R_2) / 2 = (0 + 255) / 2 = 127.5$. On arrondit à $128$. * $G_{res} = (G_1 + G_2) / 2 = (0 + 255) / 2 = 127.5$. On arrondit à $128$. * $B_{res} = (B_1 + B_2) / 2 = (255 + 0) / 2 = 127.5$. On arrondit à $128$. Les composantes décimales sont $(128, 128, 128)$. Convertissons en hexadécimal : * $128_{10} = 80_{16}$ La couleur résultante est donc `#808080`, qui est un gris moyen. 2. **Couleur complémentaire de `#336699` :** > [!definition] Couleur complémentaire > La couleur complémentaire d'une couleur $(R, G, B)$ est la couleur $(R', G', B')$ telle que $R+R' = 255$, $G+G' = 255$, et $B+B' = 255$. En d'autres termes, chaque composante est soustraite de l'intensité maximale ($255_{10}$ ou $FF_{16}$). * **Couleur d'origine :** `#336699` Convertissons en décimal : * $R = 33_{16} = (3 \times 16) + 3 = 48 + 3 = 51_{10}$ * $G = 66_{16} = (6 \times 16) + 6 = 96 + 6 = 102_{10}$ * $B = 99_{16} = (9 \times 16) + 9 = 144 + 9 = 153_{10}$ * **Calcul des composantes complémentaires :** * $R' = 255 - R = 255 - 51 = 204_{10}$ * $G' = 255 - G = 255 - 102 = 153_{10}$ * $B' = 255 - B = 255 - 153 = 102_{10}$ * **Conversion des composantes complémentaires en hexadécimal :** * $204_{10} = CC_{16}$ * $153_{10} = 99_{16}$ * $102_{10} = 66_{16}$ La couleur complémentaire est `#CC9966`. ## 🗓️ Historique > **Dernière mise à jour :** `01 novembre 2025` > **Rédigé par :** [[Julien DUQUENNOY]]