Vous êtes sur la page 1sur 37

LES CODES REPRÉSENTATIFS

Le code Morse
Le code Baudot
Les codes binaires Les codes de détection et
Le code BCD (8421) de correction ces erreurs
Le code BCD (2421) Théorie des codes et terminologie
Le code Excess-3 La notion de bit de parité
Le code Gray Le code Hamming
Les codes alphanumériques Le Code CRC
Le cde ASCII
Le Code ANSI
Le code EBCDIC
Le code Hollerith

1
LES CODES REPRÉSENTATIFS

Les codes alphanumériques ou code de caractère sont des codes binaires qu’on utilise pour représenter des données
alphanumériques, des lettres de l’alphabet, des nombres, des symboles mathématiques, des accents, les marques de
ponctuation de façon très claire et intelligible. Les organes d’entrée et de sortie comme les imprimantes, les claviers, les
écrans, les souris peuvent être interfacées avec ces codes.

Le code Hollerith de 12 bits fut le premier code massivement utilisé au moment de l’utilisation des cartes perforées qui
étaient utilisés comme entrée et sortie. Mais il a disparu depuis avec les nouvelles machines pour faire place aux nouveaux
codes que sont, entre autres, le code ASCII, le code EBCDIC et le code Unicode

Les codes représentatifs contrairement aux codes analytiques ne sont pas restreints aux objets numéraux. Les codes
représentatifs sont encodés en binaire pour représenter des caractères alphanumériques.

Il faut que l’ordinateur utilise aussi des nombres binaires pour faire des calculs, mais aussi pour représenter des
informations non numériques comme les textes et les graphiques. C’est la représentation de ces textes et de ces
graphiques qui est appelée code.
2
Dans un code binaire, le nombre binaire est un symbole, mais ne représente pas actuellement un nombre binaire à
manipuler.
LES CODES REPRÉSENTATIFS

Les codes binaires peuvent être classés en plusieurs catégories.

Les codes pondérés, les codes non pondérés, les codes réfléchis, les codes séquentiels, les codes alphanumériques, les code détections et de correction d’erreurs.

Les codes pondérés associent un coefficient aux positions occupées par les chiffres.
Le nombre décimal 567 peut s’écrire 5*102 + 6*101 + 7*100 = 5*100 + 6*10 + 7*1
Le nombre binaire pur 101 binaire peut s’écrire 1*22+0*21+1*20 = 1*4+0*2+1*1
Le nombre binaire codé décimal (BCD) 567 s’écrit 0101 0110 0111
0*23+1*22+0*21+1*20 0*23+1*22+1*21+0*20 0*23+1*22+1*21+1*20
0*8+1*4+0*2+1*1 0*8+1*4+1*2+0*1 0*8+1*4+1*2+1*1
Le nombre 93 en binaire codé décimal (BCD 8421) s’écrit 1001 0011
1*8+0*4+0*2+1*1 0*8+0*4+1*2+1*1
Le nombre 93 en binaire codé décimal (BCD 5421) s’écrit 1100 0011
1*5+1*4+0*2+0*1 0*5+0*4+1*2+1*1
Nous pouvons faire la même chose avec les codes 2412, 3321, 4221, 5211, 5311, 5421, 3
6311, 7421, 8421, 7421, 8421
LES CODES REPRÉSENTATIFS

Les codes non pondérés n’affectent de coefficient aux chiffres. Il n’est pas possible de faire des
opérations arithmétiques ave ces codes. Le code gray, certains code BCD, les codes excess-3, les
codes de 5 bits

Les codes réfléchis. Comme le complément de 9 du nombre 9 est 0, le complément de 9 de 8


est 1, de 7 est 2, de 6 est 3, de 5 est 4, de 4 est 5, de 3 est 6, de 2 est 7, de 1 est 9 et de 0 est 9.
Si nous utilisons de BCD 2421 pour représenter 9, nous avons 1111. Pour représenter le
complément de 9 de 9 qui est 0, nous allons avoir 0000.
Si nous utilisons de BCD 2421 pour représenter 5, nous avons 0101. Pour représenter le
complément de 9 de 5 qui est 4, nous allons avoir 1010.

Le code gray, le code, le code excess-3, le code 2421, le code 5211


Les codes séquentiels : le code excess-3, le code 8421
Les codes alphanumériques : le code Hollerith, le code ascii, le code Ebcdic 4
Les codes de correction d'erreur: le code Hamming, le code de parité
LES CODES REPRÉSENTATIFS

Le code Morse

Le morse a été le premier codage à permettre une communication longue distance. C'est Samuel F.B.Morse qui l'a mis
au point en 1844. Ce code est composé de points et de tirets (un codage binaire en quelque sorte...). Il permit
d'effectuer des communications beaucoup plus rapides que ne le permettait le système de courrier de l'époque aux
Etats-Unis : le Pony Express. L'interpréteur était l'homme à l'époque, il fallait donc une bonne connaissance du code...

De nombreux codes furent inventés dont le code d'Émile Baudot (portant d'ailleurs le nom de code Baudot, les anglais
l'appelaient en revanche Murray Code).

Le 10 mars 1876, le Dr Graham Bell met au point le téléphone, une invention révolutionnaire qui permet de faire circuler
de l'information vocale dans des lignes métalliques. Pour l'anecdote, la Chambre des représentants a décidé que
l'invention du téléphone revenait à Antonio Meucci. Ce dernier avait en effet déposé une demande de brevet en 1871,
mais n'avait pas pu financer celle-ci au-delà de 1874. Ces lignes métalliques permirent l'essor des téléscripteurs, des
machines permettant le codage et le décodage des caractères grâce au code Baudot (les caractères étaient alors
définis sur 5 bits, il y avait donc 32 caractères uniquement...). Dans les années 60, le code ASCII (American Standard
5
Code for Information Interchange) est adopté comme standard. Il permet de coder les caractères sur 8 bits, soit 256
caractères possibles.
LES CODES
REPRÉSENTATIFS

6
LES CODES REPRÉSENTATIFS

Le code ASCII
Le code ASCII (American Standard Code for Information Interchange) est l’un des codes les plus anciens et le plus utilisés.

Sa naissance remonte des année 60 pour palier à la prolifération de plusieurs codes non standardisé.
L’Organisation Internationale pour la Normalisation (OIN) plus connu sous son nom anglais International Standard Organisation (ISO), a
créé en 1960 un comité technique sur l’ordinateur et le traitement des données. Un des groupes de travail de ce comité, le groupe B
devait se charger de jeux de caractère et de leur codification. Aux Etats-Unis c’est l’American Standard Association (L’association
Américaine pour la Normalisation) qui était le chapitre local de ce groupe de travail.

C’est en 1961 que Bob Bemer, un ingénieur aéronautique américain du département de la défense, mit au point un code de 8 bits qui
eut une influence notable sur le code ASCII. En 1963 la première version du Code ASCII fut publiée.

Auparavant, chaque matériel avait son propre codage, lié aux techniques qu'il utilisait : lecteur/perforateur de cartes 1442, imprimantes
1132 et 1403. Tout ordinateur, comme par exemple l'IBM 1130, était livré avec ses sous-programmes et ses tables permettant de
transposer les codes d'un matériel à un autre. D'autres standards étaient utilisés, notamment pour les cartes perforées (Bull et IBM
avaient chacun leur code, tous deux incompatibles.
7
LES CODES REPRÉSENTATIFS

Le code ASCII
L'ASCII définit seulement 128 caractères numérotés de 0 à 127 et codés en binaire de 0000000 à 1111111. Sept bits
suffisent donc pour représenter un caractère codé en ASCII. Toutefois, les ordinateurs travaillant presque tous sur un
multiple de huit bits (multiple d'un octet) depuis les années 1970, chaque caractère d'un texte en ASCII est souvent stocké
dans un octet dont le 8ème bit est 0.

Les caractères de numéro 0 à 31 et le 127 ne sont pas affichables ; ils correspondent à des commandes de contrôle de
terminal informatique. Le caractère numéro 127 est la commande pour effacer. Le caractère numéro 32 est l'espace. Les
autres caractères sont les chiffres arabes, les lettres latines majuscules et minuscules sans accent, des symboles de
ponctuation, des opérateurs mathématiques et quelques autres symboles.

Des fois le 8ème bit est utilisé pour donner le code ASCII étendu avec la possibilité de faire 28, soit 256 symboles.
Des représentations plus évoluées comme l’Unicode qui comporte 16 bits peuvent représenter jusqu’ 216, soit 65536
symboles. Avec ce code plusieurs alphabets peuvent être représentés.

L'absence des caractères des langues étrangères à l'anglais rend ce standard insuffisant à lui seul pour des textes8
étrangers comme le français, ce qui rend nécessaire l'utilisation d'autres encodages.
LES CODES REPRÉSENTATIFS

9
Le code ANSI utilisé par windows
Les logiciels de Microsoft utilisent la norme ANSI ( American National Standard Institute) qui reprend
en grande partie le code ASCII en proposant des extensions selon le code de « page retenu ».

Microsoft a créé ANSI comme un schéma de codage de caractère exclusif qui comprend plus de 200
caractères - lettres, chiffres, signes de ponctuation et des caractères spéciaux communs de langues
autres que l'anglais .ANSI est également connu sous le nom de Windows 1252.
.
Microsoft a fait de multiples révisions à la norme ANSI et publié des pages de code mis à jour en cas de
non - anglais, mais il n'a jamais contenait suffisamment de personnages uniques à rendre compte pour les
langues asiatiques , qui ont généralement beaucoup plus de caractères que langues basées sur l'alphabet
romain.

Nous pouvons distinguer plusieurs codes page. Le code page 850 est un jeu de caractère multilingue. Le
code 864 et pour les caractère arabes
LES CODES REPRÉSENTATIFS

Unicode
Unicode est un standard informatique qui permet des échanges de textes dans différentes langues, à un niveau mondial.
Il est développé par le Consortium Unicode, une organisation à but non lucratif qui est née d'une collaboration entre
Apple et Xerox , a créé le standard ouvert Unicode pour l'encodage de texte. vise au codage de texte écrit en
donnant à tout caractère de n'importe quel système d'écriture un nom et un identifiant numérique, et ce de manière
unifiée, quels que soient la plate-forme informatique ou le logiciel utilisés.

Ce standard est lié à la norme ISO/CEI 10646 qui décrit une table de caractères équivalente. La dernière version,
Unicode 12.0, a été publiée en mars 2019

Unicode est totalement compatible avec le jeu universel de caractères (JUC) de l'ISO/CEI 10646, le standard Unicode
l'étend en lui ajoutant un modèle complet de représentation et de traitement de textes, en conférant à chaque
caractère un jeu de propriétés normalisées ou informatives, en décrivant avec précision les relations sémantiques qui
peuvent exister entre plusieurs caractères successifs d'un texte, et en normalisant des algorithmes de traitement 11
qui
préservent au maximum la sémantique des textes transformés.
LES CODES REPRÉSENTATIFS

Unicode
Unicode a pour objet de rendre un même texte utilisable à l'identique sur des systèmes
informatiques totalement différents.

Le standard Unicode est constitué d'un répertoire de 137 929 caractères, couvrant une centaine
d’écritures, d'un ensemble de tableaux de codes pour référence visuelle, d'une méthode de codage
et de plusieurs codages de caractères standard, d'une énumération des propriétés de caractère
(lettres majuscules, minuscules, APL, symboles, ponctuation, etc.) d'un ensemble de fichiers de
référence des données informatiques, et d'un certain nombre d'éléments liés, tels que des règles
de normalisation, de décomposition, de tri, de rendu et d'ordre d'affichage bidirectionnel (pour
l'affichage correct de texte contenant à la fois des caractères d'écritures de droite à gauche,
comme l'arabe et l'hébreu, et de gauche à droite).
12
LES CODES REPRÉSENTATIFS

Le code BCD (8421) , décimal codé binaire

Le code BCD (Binary Coded Decimal) est aussi un code très utilisé qui
permet de représenter des nombres sous leur écriture décimale. Il
s’agit de coder les chiffres de 0 à 9 en binaire sur 4 bits.

Ce code est aussi appelé code 8421 ou 23, 22, 21,20


Pour représenter le nombre décimal 123 en BCD nous représentons le
1 en BCD, puis le 2, ensuite le 3, ce qui donne : 0001 0010 0011.

10 en BCD donne (0001 0000).


127 en BCD donne ( 0001 0010 0111)

Il existe d’autres code BCD comme le code 2421 ou le code 5421.


13
LES CODES REPRÉSENTATIFS

Addition de code BCD (8421)


Pour additionner deux nombre BCD, il faut considérer les 3 cas suivants:

La somme ne dépasse pas 9 et la retenue est égale à 0, dans ce cas l’addition se fait comme en binaire
pur et le résultat obtenu est correct.

6 0110 5 0101 4 0100 22 0010 0010


+ + + +
3 0011 2 0010 4 0100 12 0001 0010
9 1001 7 0111 8 1000 34 0011 0100

14
LES CODES REPRÉSENTATIFS

Addition de code BCD (8421)


La somme ne dépasse pas 9 et la retenue est égale à 1, dans ce cas l’addition se fait comme en binaire pur mais le résultat obtenu
est incorrect. Pour arriver au bon résultat, il faut additionner 6 (0110) au résultat provisoire.

8 1000 18 0001 1000


+ +
9 1001 19 0001 1001
17 10001 37 0010 10001
+ 0110 (6) + 0110 (6)
0001 0111 0101 0111

8+9 : Nous voyons que le résultat obtenu est incorrect car il n’est pas égal à 17, il faut donc pour corriger ajouter 6 (0110), ce qui va
nous donner 10001+0110 = 10111. Si nous éclatons ce nombre en deux groupes de 4 à partir de la gauche, nous obtenons 0001 0111
qui l’équivalent de 17 en BCD.

18+19 : Nous voyons que le résultat obtenu est incorrect car il n’est pas égal à 37, il faut donc pour corriger ajouter 6 (0110) sur la
partie de droite qui a la retenue de 1, ce qui va nous donner 0010 10001+0110 = 001010111. Si nous éclatons ce nombre en deux
groupes de 4 à partir de la gauche, nous obtenons 0101 0111 qui l’équivalent de 37 en BCD. 15
LES CODES REPRÉSENTATIFS

Addition de code BCD (8421)

La somme dépasse 9 et la retenue est égale à 0, dans ce cas l’addition se fait comme en binaire pur mais le résultat obtenu est
incorrect. Pour arriver au bon résultat, il faut additionner 6 (0110) au résultat provisoire.

3 0011 57 0101 0111


+ +
7 0111 26 0010 0110
10 1010 83 0111 1101
+ 0110 (6) + 0110 (6)
0001 0000 1000 0011
3+7 : Nous voyons que le résultat obtenu est incorrect car il n’est pas égal à 10, il faut donc pour corriger ajouter 6 (0110), ce qui va nous
donner 1010+0110 = 10000. Si nous éclatons ce nombre en deux groupes de 4 à partir de la gauche, nous obtenons 0001 0000 qui
l’équivalent de 10 en BCD.

57+26 : Nous voyons que le résultat obtenu est incorrect car il n’est pas égal à 83, il faut donc pour corriger ajouter 6 (0110) à la partie se
trouvant à droite, sachant que cette dernière qui est égale à 13 est supérieur 9, ce qui va nous donner 0111 1101+0110 = 10000011. Si
nous éclatons ce nombre en deux groupes de 4 à partir de la gauche, nous obtenons 10000 0011 qui l’équivalent de 83 en BCD.

16
LES CODES REPRÉSENTATIFS

Addition de code BCD (8421)


La somme dépasse 9 et la retenue est égale à 0, dans ce cas l’addition se fait comme en binaire pur mais le résultat
obtenu est incorrect. Pour arriver au bon résultat, il faut additionner 6 (0110) au résultat provisoire.

168 0001 0110 1000


+
779 0111 0111 1001
947 1000 1101 10001 Le premier résultat est incorrect.
1 1 0110 (6) On ajoute au groupe de droite 6 (0110)
1110 10111 On garde le nibble et on additionne la retenue au suivant
0110 (6) Le suivant, après addition, donne une retenue
1001 10100 On garde le nibble et on additionne la retenue au suivant
1001 0100 0111 = 947

17
LES CODES REPRÉSENTATIFS

Le code Excess XS-3


Le code décimal binaire Excess-3 (XS-3), ou code de Stibitz, est un
Decimal XS-3 Decimal XS-3
système numérique non pondéré, utilisé principalement par
d'anciens processeurs pour la représentation des nombres en base 10.
0 0011 9 1100
En XS-3, les nombres sont représentés par 4 bits pour chaque chiffre
décimal, chaque chiffre étant représenté par les quatre bits de sa 1 0100 8 1011
représentation binaire, additionné de 3.
2 0101 7 1010
Le code XS-3 d'un nombre est donc similaire à son code BCD, à la
différence que chaque groupe de quatre bits est incrémenté de 3
3 0110 6 1001
4 décimal codé binaire 0100,
Pour avoir 4 en XS-3 on ajoute 011 à 0100 qui donne 0111 4 0111 5 1000
5 décimal codé binaire 0101,
18
Pour avoir 5 en XS-3 on ajoute 011 à 0101 qui donne 1000
LES CODES REPRÉSENTATIFS

Le code Excess XS-3


Decimal XS-3 Decimal XS-3
Le code Excess-3 est le seul code non pondéré auto réfléchi. Vous
remarquerez que pour passer de 0 à 9, il suffit de remplacer les 1 par 0 0011 9 1100
des 0 et les 0 par des 1 comme pour faire le complément de 1 en
binaire pur. Pour avoir 7, il suffit de prendre 2 et chercher son
1 0100 8 1011
complément de 1.

Pour convertir un nombre décimal en XS-3 code, il faut le convertir en 2 0101 7 1010
DCB et ajouter à chaque élément 001 (3)
3 0110 6 1001
127 en BCD donne ( 0001 0010 0111)
Pour avoir 127 en XS-3 on ajoute 011 à chaque élément
4 0111 5 1000
127 en XS-3 donne ( 0001+011 0010+011 0111+011)
127 en XS-3 donne ( 0100 0101 1010) 19
LES CODES REPRÉSENTATIFS

Additionner deux nombre Excess XS-3 Deci Deci


Pour additionner 2 nombres XS-3, il faut commencer par convertir les nombres en BCD, ajouter XS-3 XS-3
mal mal
3 ensuite additionner.
0 0011 9 1100
Décimal BCD XS-3
2 0010 + 011 0101 (2 XS3)
5 0101 + 011 1000 (5 XS3) 1 0100 8 1011
1101 le résultat n’est pas correct,
- 0011 pour corriger, il faut soustraire 3 si retenu =0
1010 (7 XS3) résultat correct = 7+3= 1010 2 0101 7 1010

Décimal BCD XS-3 3 0110 6 1001


1
27 0010 0111 0010+011 0111+011 0101 1010 27
39 0011 1001 0011+011 1001+011 0110 1100 + 39 4 0111 5 1000
le résultat n’est pas correct, 1100 1 0110 66
pour corriger, il faut ajouter 3 (011) si retenu =1 -0011 +0011 + 33
pour corriger, il faut enlever 3 (011) si retenu =0 1001 1001 99 20
LES CODES REPRÉSENTATIFS

Le code 2421
Le code 2421 permet de représenter une valeur numérique
inférieure ou égale à 9 avec 4 bits.
C’est un code réfléchi. Le 0 est le complément du 9, le 2, 0 0000
le complément du 8, etc. 1 0001
Pour représenter 0, nous avons 0000. Pour représenter 2, 2 0010
nous pouvons utiliser le 2 de la première colonne ou le 2 3 0011
de la troisième colonne, mais pour vous allez voir plus tard 4 0100
que pour que ce code reste réfléchi, c’est le 2 de la 5 1011
troisième colonne que nus allons utiliser. 2 s’écrit donc 6 1100
0010. Pour 3, nous aurons 0011. Pour 4 au lieu d’utiliser le 7 1101
deux 2, nous préférons utiliser 4, ce qui donne 0100. Quand 8 1110
nous arrivons à 5, pour qu’il soit le complément de 4 nous 9 1111
allons utiliser 221 au lieu de 41, ce qui nous donne 1011. 6
devient le complément de 3, 7 de 2, 8 de 1 et 9 de 0 21
LES CODES REPRÉSENTATIFS

Le code 2421, code Aiken ou 4B


Le code 2421 est identique au code binaire pur de 0 à 4,
après il faut passer de B à F hexadécimal pour avoir les
binaire pur de 4 à 9.
Nombre Code 2421
Décimal ou code Aiken
0 0000
1 0001
2 0010
3 0011
4 0100
5 1011
6 1100
7 1101
8 1110 22
9 1111
LES CODES REPRÉSENTATIFS

Le code 7421 Le code 8421


Pour le code 7421, les chiffres qui sont Pour le code 8421, les chiffres qui sont
sous le 2 et le 1 sont à soustraire. sous le 2 et le 1 sont à soustraire.
Décimal Code 7421 Décimal Code 8421

0 0000 0 0000
1 0111 1 0111
2 0110 2 0110
3 0101 3 0101
4 0100 4 0100
5 1010 5 1011
6 1001 6 1010
7 1000 7 1001
8 1111 8 1000
9 1110 9 1011 23
LES CODES REPRÉSENTATIFS

Nous venons d’étudier les principaux codes sans les terminer


totalement, je vais vous donner un tableau de classification des
codes binaires

24
LES CODES REPRÉSENTATIFS

Étant donné que quatre bits peuvent en théorie représenter 16 valeurs distinctes et que l'on se restreint à
dix valeurs possibles, on note une augmentation du nombre de bits requis pour représenter un nombre
lors de l'utilisation du format DCB. Ainsi par exemple, pour représenter la valeur 12 (1100 en binaire
naturel, 0001 0010 en DCB), il faudra utiliser 4 bits de plus au format DCB qu'en binaire naturel. Plus
généralement 8 bits permettent de coder une valeur comprise entre 0 (0000 0000) et 99 (1001 1001) en
DCB, là où l'utilisation d'un code binaire naturel permettrait de représenter des valeurs allant jusqu'à 255
(1111 1111).

25
LES CODES REPRÉSENTATIFS

Le code UTF-8
UTF-8 (Universal Character Set Transformation Format- 8 bits) est un codage de
caractères informatiques conçu pour coder l’ensemble des caractères du « répertoire
universel de caractères codés », initialement développé par l’ISO dans la norme
internationale ISO/CEI 10646, aujourd’hui totalement compatible avec le standard Unicode, en
restant compatible avec la norme ASCII limitée à l’anglais de base, mais très largement
répandue depuis des décennies.
L’UTF-8 est utilisé par 82,2 % des sites web en décembre 20142, 87,6 % en 20163, 90,5 % en
20174 et près de 93.1% en février 20195. Par sa nature, UTF-8 est d’un usage de plus en plus
courant sur Internet, et dans les systèmes devant échanger de l'information. Il s’agit
également du codage le plus utilisé dans les systèmes GNU, Linux et compatibles pour gérer
le plus simplement possible des textes et leurs traductions dans tous les systèmes d’écritures
et tous les alphabets du monde. 26
LES CODES REPRÉSENTATIFS

GBCD (6-bit)
Le code BCD (6-bit) (Binary Coded Decimal), aussi 000 001 002 003 004 005 006 007
connu sous le nom BCD pour 6-bit alphanumérique,
est un code standard de 6 bits utilisé par les grands 000 0 1 2 3 4 5 6 7
ordinateurs : Burroughs, Bull, CDC, IBM, General
Electric, NCR Corporation, Siemens, Sperry Univac, etc. 001 8 9 [ # @ : > ?
IBM a créé un code pour les cartes 002 A B C D E F G
perforées des années 1960 qui s'est étendue à d'autres
fabricants. 003 H I & . ] ( < \
Le code BCD (6-bit) fut l'adaptation du code carte
perforée en code binaire, de telle sorte qu'il pouvait se 004 ^ J K L M N O P
charger plus facilement dans la mémoire de l'ordinateur 005 Q R - $ * ) ; '
central.
Le code BCD (6-bit) est donc un code binaire, 006 ` / S T U V W X
représentant des caractères alphanumériques et des
symboles. Chaque caractère étant composé de
007 Y Z < , % = " †
6 bits (2 caractères octal), avec ces 6-bit on peut définir 000 001 002 003 004 005 006 007
un total de 64 caractères (26). 27
LES CODES REPRÉSENTATIFS

Le code EBCDIC
L'Extended Binary Coded Decimal Interchange Code
(EBCDIC) est un mode de codage des caractères sur 8
bits créé par IBM à l'époque des cartes perforées. Il existe
au moins 6 versions différentes bien documentées,
incompatibles entre elles. Ce mode de codage a été
critiqué pour cette raison, mais aussi parce que certains
caractères de ponctuation ne sont pas disponibles dans
certaines versions. Ces disparités ont parfois été
interprétées comme un moyen pour IBM de conserver ses
clients captifs.

EBCDIC est encore utilisé dans les systèmes AS/400


d’IBM ainsi que sur les mainframes sous MVS, VM ou
DOS/VSE.

Ce code qui était le précurseur du code ASCII a été


dévoilé entre 1963 et 1964 lors du lancement de la série 28
360 d’IBM. Il été crée pour améliorer le code BCD
LES CODES REPRÉSENTATIFS

Le Code Gray ou binaire réfléchi


Le Code gray ou binaire réfléchi (BR) est inventé au laboratoires Bell par Frank Gray en 1953. Il encode les entiers
de telle façon que le passage d’un nombre au suivant ne change que d’un bit.
Le code Gray est très utilisé dans les ordinateurs où le compteur de programme utilise le code Gray pour
minimiser sa consommation d’énergie. On le retrouve également dans certains systèmes de télécommunication
pour la correction des erreurs. Il a aussi été utilisé pour trouver une solution au problème de Hanoi.

Le code binaire réfléchi est employé essentiellement pour ses propriétés de symétrie et d'adjacence dans le
codage de position ou pour la simplification des équations logiques par la méthode de Karnaugh. Ce code ne peut
pas être utilisé pour des opérations arithmétiques

On dit que deux nombres ou combinaisons binaires sont adjacentes lorsqu'elles ne diffèrent que d'un
seul bit par exemple, 1100 et 1101 sont adjacents car ils ne diffèrent que par leur LSB

Le code Gray est fréquemment utilisé dans les capteurs angulaires ou de positionnement, mais aussi lorsque l'on
désire une progression numérique binaire sans parasite transitoire. 29
LES CODES REPRÉSENTATIFS

Conversion du binaire pur en Nombre


décimal
Code binaire pur Code de Gray

code Gray: variante 1 0


B3
0
B2
0
B1
0
B0
0
G3
0
G2
0
G1
0
G0
0
1 0 0 0 1 0 0 0 1
Soit un nombre N en binaire pur, pour obtenir son équivalent n 2 0 0 1 0 0 0 1 1
en binaire réfléchi, il suffit d'effectuer l'opération suivante 3 0 0 1 1 0 0 1 0
4 0 1 0 0 0 1 1 0
n=(N⊕2N)/2 5 0 1 0 1 0 1 1 1
6 0 1 1 0 0 1 0 1
Exemple : soit N = 0111, nous avons 2N = 0111+0111=1110 7 0 1 1 1 0 1 0 0
(pour multiplier par 2 on effectue un décalage de la droite vers 8 1 0 0 0 1 1 0 0
9 1 0 0 1 1 1 0 1
la gauche). On effectue maintenant l'opération OU Exclusif de 10 1 0 1 0 1 1 1 1
N et 2N qui donne 0111 xor 1110 = 1001 11 1 0 1 1 1 1 1 0
Puis nous divisons par 2 le résultat soit 1001 / 2 = 0100 (pour 12 1 1 0 0 1 0 1 0
diviser par 2 on effectue un décalage de la gauche vers la 13 1 1 0 1 1 0 1 1
14 1 1 1 0 1 0 0 1
droite). Nous avons alors pour N = 0111 en binaire pur
15 1 1 1 1 1 0 0 0
correspond n = 0100 en code Gray.
30
LES CODES REPRÉSENTATIFS

Conversion binaire pur en code Gray


Nombre Code binaire pur Code de Gray
décimal
Il y a une autre méthode pour passer du code binaire normal au code gray B3 B2 B1 B0 G3 G2 G1 G0
0 0 0 0 0 0 0 0 0
Pour convertir un nombre binaire pur en nombre binaire réfléchi, nous 1 0 0 0 1 0 0 0 1
allons observer les 3 étapes suivantes : 2 0 0 1 0 0 0 1 1
3 0 0 1 1 0 0 1 0
4 0 1 0 0 0 1 1 0
1. Écrire le nombre binaire pur et laisser le MSB comme tel 5 0 1 0 1 0 1 1 1
2. Additionner le MBS au nombre suivant en négligeant la retenue 6 0 1 1 0 0 1 0 1
3. Répéter le processus 7 0 1 1 1 0 1 0 0
8 1 0 0 0 1 1 0 0
9 1 0 0 1 1 1 0 1
1 0 1 1 a binaire pur 10 1 0 1 0 1 1 1 1
1 0 1 b 11 1 0 1 1 1 1 1 0
12 1 1 0 0 1 0 1 0
1 1 1 0 c gray ou binaire réfléchi 13 1 1 0 1 1 0 1 1
14 1 1 1 0 1 0 0 1
Cette opération consiste aussi à faire a xor b qui donne c, b étant obtenu 15 1 1 1 1 1 0 0 0

en décalant a vers la droite 31


LES CODES REPRÉSENTATIFS

Conversion d’un binaire pur en (Gray) : Nom Code


bre binaire
Code de
Gray
variante 2 déci pur
mal
Pour convertir un nombre binaire pur en nombre binaire Nous pouvons généraliser la conversion B B B B0 G G2 G1 G0
réfléchi, nous allons observer les 3 étapes suivantes: comme ceci : 3 21 3
0 0 00 0 0 0 0 0
1. Écrire le nombre binaire pur et laisser le MSB comme tel 1 0 00 1 0 0 0 1
2. Additionner le MBS au nombre suivant en négligeant la g3=b3 2 0 01 0 0 0 1 1
retenue ou faire un (xor) g2=b2 xor b3 3 0 01 1 0 0 1 0
3. Répéter le processus g1=b1 xor b2 4 0 10 0 0 1 1 0
5 0 10 1 0 1 1 1
g0=b0 xor b1
6 0 11 0 0 1 0 1
7 0 11 1 0 1 0 0
8 1 00 0 1 1 0 0
b3 b2 b1 b0 9 1 00 1 1 1 0 1
1 0 1 1 a binaire pur b3 xor b2 xor b1 xor b0 10 1 0 1 0 1 1 1 1
= = = = 11 1 0 1 1 1 1 1 0
1 0 1 b
g3 g2 g1 g0 12 1 1 0 0 1 0 1 0
1 1 1 0 c gray ou binaire réfléchi 13 1 1 0 1 1 0 1 1
g3 g2 g1 g0 14 1 1 1 0 1 0 0 1
15 1 1 1 1 1 0 32
0 0
LES CODES REPRÉSENTATIFS

Conversion d’un binaire réfléchi (Gray) en binaire pur Nombre Code binaire pur
décimal
Code de Gray

B3 B2 B1 B0 G3 G2 G1 G0
g3 g2 g1 g0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 1
1 1 1 0 a gray ou binaire réfléchi 2 0 0 1 0 0 0 1 1
1 0 1 b 3 0 0 1 1 0 0 1 0
1 0 1 1 c binaire pur 4 0 1 0 0 0 1 1 0
5 0 1 0 1 0 1 1 1
b3 b2 b1 b0
6 0 1 1 0 0 1 0 1
7 0 1 1 1 0 1 0 0
Nous pouvons généraliser la conversion comme ceci : 8 1 0 0 0 1 1 0 0
9 1 0 0 1 1 1 0 1
10 1 0 1 0 1 1 1 1
b3=g3 11 1 0 1 1 1 1 1 0
b2=b3 xor g2 12 1 1 0 0 1 0 1 0
b1=b2 xor g1 13 1 1 0 1 1 0 1 1
14 1 1 1 0 1 0 0 1
b0=b1 xor g0
15 1 1 1 1 1 0 0 0
33
LES CODES REPRÉSENTATIFS

A coté de ces codes considérés comme standard, il y a des dispositifs de correction d’erreurs que sont le bit de parité, le code Hamming,
le LRC (Logical Redondancy Check), la CRC (Cyclique Redonancy Check).

Le contrôle de parité

Le contrôle de parité est une technique de détection d’erreur dans laquelle un bit (1 ou 0) est ajouté à chaque caractère pour que le
nombre de bits total soit toujours pair (ou impair).

Le contrôle de parité (VRC – Vertical Redundancy Check ou Vertical Redundancy Checking) est un des systèmes de contrôle les plus
simples. Il consiste à ajouter un bit supplémentaire, appelé bit de parité à un certain nombre de bits de données appelé mot de code
(généralement 7 bits, pour former un octet avec le bit de parité) dont la valeur (0 ou 1) est telle que le nombre total de bits à 1 soit pair. En
clair, le contrôle de parité consiste à ajouter un 1 si le nombre de bits du mot de code est impair, 0 dans le cas contraire.

On parle de parité paire quand le nombre de 1 du mot est pair


La parité impaire quand le nombre de 1 du du mot est impair.

Les codes auto-vérificateurs ou auto-correcteurs

34
Les codes auto-vérificateurs ou auto-correcteurs sont utilisés quand le control de parité ne suffit pas. Quand la transmission entre
machine se fait sur de longues distances pouvant entrainer des parasites sur les lignes de transmission.
LES CODES REPRÉSENTATIFS

Soit un bloc de 3 nombres que l'on souhaite transmettre : 02 09 12


Le code correcteur. Ajoutons deux nombres de contrôle de l'information.
L'objectif d'un code correcteur est la détection ou la correction • Le premier est la somme des 3 nombres : 02 + 09 + 12 = 23
d'erreurs après la transmission d'un message. • Le second est la somme pondérée des 3 nombres, chacun est
multiplié par son rang : 02×1 + 09×2 + 12×3 = 56
Cette correction est permise grâce à l'ajout d'informations À la sortie du codeur, le bloc à transmettre est : 02 09 12 23 56
redondantes. Le message est plongé dans un ensemble plus À la suite d'une perturbation, le récepteur reçoit : 02 13 12 23 56
grand, la différence de taille contient la redondance, l'image du À partir des données reçues, le décodeur calcule :
message par le plongement est transmise. En cas d'altération Sa somme simple : 02 + 13 + 12 = 27
du message, la redondance est conçue pour détecter ou Sa somme pondérée : 02×1 + 13×2 + 12×3 = 64
corriger les erreurs. Un code de Hamming procède de cette
logique, la redondance permet exactement la correction d'une La différence entre la somme simple calculée (27) et celle reçue (23)
altération sur une unique lettre du message. indique la valeur de l'erreur : 4 (27-23 = 4)
La différence entre la somme pondérée calculée (64) et celle reçue (56),
On présente ici un exemple élémentaire de code correcteur elle-même divisée par la valeur de l'erreur indique la position où l'erreur
obtenu en complétant une suite de trois nombres (constituant se trouve : 2 ((64-56) / 4 = 2).
l'information à transmettre) par deux autres nombres Il faut donc retirer 4 au nombre du rang 2.
(constituant le code de contrôle de l'information). L'ensemble Le bloc original est donc 02 (13-4=09) 12 23 56
des cinq nombres permet alors de détecter et de corriger une Lors d'une transmission sans perturbation, les différences des sommes
erreur qui se serait produite sur l'un des trois premiers nombres simples et des sommes pondérées sont nulles. 35
lors de la transmission.
LES CODES REPRÉSENTATIFS

Le code Hamming D7 D6 D5 P4 D3 P2 P1
Depuis 1946 Richard Hamming (1915-1998) travaille sur un modèle de
calculateur à carte perforée de faible fiabilité. Si, durant la semaine, des D5D6D7 D3D6D7 D3D5D7
ingénieurs pouvaient corriger les erreurs, les périodes chômées comme la
fin de semaine voient les machines s'arrêter invariablement sur des bugs. D7 D6 D5 P4 D3 P2 P1
La frustration de Hamming le conduit à inventer le premier code correcteur 101 101 111
véritablement efficace.
1 0 1 0 1 0 1
Cette période correspond à la naissance de la théorie de l'information.
Claude Shannon formalise cette théorie comme une branche des
mathématiques. Hamming développe les prémisses de la théorie des Les places restantes (D3, D5, D6, D7) sont occupés par les 4
codes et décrit sa solution comme un exemple. bits de données.
Un code Hamming peut comprendre plusieurs bits. Nous allons étudier un A chaque bit de parité on associes 3 bits de données.
code Hamming de 7 bits.
P1D3D5D7 doit avoir un nombre de 1 pair
P2D3D6D7 doit avoir un nombre de 1 pair
Le code de 7 bits réserve 4 places pour les bits de données et 3 places
P4D5D6D7 doit avoir un nombre de 1 pair
pour les bits de parité.
Le mots corrects qui doit être transmis est 1010101.
Les bits de parité doivent occuper les place 2n, soit 20 (1ère place), 21=2 36
Il nous arrive d’avoir des parasites et le mot reçu présente des erreurs
(2ème place), 22=4(4ème place). Étant donné que nous travaillons sur 7 bits, que nous nous proposons de détecter et de corriger à partir des bits de
nous ne pouvons pas avoir 23 qui donne 8 et qui dépasse les 7 bits. parité et les bits de données qui leur sont associés.
LES CODES REPRÉSENTATIFS

Le code Hamming D7 D6 D5 P4 D3 P2 P1

Nous nous proposons de détecter et de corriger le mot suivant: 101 001 011

1011011 1 0 1 1 0 1 1

A chaque bit de parité, nous allons accoler les données et vérifier


si la parité est paire. La parité paire suppose que le nombre de 1 est pair. P1 D3 D5 D7 P1
Les parités cherchées sont celles de P1D3D5D5, P2D3D6D7 et P4D5D6D7 1 0 1 1 1
Si la parité n’est pas bonne, nous mettons P à 1.
Si la parité est bonne, nous P à 0
P2 D3 D6 D7 P2
P1
Ensuite, nous cherchons l’équivalent décimal de (P1,P2,P4) pour 1 0 0 1 0
détecter le bit erronée. Ensuite nous procédons à sa correction.
P4 D5 D6 D7 P4
P1
(P1P2P4) = (101) =5.
1 1 0 1 1
L’erreur provient de D5=0, nous allons le corriger en mettant 1 à
la place du 0. Le mot corrigé devient alors 37
1001011

Vous aimerez peut-être aussi