TD 2
TD 2
TD 2
Codes et codages
1 Exercices
1.1 Première série
00000000 4C 61 20 43 69 67 61 6C 65 20 65 74 20 6C 61 20
00000010 46 6F 75 72 6D 69 0A 0A 4C 61 20 43 69 67 61 6C
00000020 65 2C 20 61 79 61 6E 74 20 63 68 61 6E 74 65 0A
00000030 54 6F 75 74 20 6C 27 65 74 65 2C 0A 53 65 20 74
On rappelle que le codage ISO-8859-1 (encore appelé ISO-LATIN-1), est un codage de 224
caractères tous codés sur un octet (codes 0 à 127, et 160 à 255. Les 128 premiers caractères sont
identiques aux caractères du codage ASCII, les 96 suivants contiennent (presque) tous les autres
caractères utilisés en français comme par exemple les caractères accentués.
Voici une vue hexadécimale sur le début de la fable de La Fontaine La cigale et la fourmi
codée en ISO-LATIN-1.
00000000 4C 61 20 43 69 67 61 6C 65 20 65 74 20 6C 61 20 La Cigale et la
00000010 46 6F 75 72 6D 69 0A 0A 4C 61 20 43 69 67 61 6C Fourmi..La Cigal
00000020 65 2C 20 61 79 61 6E 74 20 63 68 61 6E 74 E9 0A e, ayant chant..
00000030 54 6F 75 74 20 6C 27 E9 74 E9 2C 0A 53 65 20 74 Tout l’.t.,.Se t
On rappelle que le codage UTF-8 est un codage de longueurs variables, dont les mots du code
sont constitués de 1, 2, 3 ou 4 octets. La table ?? (page ??) donne le format des codes selon le
nombre d'octets.
Question 1 Combien de caractères le codage UTF-8 permet-il de coder ?
Voici une vue hexadécimale sur le début de la fable de La Fontaine La cigale et la fourmi
codée en UTF-8.
1
00000000 4C 61 20 43 69 67 61 6C 65 20 65 74 20 6C 61 20 La Cigale et la
00000010 46 6F 75 72 6D 69 0A 0A 4C 61 20 43 69 67 61 6C Fourmi..La Cigal
00000020 65 2C 20 61 79 61 6E 74 20 63 68 61 6E 74 C3 A9 e, ayant chant..
00000030 0A 54 6F 75 74 20 6C 27 C3 A9 74 C3 A9 2C 0A 53 .Tout l’..t..,.S
Question 2 Quel est le code du caractère é ? Ce code a-t-il un rapport avec le code du même caractère
dans le codage ISO-LATIN-1 ?
Exercice 1-4 Avec un codage de longueur variable
Question 1 Sachant que ce chier contient une information textuelle codée avec le codage de longueur
variable (cf table 1), trouvez l'information codée.
Question 2 Quelle taille (en octets) aurait cette information si elle avait été codée à l'aide du code
ASCII ?
Question 3 Quelle serait cette taille si on utilisait un codage de longueur xe minimale ?
Exercice 1-6 Codage bitmap des images
Le codage bitmap d'une image consiste à coder la couleur de chaque pixel (point) de l'image
par une chaîne binaire de longueur xée. Ainsi, pour représenter une image ne contenant que du
noir et du blanc, il sut de coder chacune de ces deux couleurs sur un bit. Les formats les plus
fréquents codent chaque pixel sur 1 bit (2 couleurs), 4 bits (16 couleurs), 8 bits (256 couleurs) et
24 bits (≈ 16 × 106 couleurs).
Question 1
Une image Noir et Blanc de 10 lignes de 16 pixels est codée en bitmap. Voici la représentation
hexadecimale de cette image
2
0000 0F00 1088 0388 0CBE 1088 1188 0E80 0000 7FFE
Dessinez l'image.
Question 2
Calculez la taille (en nombre d'octets) de la plus petite représentation possible en bitmap d'une
image comprenant 200 × 300 pixels et 100 couleurs.
Question 3 Images compressibles
La représentation "bitmap" d'une image peut être inutilement gourmande en espace mémoire
(Pensez à une image blanche).
Proposez une représentation plus compacte des images.
Pour les deux questions qui suivent l'alphabet contient au moins les deux lettres a et b.
Question 1 Combien y atil de mots de 5 lettres commençant par a et terminant par b ?
Question 2 Combien y atil de mots de 10 lettres comprenant trois a et 2 b ?
Exercice 1-8 Peut-on tout compresser ?
3
Question 3 Réciproquement, montrez que la condition précédente est nécessaire pour que deux mots
commutent.
Exercice 1-10 Concaténation de langages
Parmi les langages suivants sur l'alphabet A = {0, 1} indiquez ceux qui sont des codes.
1. L = ∅
2. L = {ε}
3. L = {u}, où u est un mot non vide sur l'alphabet A
4. L = {0011, 1001, 0110}
5. L = {00, 010, 111, 01101, 1100}
6. L = {010101, 0101}
7. L = {0, 01, 110, 1101, 1111}
8. L = {0, 01, 100}
Exercice 1-12
Question 1 Peuton trouver un sous-ensemble strict de Y = {0, 01, 110, 1101, 1111} qui ne soit pas
un code ?
Question 2 Peuton trouver un code contenant strictement Y ?
Question 3 Reprendre les deux questions avec Y = {0, 01, 100}.
Exercice 1-13
Soient u et v deux mots sur un alphabet A. À quelle condition le langage constitué des deux
mots u et v estil un code ?
4
Exercice 1-15
estil un code ?
Exercice 1-16
Exercice 1-17
Les langages binaires cidessous sontils des codes ? Si non, existetil un code ayant la même
distribution de longueurs de mots ?
1. L1 = {0, 01, 101, 110}
2. L2 = {0, 01, 101, 110, 111}
Exercice 1-18 Codage binaire de l'alphabet latin
On désire coder, à l'aide d'un alphabet A = {0, 1, 2}, un alphabet S de dix lettres avec un
motcode d'une lettre, les neuf autres ayant trois lettres au maximum. On désire de plus que ce
codage soit préxe.
5
Question 1 Cela estil possible ?
Question 2 Combien de motscode de trois lettres faut-il au minimum ?
Exercice 1-20
Parmi les mots de code utilisé par un codage binaire préxe, on trouve 0, 10 et 1100. Combien
de mots de code de longueur 6 ce codage peutil avoir ?
Exercice 1-21
Question 1 Vérier que l'on peut raccourcir la longueur d'un mot d'un code binaire si et seulement
si l'inégalité de Kraft est stricte.
Question 2 Qu'en est-il pour des codes sur un alphabet à plus de deux lettres ?
Exercice 1-22 Codes maximaux
Un code C est dit maximal si pour tout mot u ∈ A∗ , C ∪ {u} n'est pas un code.
Montrez qu'un code préxe ni est maximal si et seulement si K(C) = 1.
2 Le codage ASCII
Code initié en 1963 puis complété en 1967, le code ASCII-1967 est devenu une norme ISO-646
en 1983. Il permet de coder 128 caractères, à l'origine sur 7 bits, puis sur huit bits. Cf table 2.
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2 ESP ! " # $ % & ’ ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ‘ a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~ DEL