You are on page 1of 18

L'informatique au lyce Chapitre 3

http://ow.ly/2xKdB

Chapitre 3
Codage de l'information
3.1. Vocabulaire
Quelle que soit la nature de l'information traite par un ordinateur (image, son, texte, vido), elle
l'est toujours sous la forme d'un ensemble de nombres crits en base 2, par exemple 01001011.
Le terme bit (b minuscule dans les notations) signifie binary digit , c'est--dire 0 ou 1 en
numrotation binaire. Il s'agit de la plus petite unit d'information manipulable par une machine
numrique. Il est possible de reprsenter physiquement cette information binaire par un signal
lectrique ou magntique, qui, au-del d'un certain seuil, correspond la valeur 1.
L'octet (en anglais byte ou B majuscule dans les notations) est une unit d'information compose
de 8 bits. Il permet par exemple de stocker un caractre comme une lettre ou un chiffre.
Une unit d'information compose de 16 bits est gnralement appele mot (en anglais word).
Une unit d'information de 32 bits de longueur est appele mot double (en anglais double word,
d'o l'appellation dword).
Beaucoup d'informaticiens ont appris que 1 kilooctet valait 1024 octets. Or, depuis dcembre
1998, l'organisme international IEC a statu sur la question1. Voici les units standardises :
Un kilooctet (ko) = 1000 octets
Un mgaoctet (Mo) = 106 octets
Un gigaoctet (Go) = 109 octets
Un traoctet (To) = 1012 octets
Un ptaoctet (Po) = 1015 octets

3.2. Les bases dcimale, binaire et hexadcimale

Nous utilisons le systme dcimal (base 10) dans nos activits quotidiennes. Ce systme est bas
sur dix symboles, de 0 9, avec une unit suprieure (dizaine, centaine, etc.) chaque fois que dix

1 http://physics.nist.gov/cuu/Units/binary.html

Didier Mller 3-1 novembre 2016


Codage de l'information

units sont comptabilises. C'est un systme positionnel, c'est--dire que l'endroit o se trouve le
symbole dfinit sa valeur. Ainsi, le 2 de 523 n'a pas la mme valeur que le 2 de 132. En fait, 523 est
l'abrviation de 5102+2101+3100. On peut selon ce principe imaginer une infinit de systmes
numriques fonds sur des bases diffrentes.
En informatique, outre la base 10, on utilise trs frquemment le systme binaire (base 2) puisque
l'algbre boolenne est la base de l'lectronique numrique. Deux symboles suffisent : 0 et 1.
On utilise aussi trs souvent le systme hexadcimal (base 16) du fait de sa simplicit
d'utilisation et de reprsentation pour les mots machines (il est bien plus simple d'utilisation que le
binaire). Il faut alors six symboles supplmentaires : A (qui reprsente le 10), B (11), C (12), D (13),
E (14) et F (15)
Le tableau ci-dessous montre la reprsentation des nombres de 0 15 dans les bases 10, 2 et 16.

Dcimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Binaire 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Hexadcimal 0 1 2 3 4 5 6 7 8 9 A B C D E F

3.2.1. Conversion dcimal - binaire


Convertissons 01001101 en dcimal l'aide du schma ci-dessous :

27 26 25 24 23 22 21 20

0 1 0 0 1 1 0 1

Le nombre en base 10 est 26 + 23 + 22 + 20 = 64 + 8 + 4 + 1 = 77.


Allons maintenant dans l'autre sens et crivons 77 en base 2. Il s'agit de faire une suite de
divisions euclidiennes par 2. Le rsultat sera la juxtaposition des restes. Le schma ci-dessous
explique la mthode mieux qu'un long discours :

77 s'crit donc en base 2 : 1001101.


Si on l'crit sur un octet, cela donne : 01001101.

Didier Mller 3-2 novembre 2016


L'informatique au lyce Chapitre 3

3.2.2. Conversion hexadcimal - binaire


Pour convertir un nombre binaire en hexadcimal, il suffit de faire des groupes de quatre bits (en
commenant depuis la droite). Par exemple, convertissons 1001101 :

Binaire 0100 1101


Pseudo-dcimal 4 13
Hexadcimal 4 D

1001101 s'crit donc en base 16 : 4D.


Pour convertir d'hexadcimal en binaire, il suffit de lire ce tableau de bas en haut.

Exercice 3.1
Donnez la mthode pour passer de la base dcimale la base hexadcimale (dans les deux sens).
Exercice 3.2
Compltez le tableau ci-dessous. L'indice indique la base dans laquelle le nombre est crit.

Bases
2 10 16
10010101102
200210
A1C416

Exercice 3.3
crivez en Python un programme permettant de convertir un nombre d'une base de dpart d vers
une base d'arrive a (d et a compris entre 2 et 16).

3.3. Reprsentation des nombres entiers


3.3.1. Reprsentation d'un entier naturel
Un entier naturel est un nombre entier positif ou nul. Le choix faire (c'est--dire le nombre de
bits utiliser) dpend de la fourchette des nombres que l'on dsire utiliser. Pour coder des nombres
entiers naturels compris entre 0 et 255, il nous suffira de 8 bits (un octet) car 2 8=256. D'une manire
gnrale un codage sur n bits pourra permettre de reprsenter des nombres entiers naturels compris
entre 0 et 2n1.

Exemples : 9 = 000001012, 128 = 100000002, etc.

3.3.2. Reprsentation d'un entier relatif


Un entier relatif est un entier pouvant tre ngatif. Il faut donc coder le nombre de telle faon que
l'on puisse savoir s'il s'agit d'un nombre positif ou d'un nombre ngatif, et il faut de plus que les
rgles d'addition soient conserves. L'astuce consiste utiliser un codage que l'on appelle
complment deux. Cette reprsentation permet d'effectuer les oprations arithmtiques usuelles
naturellement.

Didier Mller 3-3 novembre 2016


Codage de l'information

Un entier relatif positif ou nul sera reprsent en binaire (base 2) comme un entier naturel,
la seule diffrence que le bit de poids fort (le bit situ l'extrme gauche) reprsente le
signe. Il faut donc s'assurer pour un entier positif ou nul qu'il est zro (0 correspond un
signe positif, 1 un signe ngatif). Ainsi, si on code un entier naturel sur 4 bits, le nombre
le plus grand sera 0111 (c'est--dire 7 en base dcimale).
Sur 8 bits (1 octet), l'intervalle de codage est [128, 127].
Sur 16 bits (2 octets), l'intervalle de codage est [32768, 32767].
Sur 32 bits (4 octets), l'intervalle de codage est [2147483648, 2147483647].
D'une manire gnrale le plus grand entier relatif positif cod sur n bits sera 2n11.

Un entier relatif ngatif sera reprsent grce au codage en complment deux.

Principe du complment deux


1. crire la valeur absolue du nombre en base 2. Le bit de poids fort doit tre gal 0.
2. Inverser les bits : les 0 deviennent des 1 et vice versa. On fait ce qu'on appelle le
complment un.
3. On ajoute 1 au rsultat (les dpassements sont ignors).
Cette opration correspond au calcul de 2n|x|, o n est la longueur de la reprsentation et |x| la
valeur absolue du nombre coder.
Ainsi 1 s'crit comme 2561=255=111111112, pour les nombres sur 8 bits.

Exemple
On dsire coder la valeur 19 sur 8 bits. Il suffit :
1. d'crire 19 en binaire : 00010011
2. d'crire son complment 1 : 11101100
3. et d'ajouter 1 : 11101101
La reprsentation binaire de 19 sur 8 bits est donc 11101101.
On remarquera qu'en additionnant un nombre et son complment deux on obtient 0. En effet,
00010011 + 11101101 = 00000000 (avec une retenue de 1 qui est limine).
Truc
Pour transformer de tte un nombre binaire en son complment deux, on parcourt le nombre de
droite gauche en laissant inchangs les bits jusqu'au premier 1 (compris), puis on inverse tous les
bits suivants. Prenons comme exemple le nombre 20 : 00010100.
1. On garde la partie droite telle quelle : 00010100
2. On inverse la partie de gauche aprs le premier un : 11101100
3. Et voici 20 : 11101100

Le 4 juin 1996, une fuse Ariane 5 a explos 40 secondes aprs l'allumage. La fuse et son
chargement avaient cot 500 millions de dollars. La commission d'enqute a rendu son rapport au
bout de deux semaines. Il s'agissait d'une erreur de programmation dans le systme inertiel de
rfrence. un moment donn, un nombre cod en virgule flottante sur 64 bits (qui reprsentait la
vitesse horizontale de la fuse par rapport la plate-forme de tir) tait converti en un entier sur 16
bits. Malheureusement, le nombre en question tait plus grand que 32768 (le plus grand entier que
l'on peut coder sur 16 bits) et la conversion a t incorrecte.

Exercice 3.4
1. Codez les entiers relatifs suivants sur 8 bits (16 si ncessaire) : 456, 1, 56, 5642.
2. Que valent en base dix les trois entiers relatifs suivants :
01101100
11101101
1010101010101010 ?

Didier Mller 3-4 novembre 2016


L'informatique au lyce Chapitre 3

Exercice 3.5
Expliquez ce rve trange (source de l'image : http://xkcd.com/571).

3.4. Reprsentation des nombres rels


En base 10, l'expression 652,375 est une manire abrge d'crire :
6102 + 5101 + 2100 + 310-1 + 710-2 + 510-3.
Il en va de mme pour la base 2. Ainsi, l'expression 110,101 signifie :
122 + 121 + 020 + 12-1 + 02-2 + 12-3.

3.4.1. Conversion de binaire en dcimal


On peut ainsi facilement convertir un nombre rel de la base 2 vers la base 10. Par exemple :
110,1012 = 122 + 121 + 020 + 12-1 + 02-2 + 12-3 = 4 + 2 + 0,5 + 0,125 = 6,62510.
Exercice 3.6
Transformez 0,01010101012 en base 10.
Transformez 11100,100012 en base 10.

3.4.2. Conversion de dcimal en binaire


Le passage de base 10 en base 2 est plus subtil. Par exemple : convertissons 1234,347 en base 2.
La partie entire se transforme comme au 3.2.1 : 123410 = 100110100102
On transforme la partie dcimale selon le schma suivant :

0,3472 = 0,694 0,347 = 0,0...


0,6942 = 1,388 0,347 = 0,01...
0,3882 = 0,766 0,347 = 0,010...
0,7662 = 1,552 0,347 = 0,0101...
0,5522 = 1,104 0.347 = 0,01011...
0,1042 = 0,208 0,347 = 0,010110...
0,2082 = 0,416 0,347 = 0,0101100...
0,4162 = 0,832 0,347 = 0,01011000...
0,8322 = 1,664 0,347 = 0,010110001...
0,6642 = 1,328 0,347 = 0,0101100011...
0,3282 = 0,656 0,347 = 0,01011000110...

On continue ainsi jusqu' la prcision dsire...


Attention ! Un nombre dveloppement dcimal fini en base 10 ne l'est pas forcment en base 2.
Exercice 3.7
Transformez 0,562510 en base 2.
Transformez 0,1510 en base 2.
Transformer 12,910 en base 2.

Didier Mller 3-5 novembre 2016


Codage de l'information

IEEE, que l'on


3.4.2. La norme IEEE 754
peut prononcer
i3e:
La norme IEEE 754 dfinit la faon de coder un nombre rel. Cette norme se propose de coder le
Institute of nombre sur 32 bits et dfinit trois composantes :
Electrical and le signe est reprsent par un seul bit, le bit de poids fort
Electronics
l'exposant est cod sur les 8 bits conscutifs au signe
Engineers
la mantisse (les bits situs aprs la virgule) sur les 23 bits restants

Certaines conditions sont toutefois respecter pour les exposants :


l'exposant 00000000 est interdit.
l'exposant 11111111 est interdit. On s'en sert toutefois pour signaler des erreurs, on appelle
alors cette configuration du nombre NaN, ce qui signifie Not a number .
il faut rajouter 127 (01111111) l'exposant pour une conversion de dcimal vers un nombre
rel binaire. Les exposants peuvent ainsi aller de 254 255.
La formule d'expression des nombres rels est ainsi la suivante :
(1)^S * 2^(E 127) * (1 + F)
S est le bit de signe et l'on comprend alors pourquoi 0 est positif (1^0=1),
E est l'exposant auquel on doit bien ajouter 127 pour obtenir son quivalent cod,
F est la partie fractionnaire.

Exemple
Traduisons en binaire, en utilisant la norme IEEE 754, le nombre 6,625.
Codons d'abord la valeur absolue en binaire : 6,62510 = 110,10102
Nous mettons ce nombre sous la forme : 1, partie fractionnaire
110,1010 = 1,10101022 (22 dcale la virgule de 2 chiffres vers la droite)
La partie fractionnaire tendue sur 23 bits est donc 101 0100 0000 0000 0000 0000.
Exposant = 127 + 2 = 12910 = 1000 00012

Signe Exposant Mantisse


1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

En hexadcimal : C0 D4 00 00.

Le 25 fvrier 1991, pendant la Guerre du Golfe, une batterie amricaine de missiles Patriot,
Dharan (Arabie Saoudite), a chou dans l'interception d'un missile Scud irakien. Le Scud a frapp
un baraquement de l'arme amricaine et a tu 28 soldats. La commission d'enqute a conclu un
calcul incorrect du temps de parcours, d un problme d'arrondi. Les nombres taient reprsents
en virgule fixe sur 24 bits. Le temps tait compt par l'horloge interne du systme en dixime de
seconde. Malheureusement, 1/10 n'a pas d'criture finie dans le systme binaire : 1/10 = 0,1 (dans le
systme dcimal) = 0,0001100110011001100110011... (dans le systme binaire). L'ordinateur de
bord arrondissait 1/10 24 chiffres, d'o une petite erreur dans le dcompte du temps pour chaque
1/10 de seconde. Au moment de l'attaque, la batterie de missile Patriot tait allume depuis environ
100 heures, ce qui a entran une accumulation des erreurs d'arrondi de 0,34 s. Pendant ce temps, un
missile Scud parcourt environ 500 m, ce qui explique que le Patriot soit pass ct de sa cible.

Didier Mller 3-6 novembre 2016


L'informatique au lyce Chapitre 3

3.5. Le code ASCII


La norme ASCII2 (on prononce gnralement aski ) tablit une correspondance entre une
reprsentation binaire des caractres de l'alphabet latin et les symboles, les signes, qui constituent cet
alphabet. Par exemple, le caractre a est associ 1100001 (97) et A 1000001 (65).

La norme ASCII permet ainsi toutes sortes de machines de stocker, analyser et communiquer de
l'information textuelle. En particulier, la quasi-totalit des ordinateurs personnels et des stations de
travail utilisent l'encodage ASCII. Le code ASCII de base reprsentait les caractres sur 7 bits (c'est-
-dire 128 caractres possibles, de 0 127).

Les codes 0 31 ne sont pas des caractres. On les appelle caractres de contrle car ils
permettent de faire des actions telles que :
retour la ligne (Carriage return)
bip sonore (Audible bell)
Les codes 65 90 reprsentent les majuscules
Les codes 97 122 reprsentent les minuscules (il suffit de modifier le 6me bit pour passer
de majuscules minuscules, c'est--dire ajouter 32 au code ASCII en base dcimale).

2 American Standard Code for Information Interchange

Didier Mller 3-7 novembre 2016


Codage de l'information

Le code ASCII a t mis au point pour la langue anglaise, il ne contient donc pas de caractres
accentus, ni de caractres spcifiques une langue. Le code ASCII a donc t tendu 8 bits pour
pouvoir coder plus de caractres (on parle d'ailleurs de code ASCII tendu...). Cette norme s'appelle
ISO-8859 et se dcline par exemple en ISO-8859-1 lorsqu'elle tend l'ASCII avec les caractres
accentus d'Europe occidentale, et qui est souvent appele Latin-1 ou Europe occidentale.

Il existe d'autres normes que l'ASCII, comme l'Unicode par


exemple, qui prsentent l'avantage de proposer une version
unifie des diffrents encodages de caractres compltant l'ASCII
mais aussi de permettre l'encodage de caractres autres que ceux
de l'alphabet latin. Unicode dfinit des dizaines de milliers de
codes, mais les 128 premiers restent compatibles avec ASCII.

Dans le codage UTF-8, chaque point de code est cod sur une
suite d'un quatre octets. Il a t conu pour tre compatible avec
certains logiciels originellement prvus pour traiter des caractres
d'un seul octet.

Didier Mller 3-8 novembre 2016


L'informatique au lyce Chapitre 3

Toutes ces normes diffrentes et leurs incompatibilits partielles sont la cause des problmes que
l'on rencontre parfois avec les caractres accentus. C'est pour cette raison qu'il vaut mieux, quand
on crit des courriels l'tranger, n'utiliser que des caractres non accentus.

3.6. Codes dtecteurs/correcteurs d'erreurs


Un code correcteur est une technique de codage base sur la redondance. Elle est destine
corriger les erreurs de transmission d'un message sur une voie de communication peu fiable.
La thorie des codes correcteurs ne se limite pas qu'aux communications classiques (radio, cble
coaxial, fibre optique, etc.) mais galement aux supports de stockage comme les disques compacts,
la mmoire RAM et d'autres applications o l'intgrit des donnes est importante.
Comment dtecter et/ou corriger des erreurs ?
On peut transmettre un nombre soit en chiffres, soit en lettres :
1. On envoie 0324614103 . S'il y a des erreurs de transmission, par exemple si je reois
0323614203 , je ne peux pas les dtecter.
2. On envoie zro trente-deux quatre cent soixante et un quarante et un zro trois . S'il y
a des erreurs de transmission, par exemple si je reois zrb trente-deu quate cent
soixante en un quaranhe et on zro tros , je suis capable de corriger les erreurs et de
retrouver le bon numro.
Dans le premier cas, l'information est la plus concise possible. Dans le deuxime cas au contraire,
le message contient plus d'informations que ncessaire. C'est cette redondance qui permet la
dtection et la correction d'erreurs.
Pourquoi ces codes ?
Des canaux de transmission imparfaits entranant des erreurs lors des changes de donnes.
La probabilit d'erreur sur une ligne tlphonique est de 10 -7 (cela peut mme atteindre
10-4). Avec un taux d'erreur de 10 -6 et une connexion 1 Mo/s, en moyenne 8 bits errons
sont transmis chaque seconde...
Principe gnral
Chaque suite de bits transmettre est augmente par une autre suite de bits dite de
redondance ou de contrle .
Pour chaque suite de k bits transmise, on ajoute r bits. On dit alors que l'on utilise un code
C(n, k) avec n = k + r .
la rception, les bits ajouts permettent d'effectuer des contrles.

3.6.1. La distance de Hamming


La distance de Hamming doit son nom Richard Hamming. Elle est dcrite dans un article
fondateur pour la thorie des codes. Elle est utilise en tlcommunication pour compter le nombre
de bits altrs dans la transmission d'un message d'une longueur donne.
Richard Hamming
(1915-1998)
Exemple : la distance de Hamming entre 1011101 et 1001001 est 2 car deux bits sont diffrents.

Il est souhaitable d'avoir une certaine distance entre les mots envoys, afin de dtecter s'il y a eu
une erreur de transmission. Par exemple, si l'on a trois messages transmettre de trois bits, il vaut
mieux choisir les codages qui sont distance 2 les uns des autres, par exemple 000, 110 et 101. En
effet, si un seul bit est altr, on recevra un message impossible. Par contre, en utilisant 000, 001 et
010, un bit altr pourrait passer inaperu.

3.6.2. Somme de contrle


La somme de contrle (en anglais checksum ) est un cas particulier de contrle par

Didier Mller 3-9 novembre 2016


Codage de l'information

redondance. Elle permet de dtecter les erreurs, mais pas forcment de les corriger. Nous en avons
dj vu un exemple avec le code ISBN-10.
Le principe est d'ajouter aux donnes des lments dpendant de ces dernires et simples
calculer. Cette redondance accompagne les donnes lors d'une transmission ou bien lors du stockage
sur un support quelconque. Plus tard, il est possible de raliser la mme opration sur les donnes et
de comparer le rsultat la somme de contrle originale, et ainsi conclure sur la corruption
potentielle du message.
Bit de parit
Transmettons sept bits auxquels viendra s'ajouter un bit de parit. On peut dfinir le bit de parit
comme tant gal zro si la somme des autres bits est paire et un dans le cas contraire. On parle
de parit paire. Si la somme des bits est impair, c'est qu'il y a eu une erreur de transmission.
Exemple : 1010001 (7 bits) devient 11010001 (8 bits)
Cette approche permet de dtecter les nombres d'erreurs impaires, mais un nombre pair d'erreurs
passera inaperu.

3.6.3. Le code ISBN


L'ISBN (International Standard Book Number) est un
numro international qui permet d'identifier, de manire
unique, chaque livre publi. Il est destin simplifier la
gestion informatique des livres dans les bibliothques,
librairies, etc.
Le numro ISBN-10 se compose de quatre segments, trois segments de longueur variable et un
segment de longueur fixe, la longueur totale de l'ISBN comprend dix chiffres (le 1 er janvier 2007, la
longueur a t tendue 13 chiffres en ajoutant un groupe initial de 3 chiffres).
Si les quatre segments d'un ancien code ISBN 10 chiffres sont nots A - B - C - D :
A identifie un groupe de codes pour un pays, une zone gographique ou une zone de langue.
B identifie l'diteur de la publication.
C correspond au numro d'ordre de l'ouvrage chez l'diteur.
D est un chiffre-cl calcul partir des chiffres prcdents et qui permet de vrifier qu'il n'y
a pas d'erreurs. Outre les chiffres de 0 9, cette cl de contrle peut prendre la valeur X, qui
reprsente le nombre 10.

Calcul du chiffre-cl d'un numro ISBN-10


On attribue une pondration chaque position (de 10 2 en allant en sens dcroissant) et on
fait la somme des produits ainsi obtenus.
On conserve le reste de la division euclidienne de ce nombre par 11. La cl s'obtient en
retranchant ce nombre 11. Si le reste de la division euclidienne est 0, la cl de contrle
n'est pas 11 (11 0 = 11) mais 0.
De mme, si le reste de la division euclidienne est 1, la cl de contrle n'est pas 10 mais la
lettre X.
Le nombre 11 tant premier, une erreur portant sur un chiffre entranera automatiquement une
incohrence du code de contrle. La vrification du code de contrle peut se faire en effectuant le
mme calcul sur le code ISBN complet, en appliquant la pondration 1 au dixime chiffre de la cl
de contrle (si ce chiffre-cl est X, on lui attribue la valeur 10) : la somme pondre doit alors tre
un multiple de 11.
Exemple

Pour le numro ISBN ( 9 chiffres) 2-35288-041, quelle est la cl de contrle ?

Code ISBN 2 3 5 2 8 8 0 4 1
Pondration 10 9 8 7 6 5 4 3 2
Produit 20 27 40 14 48 40 0 12 2

Didier Mller 3-10 novembre 2016


L'informatique au lyce Chapitre 3

La somme des produits est 203, dont le reste de la division euclidienne par 11 est 5.
La cl de contrle est donc 11 5 = 6. L'ISBN au complet est : 2-35288-041-6.
La vrification de la cl complte 10 chiffres donne la somme pondre 203 + 6 = 209, qui est
bien un multiple de 11.

La question qui tue : pourquoi est-il indispensable de donner une pondration chaque position ?

3.6.4. Formule de Luhn


La formule gnre un chiffre de vrification, qui est gnralement annex un numro d'identit
partiel pour gnrer un identifiant complet. Cet identifiant (numro complet : numro partiel et son
chiffre de vrification) est soumis l'algorithme suivant pour vrifier sa validit :

1. L'algorithme multiplie par 2 un chiffre sur deux, en commenant par le deuxime depuis la
droite et en se dplaant vers la gauche. Si un chiffre multipli par deux est plus grand que
neuf (comme c'est le cas par exemple pour 8 qui devient 16), alors il faut le ramener un
chiffre entre 1 et 9 en soustrayant 9.
2. La somme de tous les chiffres obtenus est effectue.
3. Le rsultat est divis par 10. Si le reste de la division est gal zro, alors le nombre
original est valide.

Exemple

Considrons l'identification du nombre 972-487-086. La premire tape consiste doubler un


chiffre sur deux en partant de l'avant-dernier jusqu'au dbut, et de faire la somme de tous les chiffres,
doubls ou non (si un chiffre est suprieur 9, on retranche 9, d'o la 3 me ligne). Le tableau suivant
montre cette tape :

Code 9 7 2 4 8 7 0 8 6
Multiplication par 2 9 14 2 8 8 14 0 16 6
Chiffres entre 0 et 9 9 5 2 8 8 5 0 7 6 50

Somme

La somme, gale 50, est divise par 10 : le reste est 0, donc le nombre est valide.

Chaque vhicule ferroviaire dispose d'un numro d'identification unique le distinguant de tout
autre vhicule ferroviaire. La numrotation des plaques dimmatriculation des trains a t
uniformise par l'Union internationale des chemins de fer (UIC) : chaque locomotive, chaque
automotrice et chaque voiture de voyageurs est identifie par un numro douze chiffres.

Didier Mller 3-11 novembre 2016


Codage de l'information

Le numro crit sur la voiture de voyageurs ci-dessus indique (voir [5]) :

le type de vhicule : 50 = service commercial national


le pays : 85 = Suisse
le type de voiture : 3- = voiture mixte 1re 2e classe, -9 = neuf compartiments
la vitesse maximale : 43 = vitesse maximale comprise entre 121 et 140 km/h
le numro de srie : 829
le chiffre 3 situ aprs le tiret est une cl de contrle pour la vrification informatique.

Vrifiez que ce numro d'immatriculation satisfait la condition de la formule de Luhn.

3.6.5. Vrification des CCP


CCP signifie Compte Courant Postal. Pour vrifier qu'un numro de CCP est valide, on va utiliser
le tableau ci-dessous, tir de la documentation de Postfinance :

retenue 0 1 2 3 4 5 6 7 8 9 contrle
0 0 9 4 6 8 2 7 1 3 5 0
1 9 4 6 8 2 7 1 3 5 0 9
2 4 6 8 2 7 1 3 5 0 9 8
3 6 8 2 7 1 3 5 0 9 4 7
4 8 2 7 1 3 5 0 9 4 6 6
5 2 7 1 3 5 0 9 4 6 8 5
6 7 1 3 5 0 9 4 6 8 2 4
7 1 3 5 0 9 4 6 8 2 7 3
8 3 5 0 9 4 6 8 2 7 1 2
9 5 0 9 4 6 8 2 7 1 3 1

Vrifions le numro de CCP 17-603303-5.

On commence toujours avec une retenue de 0.


Le premier chiffre est 1 ( lire dans la ligne grise). Le tableau indique que la nouvelle retenue est
9 (intersection de la ligne 0 et de la colonne 1 ).
Avec une retenue de 9 et un second chiffre gal 7, on trouve que la deuxime retenue est 7
(intersection de la ligne 9 et de la colonne 7 ).
On continue ainsi jusqu' l'avant-dernier chiffre (le dernier chiffre est la cl de contrle qui se lira
dans la colonne contrle ) :

Chiffre Retenue Nouvelle retenue


1 0 9
7 9 7
6 7 6
0 6 7
3 7 0
3 0 6
0 6 7
3 7 0

Didier Mller 3-12 novembre 2016


L'informatique au lyce Chapitre 3

La retenue aprs l'avant-dernier chiffre est 0. Dans la colonne contrle, on voit que cela
correspond la retenue 0. Le dernier chiffre devrait donc tre un 0 plutt qu'un 5, ce qui signifie que
le numro de CCP est incorrect.

Vrifiez le numro de CCP 10-546323-6.

3.6.6. Code de Hamming


Un code de Hamming permet la dtection et la correction automatique d'une erreur si elle ne
porte que sur une lettre du message. Un code de Hamming est parfait, ce qui signifie que pour une
longueur de code donne, il n'existe pas d'autre code plus compact ayant la mme capacit de
correction. En ce sens, son rendement est maximal.
Structure d'un code de Hamming
les m bits du message transmettre et les n bits de contrle de parit.
longueur totale : 2n1
longueur du message : m = (2n1)n
on parle de code xy : x est la longueur totale du code (n+m) et y la longueur du message
(m)
les bits de contrle de parit Ci sont en position 2i pour i = 0, 1, 2,...
les bits du message Dj occupe le reste du message.

7 6 5 4 3 2 1
D3 D2 D1 C2 D0 C1 C0
Structure d'un code de Hamming 74
Exemples de code de Hamming
un mot de code 74 a un coefficient d'efficacit de 4/7 = 57 %
un mot de code 1511 a un coefficient d'efficacit de 11/15 = 73 %
un mot de code 3126 a un coefficient d'efficacit de 26/31 = 83 %
Retrouver l'erreur dans un mot de Hamming
Si les bits de contrle de parit C2, C1, C0 ont tous la bonne valeur, il n'y a pas d'erreurs ; sinon la
valeur des bits de contrle indique la position de l'erreur entre 1 et 7. Le code de Hamming prsent
ici ne permet de retrouver et corriger qu'une erreur.
Pour savoir quels bits sont vrifis par chacun des bits de contrle de parit, il faut construire le
tableau ci-dessous.
On numrote les lignes de 1 x=2n1 dans la colonne de droite (prenons comme exemple x=7),
puis on convertit chaque nombre en binaire et l'on crit chaque bit dans les colonnes de gauche. On
colorie de la couleur de Ci les nombres de droite s'il y a un 1 dans dans la colonne Ci . Par exemple, 5
sera color en vert et en rouge, car sur la ligne du 5, il y a un 1 dans les colonnes C2 et C0.

C2 C1 C0 dcimal
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7

Didier Mller 3-13 novembre 2016


Codage de l'information

C2 (en vert) colore les bits 4, 5, 6, 7. Ce sont les bits qu'il vrifie.
C1 (en bleu) vrifie les bits 2, 3, 6, 7.
C0 (en rouge) vrifie les bits 1, 3, 5, 7.
On constate que chaque bit de donnes est color d'une manire diffrente. Cela permettra
de retrouver la position d'une erreur.

Exemple d'un code de Hamming 7-4


On souhaite envoyer le message 1010. Compltons le mot de Hamming correspondant :

7 6 5 4 3 2 1
1 0 1 0

C0 vaut 0 pour pouvoir rendre pair 1+1+0 (les bits d'indices 7, 5, 3).
C1 vaut 1 pour pouvoir rendre pair 1+0+0 (les bits d'indices 7, 6, 3).
C2 vaut 0 pour pouvoir rendre pair 1+0+1 (les bits d'indices 7, 6, 5).

7 6 5 4 3 2 1
1 0 1 0 0 1 0

Imaginons que l'on reoive le mot 0010010 (le bit de poids fort a t altr).
C0 a la mauvaise valeur, car 0+1+0+0 est impair, donc il y a une erreur en position 7, 5, 3 ou 1.
C1 a la mauvaise valeur, car 0+0+0+1 est impair, donc il y a une erreur en position 7, 6, 3 ou 2.
C2 a la mauvaise valeur, car 0+0+1+0 est impair, donc il y a une erreur en position 7, 6, 5 ou 4.
crivons le nombre binaire C2C1C0 o Ci vaut 0 si le bit de contrle Ci a la bonne valeur et 1
sinon. On obtient ici 111, ce qui correspond 7 en binaire. Le bit erron est le numro 7.

Que se passe-t-il si c'est un des bits de contrle qui est altr ? Imaginons que l'on ait reu
1010011 (cette fois-ci, c'est le bit de poids faible qui a t altr).
C0 a la mauvaise valeur, car 1+1+0+1 est impair. Il y a une erreur en position 7, 5, 3 ou 1.
C1 a la bonne valeur, car 1+0+0+1 est pair. Il n'y a pas d'erreur en position 7, 6, 3 et 2
C2 a la bonne valeur, car 1+0+1+0 est pair. Il n'y a pas d'erreur en position 7, 6, 5 et 4.
Ici, C2C1C0 vaut 001. Le bit erron est donc le numro 1.

Exercice 3.8
Vous voulez envoyer le mot 1011. Quels bits de contrle devez-vous lui adjoindre et quelle
squence transmettrez-vous alors ?
Exercice 3.9
Y a-t-il une erreur dans le mot suivant (Hamming 74) : 1101101 ?
Exercice 3.10
Soit un mot de Hamming 1511 suivant :

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
1 0 1 1 0 1 1 1 1 0 1 1 0 1 1

1. Quels sont les bits de contrle de parit ?


2. Quelles positions contrle chacun de ces bits ?
3. Quel est le message reu ?
4. Est-ce que le message reu correspond au message transmis ?

Didier Mller 3-14 novembre 2016


L'informatique au lyce Chapitre 3

3.7. Codage de Huffman


Le codage de Huffman (1952) est une mthode de compression statistique de donnes qui permet
de rduire la longueur du codage d'un alphabet. C'est un code de longueur variable optimal, c'est--
dire que la longueur moyenne d'un texte cod est minimale. On observe des rductions de taille de
l'ordre de 20 90%.
Le principe
Le principe de l'algorithme de Huffman consiste recoder les octets rencontrs dans un ensemble
de donnes source avec des valeurs de longueur binaire variable.
L'unit de traitement est ramene au bit. Huffman propose de recoder les donnes qui ont une
occurrence trs faible sur une longueur binaire suprieure la moyenne, et recoder les donnes trs
frquentes sur une longueur binaire trs courte.
David A. Huffman
(1925-1999) Ainsi, pour les donnes rares, nous perdons quelques bits regagns pour les donnes rptitives.
Par exemple, dans un fichier ASCII le w apparaissant 10 fois aura un code trs long :
0101000001000. Ici la perte est de 40 bits (10 x 4 bits), car sans compression, il serait cod sur 8 bits
au lieu de 12. Par contre, le caractre le plus frquent comme le e avec 200 apparitions sera cod
par 1. Le gain sera de 1400 bits (7 x 200 bits). On comprend l'intrt d'une telle mthode.
De plus, le codage de Huffman a une proprit de prfixe : une squence binaire ne peut jamais
tre la fois reprsentative d'un lment cod et constituer le dbut du code d'un autre lment.
Si un caractre est reprsent par la combinaison binaire 100 alors la combinaison 10001 ne peut
tre le code d'aucune autre information. Dans ce cas, l'algorithme de dcodage interprterait les 5
bits comme deux mots : 100-01. Cette caractristique du codage de Huffman permet une codification
l'aide d'une structure d'arbre binaire :

Un exemple d'arbre obtenu avec la phrase this is an example of a huffman tree

Mthode
Au dpart, chaque lettre a une tiquette correspondant sa frquence (ou sa probabilit)
d'apparition. Il y a autant d'arbres ( 1 sommet) que de lettres.
L'algorithme choisit chaque tape les deux arbres d'tiquettes minimales, soit x et y, et les
remplace par l'arbre form de x et y et ayant comme tiquette la somme de l'tiquette de x et de
l'tiquette de y. La figure ci-dessous reprsente les tapes de la construction d'un code de Huffman
pour l'alphabet source {A, B, C, D, E}, avec les frquences F(A)=15, F(B)=7, F(C)=6, F(D)=6 et
F(E)=5.

Didier Mller 3-15 novembre 2016


Codage de l'information

Le code d'une lettre est alors dtermin en suivant le chemin depuis la racine de l'arbre jusqu' la
feuille associe cette lettre en concatnant successivement un 0 ou un 1 selon que la branche suivie
est gauche ou droite. Ainsi, sur la figure ci-dessus, A=0, B=100, C=101, D=110, E=111.
Par exemple, le mot ABBE serait cod 0100100111. Pour dcoder, on lit simplement la
chane de bits de gauche droite. Le seul dcoupage possible, grce la proprit du prfixe, est 0-
100-100-111.
Ce principe de compression est aussi utilis dans le codage d'image TIFF (Tagged Image Format
File) spcifi par Microsoft Corporation et Aldus Corporation.
Il existe des mthodes qui ne conservent pas exactement le contenu d'une image (mthodes non
conservatives) mais dont la reprsentation visuelle reste correcte. Entre autres, il y a la mthode
JPEG (Join Photographic Experts Group) qui utilise la compression de type Huffman pour coder les
informations d'une image.
Malgr son anciennet, cette mthode est toujours remise au got du jour, et offre des
performances apprciables.

Exercice 3.12
Construisez un codage de Huffman du message ceciestuncodagedehuffman (on a supprim
les espaces et la ponctuation pour simplifier la construction). Il y a plusieurs codages de Huffman
possibles.
Vrifiez la proprit du prfixe.

3.8. QR Codes
Le code QR (ou QR code en anglais) est un code-barres en deux dimensions (ou code matrice)
constitu de modules noirs disposs dans un carr
fond blanc. Ce cours contient un QR code
chaque dbut de chapitre. Le nom QR est
l'acronyme de l'anglais Quick Response, car son
contenu de donnes peut tre dcod rapidement.
Le code QR a t cr par l'entreprise
japonaise Denso-Wave en 1994 pour le suivi des
pices de voiture dans les usines de Toyota.
Les codes QR peuvent mmoriser des adresses
web, du texte, des numros de tlphone, des SMS ou autres types de donnes lisibles par les

Didier Mller 3-16 novembre 2016


L'informatique au lyce Chapitre 3

smartphones et les tlphones mobiles quips d'une application de lecture (lecteur de code QR ou
QR reader en anglais).
L'avantage du code QR est sa facilit et rapidit d'utilisation et de cration. Pour lire un code QR,
il suffit de lancer l'application de lecture et viser le code dans le mobile. De nombreuses pages Web
offrent ces applications pour mobiles, gnralement sans
frais.
En ce qui concerne l'criture, il y a plusieurs sites web
qui permettent de gnrer librement les codes QR.
Ils peuvent stocker jusqu' 7089 caractres
numriques, 4296 caractres alphanumriques ou 2953
octets. Par rapport au code-barres traditionnel qui ne peut
stocker que de 10 13 caractres, ils ont l'avantage de
pouvoir stocker beaucoup d'informations tout en tant
petits et rapides scanner.
Le code QR est dfini comme un standard ISO
(IEC18004).

Les cases noires et blanches servent l'orientation du


QR code. Grce ces trois carrs, l'image peut tre lue dans tous les sens.
Dans la partie cyan se trouvent des informations sur le format.
L'information est code selon le systme Reed-Solomon et stocke dans la partie jaune. Certains
types de codes restent lisibles avec 30% de dgradation.

On a ajout une
image sur le QR-
Code original, mais
il reste lisible.
Essayez de les
scanner !
Vous constaterez
qu'il faut plus de
temps avec le QR-
Code dgrad.

Original Aprs dgradation

Ce QR-Code
dessin dans le
sable est tout fait
valide.

Didier Mller 3-17 novembre 2016


Codage de l'information

Idem pour ces QR-


code artistiques !

Sources
[1] Dumas, Roch, Tannier, Varrette, Thorie des codes : Compression, cryptage, correction, Dunod,
2006
[2] Martin B., Codage, cryptologie et applications, Presses Polytechniques et Universitaires
Romandes (PPUR), 2004
[3] Comment a marche, Reprsentation des nombres entiers et rels ,
<http://www.commentcamarche.net/contents/base/representation.php3>
[4] Wikipdia, International Book Standard Number , <http://fr.wikipedia.org/wiki/ISBN>
[5] Wikipdia, Classification UIC des voitures de chemin de fer
<https://fr.wikipedia.org/wiki/Classification_UIC_des_voitures_de_chemin_de_fer>
[6] Duvallet Claude, Les codes correcteurs et les codes dtecteurs d'erreurs ,
<http://litis.univ-lehavre.fr/~duvallet/enseignements/Cours/LPRODA2I/UF9/LPRODA2I-TD2-UF9.pdf>
[7] Wikipdia, Codage de Huffman , <http://fr.wikipedia.org/wiki/Codage_de_Huffman>

Didier Mller 3-18 novembre 2016

You might also like