Professional Documents
Culture Documents
Codes reprsentatifs
Chapitre
es codes forment de cet ouvrage lobjet dtude le plus familier tous les lecteurs. On manipule les codes au quotidien, et leur comprhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabtique, auquel la civilisation moderne doit son dveloppement rapide. Les nombres aussi sont reprsents par des codes, et ces codes sont forms par des chiffres. Il existe dailleurs de multiples codes pour reprsenter les nombres, cest ainsi que lon peut reprsenter vingt par les symboles graphiques XX ou 20. Nous verrons dans ce chapitre diffrents types de codes, que nous avons classs en reprsentatifs (les codes alphanumriques) et analytiques (reprsentant des quantits numrales). Les systmes numriques que conoivent ou utilisent les ingnieurs manipulent pour la plupart ces codes.
7.1 Codes
On entend le mot code dans sa dfinition reprsentative, associant un objet un symbole. Nous manipulons les codes au quotidien. Remarquons que 123 nest pas cent vingt trois, de la mme faon que oie nest pas lanimal. Ce ne sont que des reprsentations des objets laide de symboles (codes). Et lassociation entre lobjet et ce qui le reprsente est concevable compter du moment que la codification est admise. Ainsi, oca ne signifie rien pour nous puisque nous ne ladmettons pas comme un code valide. Ce nest pourtant quune autre reprsentation (cest le mot italien) de oie. Dans notre cas, nous considrons les codes sous une reprsentation binaire. Cest dire que nous reprsenterons tout code avec un ensemble de 0 et de 1. Ces deux symboles reprsentent les formes possibles dun bit.
7.1.1 Bit
Bit : Le mot fut utilis pour la premire fois par Claude Shannon dans un article publi en 1948. On attribue cependant son origine John Wilder Tukey, mathmaticien amricain, qui inventa galement le mot software. Bit est une contraction des mots binary digit, ou galement binary unit. Un bit peut prendre deux valeurs possibles, 0 ou 1. Il est la base des codes que nous allons prsenter.
7.1.2 Mot
Un mot est un ensemble de bits agencs de sorte reprsenter un objet dans un code. Le mot 0011000 reprsente le caractre 0 (zro) en code Ascii (voir section suivante), ou le nombre 48 dans la reprsentation dite binaire naturel des entiers (voir section sur les codes analytiques). 139
2 - C O D E S
R E P R S E N T A T I F S
E T
A N A L Y T I Q U E S
Code
0110000 0110001 0110010 0110011 0110100 0110101 0110110 0110111 0111000 0111001 1000001 1000010 1000011 1000100 1000101 1000110 1000111 1001000
Caractre
I J K L M N O P Q R S T U V W X Y Z
Code
1001001 1001010 1001011 1001100 1001101 1001110 1001111 1010000 1010001 1010010 1010011 1010100 1010101 1010110 1010111 1011000 1011001 1011010
Caractre
a b c d e f g h i j k l m n o p q r
Code
1100001 1100010 1100011 1100100 1100101 1100110 1100111 1101000 1101001 1101010 1101011 1101100 1101101 1101110 1101111 1110000 1110001 1110010
Caractre
s t u v w x y z
Code
1110011 1110100 1110101 1110110 1110111 1111000 1111001 1111010
Le code ASCII a t cr pour reprsenter les caractres alphanumriques usuels de langlais. Cette reprsentation premire, initie par la compagnie amricaine Bell, comportait 7 bits par mot. Ceci permettait donc 27 = 128 mots possibles. Des versions standardises et rendues internationales suivirent, aboutissant une reprsentation sur 8 bits, permettant dobtenir 28 = 256 mots possibles. Nanmoins, avec le dveloppement des technologies de linformation, des reprsentations plus volues ont vu le jour, dont le code Unicode, comportant 16 bits, pour un total de 65 536 mots possibles et permettent de reprsenter diffrents caractres des nombreux alphabets utiliss un peu partout dans le monde. Le code ASCII sest depuis pli au bonheur des artistes, donnant naissance ce quon appelle le Art-ASCII. Ainsi, on dessine des choses simples du type :
(__) (oo) /-------\/ / | || * ||----|| ~~ ~~ Vache
O /|\ / \ Personne
140
2 - C O D E S
R E P R S E N T A T I F S
E T
A N A L Y T I Q U E S
On appelle ce code 8421 car les 4 bits pondrent les nombres 8, 4, 2 et 1 respectivement. Ainsi, 0111 correspond 7 puisque 7 = 0 x 8 + 1 x 4 + 1 x 2 + 1 x 1. Cela permet dcrire 123 : 0001 0010 0011.
141
2 - C O D E S
R E P R S E N T A T I F S
E T
A N A L Y T I Q U E S
Dautres codes BCD existent, certains fonctionnant selon le mme principe de pondration, comme le code 2421 ou le code 5421, dont les tables suivent : Chiffre 0 1 2 3 4 Bits 0000 0001 0010 0011 0100 Chiffre 5 6 7 8 9 Bits 1011 1100 1101 1110 1111
Chiffre 0 1 2 3 4
Chiffre 5 6 7 8 9
Il existe galement des codes non bass sur la pondration, dont lexemple le plus connu est certainement le code-barres. Pour linstant, il suffit de retenir du code BCD son but utilitaire, savoir la reprsentation des chiffres 0 9 en code binaire, et noter que lcriture la plus rpandue est le code BCD 8421. Le grand intrt du systme BCD pour llectronicien est la possibilit de manipuler les chiffres en base dix pour diffrentes fins, notamment laffichage, comme ce sera illustr dans les chapitres subsquents.
142
2 - C O D E S
R E P R S E N T A T I F S
E T
A N A L Y T I Q U E S
Lorsque le compteur passe de 001 010, il doit modifier deux bits. Si il y a un problme de synchronisation entre les bits v1 et v0, le nombre 011 saffiche pendant un court laps de temps, bien que ce ne soit pas le rsultat recherch. Pour remdier ce problme il est possible dutiliser le code de Gray, invent aux Bell Labs par Frank Gray et brevet en 1953. Le code de Gray encode les entiers de telle faon que le passage dun nombre au suivant ne change quun seul bit la fois, comme lillustre le tableau suivant o les entiers ont t encods sur 4 bits :
Dcimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Binaire 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 Gray 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 0110 0111 0101 0100
Le code de gray rgle le problme de compte que nous avons vu prcdemment, comme lillustre la figure suivante :
On construit le code de Gray en recopiant les bits de faon symtrique (effet miroir) et en procdant de faon itrative jusquau bit dsir.
0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 1 1 1 00 01 11 10 10 11 01 00
Itration 1
Itration 2 143
Itration 3
2 - C O D E S
R E P R S E N T A T I F S
E T
A N A L Y T I Q U E S
Le code de Gray est encore trs utilis, notamment dans les ordinateurs o le compteur de programme utilise le code de Gray pour minimiser sa consommation dnergie. On le retrouve galement dans certains systmes de tlcommunication pour la correction derreur. Mentionnons aussi que le code de Gray a t utilis pour trouver une solution au problme des tours de Hanoi.
7.3
Dtection derreurs
Les systmes de communication numriques souffrent du bruit ambiant autant que leur pendant analogique. Le bruit est un signal parasitaire non dsir dont on ne peut prvoir le comportement. Trs tt, les ingnieurs ont t confronts ce problme et ont du dfinir des outils leur permettant dassurer lintgrit des messages envoys. On part de la problmatique gnrale suivante :
On dispose dune source mettrice (appele lmetteur) et dun dispositif pour la rception (appel le rcepteur). Pour transfrer les donnes de lmetteur au rcepteur, on utilise un canal de communication. Ces trois lments se retrouve trs frquemment dans les systmes numriques modernes. Les exemples ne manquent pas. Citons titre dexemple (metteur, canal, rcepteur) : Souris dordinateur, fil, ordinateur ; tlcommande, lien infrarouge, tlvision ; modem, cable RJ45, ordinateur ; guichet automatique, fil tlphonique, central de la banque ; etc. Le bruit vient altrer linformation transmise. Cela signifie quil peut altrer les bits envoys de telle sorte quun 0 devient 1 et inversement. Il est cependant possible, en utilisant un protocole appropri, de retrouver linformation mme si elle a t modifie par le bruit. Pour bien comprendre la problmatique, supposons que nous disposions dun code utilisant deux bits dinformation, et que ce code soit form des mots : {00, 01, 10, 11}. Si lmetteur envoie le mot 00, et que le rcepteur obtient 01 (altration du bit le moins significatif), il est clair que le rcepteur est incapable didentifier linformation reue aprs intervention du bruit.
2 - C O D E S
R E P R S E N T A T I F S
E T
A N A L Y T I Q U E S
le rcepteur est en mesure que le mot reu nexiste tout simplement pas dans le code, et il demandera que le message soit retransmis nouveau. Il existe une mtrique qui va nous permettre de mesurer la capacit limmunisation face au bruit dun systme de communication. Cette mtrique sappelle la distance de Hamming. La distance de Hamming, qui tient son nom dun informaticien clbre qui a particip au projet Manhattan, est la mesure entre deux mots dans un code. Pour cela, elle considre le nombre de bits qui a chang de valeur entre le premier mot et le second. Reprenons lexemple du paragraphe prcdent. Les mots 0000 et 0011 ont une distance de Hamming de 2, car les deux derniers bits ont chang quand les mots passaient de 0000 0011. Dans un code, on parlera de distance minimale, que nous noterons M. La distance de Hamming minimale dun code est la plus petite distance entre deux mots diffrents du code. Pour les deux exemples prcdents, on aura : 00 01 10 11 00 - 1 1 2 01 1 - 2 1 10 1 2 - 1 11 2 1 1 Distance minimale : 1 0000 0011 1100 1111 0000 0011 1100 1111 2 2 4 2 4 2 2 4 2 4 2 2 Distance minimale : 2
2 - C O D E S
R E P R S E N T A T I F S
E T
A N A L Y T I Q U E S
Ce qui prcde signifie : si il y a deux bits errons, le systme va dtecter lerreur, mais ne sera pas en mesure de corriger lerreur. Cependant, si il y a un seul bit erron, le systme dtectera lerreur et sera en mesure de la corriger. La difficult rside dans le fait dtre en mesure de trouver un code qui permette dobtenir une distance minimale M valant 3. Dans ce qui suit, nous allons montrer des mthodes systmatiques permettant datteindre ce niveau de scurit.
On appelle I quantit dinformation car elle quantifie linformation supplmentaire (bits) utilise pour porter linformation globale ncessaire. Dans lexemple de lalphabet, la valeur est proche de 0 (mais non nulle) car des certains mots du code (6 au total) existent sans quil y ait de symbole qui leur soit associ.
146
2 - C O D E S
R E P R S E N T A T I F S
E T
A N A L Y T I Q U E S
147
2 - C O D E S
R E P R S E N T A T I F S
E T
A N A L Y T I Q U E S
2 - C O D E S
R E P R S E N T A T I F S
E T
A N A L Y T I Q U E S
Les codes sont forms de la faon suivante : 1. Pour chaque mot du code de longueur n, on forme un nouveau mot de longueur n+p. 2. Chaque bit de parit porte un index i qui dbut par 1 (p1, p2, p3, p4) 3. Les bits du nouveau mot (de longueur n+p) sont indexs selon j et on dbute par 1 (b1, b2, b3, b4) 4. Chaque bit de parit (dindex i) prend la position de bit dont lindex j est une puissance de 2 (1, 2, 4, 8) de sorte que j = 2 i 1 5. Les bits du mot de dpart sont placs dans les espaces libres restant 6. Chaque bit de parit dindex i positionn au bit de position j ( j = 2 i 1 ) mesure la parit dune suite de bits qui dbutent lindex j, de telle sorte que lon prend i bits, puis saute i bits, puis prend i bits et ainsi de suite Le cas particulier qui nous concerne ici est celui o n = 4. Les rgles prcdentes deviennent : 1. 2. 3. 4. Pour chaque mot du code de longueur 4, on forme un nouveau mot de longueur 7. Chaque bit de parit porte un index i qui dbut par 1 (p1, p2, p3) Les bits du nouveau mot sont indexs selon j et on dbute par 1 (b1, b2, b3, b4, b5, b6, b7) Chaque bit de parit (dindex i) prend la position de bit dont lindex j est une puissance de 2 (1, 2, 4) de sorte que j = 2 i 1 5. Les bits du mot de dpart sont placs dans les espaces libres restant dindex 3, 5, 6, 7 6. Chaque bit de parit dindex i positionn au bit de position j ( j = 2 i 1 ) mesure la parit dune suite de bits qui dbutent lindex j, de telle sorte que lon prend i bits, puis saute i bits, puis prend i bits et ainsi de suite Ce qui donne p1 = parit(b1, b3, b5, b7) = parit(b3, b5, b7) p2 = parit(b2, b3, b6, b7) = parit(b3, b6, b7) p3 = parit(b4, b5, b6, b7) = parit(b5, b6, b7)
Regardons lexemples suivant. On veut envoyer le mot 0110 : 1. On forme un nouveau mot de longueur 7 : 0 0 0 0 0 0 0 2. Chaque bit de parit porte un index i qui dbut par 1 (p1, p2, p3) 3. Les bits du nouveau mot sont indexs selon j et on dbute par 1 (b1, b2, b3, b4, b5, b6, b7) 0 0 0 0 0 0 0 b7 b6 b5 b4 b3 b2 b1
149
2 - C O D E S
R E P R S E N T A T I F S
E T
A N A L Y T I Q U E S
4. Chaque bit de parit (dindex i) prend la position de bit dont lindex j est une puissance de 2 (1, 2, 4) de sorte que j = 2 i 1 0 0 0 p3 0 p2 p1 b7 b6 b5 b4 b3 b2 b1 5. Les bits du mot de dpart sont placs dans les espaces libres restant dindex 3, 5, 6, 7 0 1 1 p3 0 p2 p1 b7 b6 b5 b4 b3 b2 b1 6. Chaque bit de parit dindex i positionn au bit de position j ( j = 2 i 1 ) mesure la parit dune suite de bits qui dbutent lindex j, de telle sorte que lon prend i bits, puis saute i bits, puis prend i bits et ainsi de suite Ce qui donne : p1 = parit(b1, b3, b5, b7) = parit(b3, b5, b7) = parit(0, 1, 0) = 1 p2 = parit(b2, b3, b6, b7) = parit(b3, b6, b7) = parit(0, 1, 0) = 1 p3 = parit(b4, b5, b6, b7) = parit(b5, b6, b7) = parit(1, 1, 0) = 0 0 1 1 0 0 1 1 b7 b6 b5 b4 b3 b2 b1 Le code de Hamming permet dobtenir M = 3 de sorte pouvoir dtecter et corriger une erreur sur un bit. Pour ce faire, un nombre binaire C de longueur p est cr. Dans notre cas, ce nombre est form des bits c1 = parit(b1, b3, b5, b7) c2 = parit(b2, b3, b6, b7) c3 = parit(b4, b5, b6, b7) Le nombre C = c3c2c1 donne lindex j du bit qui a t altr. Si C = 0, on prsume quaucun bit na t modifi. Si C est diffrent de 0, on inverse le bit dindex j = C. Reprenons lexemple prcdant. Nous voulons envoyer le mot 0110. Pour cela, on forme le mot 0110011. Le rcepteur reoit 0100011. Le rcepteur forme le nombre C en calculant la valeur des bits : c1 = parit(b1, b3, b5, b7) = parit(1, 0, 0, 0) =1 c2 = parit(b2, b3, b6, b7) = parit(1, 0, 1, 0) =0 c3 = parit(b4, b5, b6, b7) = parit(0, 0, 1, 0) =1 C = 101(2) = 5(10). On inverse b5 et on trouve : 0110011 qui est le mot envoy par lmetteur.
150