Leçon 3 sur 18

Chapitre 3 — Codes numériques

Niveau conseillé : Bac+1 / Bac+2 — Cycle préparatoire, BTS, BUT, Licence

Finalité du chapitre
Comprendre comment une information numérique est représentée par un mot binaire, choisir un code adapté à une application, convertir entre les principaux codes et contrôler la cohérence d’une transmission à l’aide de la parité.

Présentation du chapitre

Un système numérique ne traite pas directement les objets du monde réel : nombres décimaux, caractères, positions mécaniques, symboles ou commandes. Il traite des suites de bits. Le codage établit donc une correspondance précise entre une information et un mot binaire. Cette correspondance doit être connue à la fois par le dispositif qui produit les données et par celui qui les interprète.

Un même motif binaire peut avoir plusieurs significations selon le code choisi. Par exemple, 0101 peut représenter l’entier 5 en binaire naturel, le chiffre décimal 5 en BCD, une position dans un code Gray, un ensemble de quatre indicateurs logiques ou une partie d’un caractère. Les bits seuls ne suffisent donc pas : leur convention d’interprétation est essentielle.

Ce chapitre étudie successivement le code binaire naturel, le code BCD, le code Gray, les codes alphanumériques et les codes simples de détection d’erreur. L’objectif n’est pas seulement de mémoriser des tableaux, mais de comprendre pourquoi chaque code existe, comment le construire, comment le convertir et dans quelles situations il est pertinent.

Objectifs pédagogiques

À la fin du chapitre, l’étudiant sera capable de…

Indicateur de maîtrise

expliquer le rôle d’un code numériquedistinguer information, mot de code, codage et décodage
coder un entier non signé en binaire naturelchoisir le nombre de bits et vérifier la plage représentable
coder et décoder un nombre en BCD 8421traiter séparément chaque chiffre décimal et repérer les mots interdits
comparer binaire naturel et BCDjustifier le choix d’un code selon l’application
convertir un nombre entre binaire naturel et code Grayappliquer correctement les relations XOR dans les deux sens
interpréter les principes d’ASCII et d’Unicodeidentifier la différence entre caractère, point de code et encodage
calculer un bit de parité paire ou impaireconstruire et vérifier un mot transmis
évaluer les limites d’un code de détectionindiquer quelles erreurs peuvent rester indétectées
Prérequis
Systèmes de numération, conversion binaire-décimal, opérations XOR élémentaires et notion de mot binaire.

Title: Figure 1 — Une information doit être codée avant d’être stockée, transmise ou traitée numériquement. - Description: Figure 1 — Une information doit être codée avant d’être stockée, transmise ou traitée numériquement.

Figure 1 — Une information doit être codée avant d’être stockée, transmise ou traitée numériquement.

3.0. Notions fondamentales sur le codage

3.0.1. Définition d’un code numérique

Un code numérique est une règle qui associe à chaque symbole ou valeur d’un ensemble source un mot formé de symboles numériques, le plus souvent des bits. Le codage est l’opération qui produit le mot de code ; le décodage est l’opération inverse qui permet de retrouver l’information représentée.

Terme

Définition

Exemple

Alphabet sourceensemble des informations à représenterles dix chiffres décimaux 0 à 9
Alphabet du codesymboles utilisés pour construire les mots0 et 1 pour un code binaire
Mot de codesuite de symboles représentant une information1001 pour le chiffre 9 en BCD
Longueur du motnombre de bits du mot de code4 bits dans le BCD 8421
Codagepassage de l’information au mot de code9 → 1001
Décodageinterprétation du mot de code1001 → chiffre 9
Point essentiel
Le motif binaire n’a pas de signification universelle. Sa signification dépend du code, du format et du contexte d’utilisation.

3.0.2. Capacité d’un mot binaire

Avec n bits, on peut construire 2ⁿ combinaisons distinctes. Pour coder M symboles différents avec des mots de longueur fixe, il faut choisir le plus petit entier n tel que 2ⁿ ≥ M. Si 2ⁿ est supérieur à M, certaines combinaisons restent inutilisées ou peuvent être réservées à des fonctions particulières.

Nombre de combinaisons = 2ⁿ     et     n minimal = ⌈log₂(M)⌉

Exemple 1 — Nombre de bits nécessaire

On souhaite coder 10 chiffres décimaux différents.

Avec 3 bits : 2³ = 8 combinaisons, ce qui est insuffisant.

Avec 4 bits : 2⁴ = 16 combinaisons, ce qui est suffisant.

Le code BCD utilise donc 4 bits par chiffre ; 6 combinaisons restent inutilisées.

3.0.3. Codes pondérés et non pondérés

Dans un code pondéré, chaque position possède un poids fixe. La valeur représentée est obtenue en additionnant les poids associés aux bits égaux à 1. Le binaire naturel et le BCD 8421 sont des codes pondérés. Dans un code non pondéré, cette règle d’addition ne suffit pas ; il faut utiliser une table ou une méthode de conversion. Le code Gray est un code non pondéré.

Famille

Principe

Exemples

Intérêt principal

Code pondéréchaque position possède un poidsbinaire naturel, BCD 8421calcul et interprétation directe
Code non pondérépas de valeur fixe par positionGraypropriété de transition
Code numériquereprésente des nombres ou chiffresbinaire, BCD, Graycalcul, affichage, mesure
Code alphanumériquereprésente caractères et symbolesASCII, Unicodetexte et échange de données
Code détecteurajoute de la redondance contrôléeparitédétection d’erreurs

3.0.4. Codes complets, incomplets et redondance

Un code est complet lorsque toutes les combinaisons possibles sont associées à une information utile. Il est incomplet lorsque certaines combinaisons ne sont pas utilisées. Cette inutilisation peut être un simple gaspillage de capacité, mais elle peut aussi devenir une ressource : mots réservés, détection d’une valeur invalide ou extension future.

La redondance désigne l’ajout d’informations qui ne sont pas indispensables pour représenter la donnée, mais qui facilitent sa vérification, sa synchronisation ou sa correction. Le bit de parité est un exemple minimal de redondance : un bit supplémentaire est calculé à partir des bits utiles.

3.1. Code binaire naturel

3.1.1. Principe général

Le code binaire naturel associe à chaque entier non signé son écriture en base 2. Les positions possèdent les poids 1, 2, 4, 8, 16, etc. Il s’agit d’un code pondéré de poids 2⁰, 2¹, 2², … en allant du bit de poids faible vers le bit de poids fort.

Valeur = bₙ₋₁·2ⁿ⁻¹ + … + b₂·2² + b₁·2¹ + b₀·2⁰

Exemple 2 — Décodage d’un mot binaire naturel

101101₂ = 1×32 + 0×16 + 1×8 + 1×4 + 0×2 + 1×1

= 32 + 8 + 4 + 1 = 45₁₀.

3.1.2. Codage d’un entier sur une longueur fixe

Dans un circuit, la longueur du mot est fixée. Le nombre binaire est donc complété à gauche par des zéros jusqu’à obtenir la longueur requise. Ces zéros de tête ne changent pas la valeur, mais ils déterminent la taille du registre, du bus ou de la mémoire qui transporte la donnée.

Valeur décimale

Écriture minimale

Sur 4 bits

Sur 8 bits

0

0

0000

00000000

1

1

0001

00000001

5

101

0101

00000101

9

1001

1001

00001001

15

1111

1111

00001111

Attention
Un zéro ajouté à gauche ne change pas la valeur. Un zéro ajouté à droite multiplie la valeur entière par 2.

3.1.3. Plage représentable et choix du nombre de bits

Sur n bits non signés, la plus petite valeur est 0 et la plus grande est 2ⁿ − 1. Avant de choisir un format, il faut donc connaître la valeur maximale attendue. Un format insuffisant produit un dépassement de capacité ; un format excessif augmente la consommation de mémoire ou la largeur du matériel.

Nombre de bits

Combinaisons

Plage non signée

Exemple d’usage

1

2

0 à 1

état logique

2

4

0 à 3

sélection parmi 4 voies

4

16

0 à 15

chiffre hexadécimal

8

256

0 à 255

octet, couleur ou capteur simple

10

1 024

0 à 1 023

convertisseur 10 bits

12

4 096

0 à 4 095

convertisseur 12 bits

16

65 536

0 à 65 535

compteur ou registre 16 bits

Exemple 3 — Dimensionnement d’un compteur

Un compteur doit représenter les valeurs de 0 à 999, soit 1 000 états.

2⁹ = 512 est insuffisant ; 2¹⁰ = 1 024 est suffisant.

Il faut donc au moins 10 bits en binaire naturel.

3.1.4. Succession des mots et comptage

L’ordre naturel des mots binaires suit le comptage en base 2. Lorsque la valeur augmente d’une unité, plusieurs bits peuvent changer simultanément. Par exemple, le passage de 7 à 8 transforme 0111 en 1000 : les quatre bits changent. Cette propriété est sans difficulté dans un calcul synchrone, mais elle peut provoquer des lectures transitoires dans certains capteurs mécaniques ; le code Gray répond précisément à ce problème.

Décimal

Binaire sur 4 bits

Nombre de bits modifiés depuis la valeur précédente

0

0000

1

0001

1

2

0010

2

3

0011

1

4

0100

3

5

0101

1

6

0110

2

7

0111

1

8

1000

4

3.1.5. Avantages, limites et applications

Aspect

Analyse

Avantagesreprésentation compacte ; correspondance directe avec l’arithmétique binaire ; traitement simple par additionneurs, compteurs et processeurs
Limiteslecture humaine difficile pour de longues suites ; plusieurs bits peuvent changer lors d’une transition ; pas de détection d’erreur intégrée
Applicationscalcul numérique, adresses, compteurs, registres, convertisseurs analogique-numérique, données de capteurs

3.2. Code BCD

3.2.1. Principe du Binary Coded Decimal

BCD signifie Binary Coded Decimal, c’est-à-dire décimal codé en binaire. Dans le code BCD 8421, chaque chiffre décimal est codé séparément sur quatre bits en utilisant son équivalent binaire de 0 à 9. Les poids des quatre positions sont 8, 4, 2 et 1, d’où l’appellation 8421.

Chiffre décimal

BCD 8421

Somme des poids actifs

Validité

0

0000

0

valide

1

0001

1

valide

2

0010

2

valide

3

0011

2 + 1

valide

4

0100

4

valide

5

0101

4 + 1

valide

6

0110

4 + 2

valide

7

0111

4 + 2 + 1

valide

8

1000

8

valide

9

1001

8 + 1

valide

1010 à 1111

10 à 15

interdit en BCD 8421

Six mots interdits
Les combinaisons 1010, 1011, 1100, 1101, 1110 et 1111 ne représentent aucun chiffre décimal dans le code BCD 8421.

3.2.2. Méthode de codage d’un nombre décimal

1. Séparer le nombre en chiffres décimaux individuels.

2. Remplacer chaque chiffre par son mot BCD sur quatre bits.

3. Conserver l’ordre des chiffres et regrouper visuellement les quartets.

4. Vérifier que chaque groupe appartient à l’intervalle 0000–1001.

Exemple 4 — Codage de 507₁₀ en BCD

5 → 0101

0 → 0000

7 → 0111

Ainsi 507₁₀ = 0101 0000 0111 en BCD.

Exemple 5 — Décodage d’un mot BCD

0011 1000 0010 est séparé en trois groupes : 0011 | 1000 | 0010.

0011 → 3 ; 1000 → 8 ; 0010 → 2.

Le nombre représenté est donc 382₁₀.

3.2.3. Différence entre binaire naturel et BCD

Il ne faut jamais convertir le nombre décimal entier en binaire puis déclarer que le résultat est du BCD. Le binaire naturel code la valeur globale ; le BCD code chaque chiffre décimal. Les deux représentations ne coïncident que pour les valeurs de 0 à 9.

 

Figure 2 — Comparaison du binaire naturel et du BCD pour une même valeur décimale.

Valeur décimale

Binaire naturel

BCD 8421

Observation

7

0111

0111

identiques car un seul chiffre inférieur à 10

10

1010

0001 0000

représentations différentes

25

11001

0010 0101

5 bits contre 8 bits

59

111011

0101 1001

valeur globale contre deux chiffres

99

1100011

1001 1001

7 bits contre 8 bits

255

11111111

0010 0101 0101

8 bits contre 12 bits

3.2.4. Efficacité et nombre de bits nécessaires

Le BCD est moins compact que le binaire naturel, car quatre bits peuvent représenter 16 combinaisons mais seulement 10 sont utilisées. Pour un nombre décimal de d chiffres, le BCD exige exactement 4d bits. Le binaire naturel exige environ d·log₂(10), soit 3,322d bits. L’écart devient important lorsque les nombres sont longs.

Exemple 6 — Comparaison de capacité

Le nombre 999 nécessite 3 chiffres BCD, donc 12 bits.

En binaire naturel, 999 = 1111100111₂, soit 10 bits.

Le BCD utilise deux bits supplémentaires, mais il conserve directement la structure décimale.

3.2.5. BCD compacté et BCD non compacté

Dans un stockage compacté, deux chiffres BCD occupent un octet : un chiffre dans le quartet de poids fort et un chiffre dans le quartet de poids faible. Dans un stockage non compacté, chaque chiffre occupe généralement un octet complet ; le quartet supérieur peut être nul ou réservé à une indication de signe.

Format

Organisation

Exemple pour 47

Avantage

BCD compactédeux chiffres par octet0100 0111économie de mémoire
BCD non compactéun chiffre par octet0000 0100  0000 0111traitement individuel plus simple

3.2.6. Addition BCD et correction par 6

L’addition de deux chiffres BCD commence par une addition binaire sur quatre bits. Le résultat est directement valide s’il est compris entre 0000 et 1001 et s’il n’y a pas de retenue. S’il est supérieur à 1001 ou s’il produit une retenue, on ajoute 0110₂, c’est-à-dire 6, pour obtenir le chiffre BCD correct et transmettre une retenue décimale au quartet suivant.

1. Additionner les deux quartets BCD et la retenue éventuelle.

2. Tester si le résultat dépasse 1001₂ ou si une retenue de sortie est présente.

3. Si nécessaire, ajouter 0110₂.

4. Conserver les quatre bits faibles comme chiffre BCD et reporter la retenue décimale.

Exemple 7 — Addition BCD de 5 et 7

0101 + 0111 = 1100₂, soit 12 : ce quartet est interdit en BCD.

Correction : 1100 + 0110 = 1 0010.

Le résultat BCD est 0001 0010, c’est-à-dire 12₁₀.

Exemple 8 — Addition BCD de 28 et 35

Unités : 1000 + 0101 = 1101, invalide ; + 0110 = 1 0011 → chiffre 3 et retenue 1.

Dizaines : 0010 + 0011 + 1 = 0110 → chiffre 6.

Résultat : 0110 0011 BCD = 63₁₀.

3.2.7. Affichage décimal et afficheur sept segments

Le BCD est particulièrement adapté aux systèmes qui doivent afficher des valeurs décimales. Un décodeur BCD-vers-sept-segments reçoit un quartet BCD et commande les segments a à g nécessaires à l’affichage du chiffre correspondant. Cette architecture évite de reconvertir en permanence une valeur destinée à l’utilisateur.

Chiffre

Segments allumés

Mot BCD

0

a, b, c, d, e, f

0000

1

b, c

0001

2

a, b, d, e, g

0010

3

a, b, c, d, g

0011

4

b, c, f, g

0100

5

a, c, d, f, g

0101

6

a, c, d, e, f, g

0110

7

a, b, c

0111

8

a, b, c, d, e, f, g

1000

9

a, b, c, d, f, g

1001

3.2.8. Avantages, limites et applications

Aspect

Analyse

Avantagesconversion décimale simple ; affichage direct ; représentation exacte de chiffres décimaux ; utile pour les calculs financiers décimaux
Limitesutilisation inefficace des bits ; arithmétique plus complexe ; présence de mots interdits
Applicationscalculatrices, horloges, compteurs d’énergie, instruments de mesure, terminaux, systèmes financiers et afficheurs numériques

3.3. Code Gray

3.3.1. Principe du changement d’un seul bit

Le code Gray, également appelé code binaire réfléchi, est construit de manière que deux valeurs successives ne diffèrent que par un seul bit. Cette propriété réduit le risque d’obtenir une valeur transitoire très éloignée de la valeur réelle lorsqu’un capteur ou un contact mécanique change d’état.

 

Figure 3 — Dans une séquence Gray cyclique, chaque mot est adjacent au précédent et au suivant.

Pourquoi cette propriété est utile
Dans un code binaire naturel, 0111 → 1000 exige quatre changements. Si les contacts ne commutent pas exactement au même instant, des mots intermédiaires erronés peuvent apparaître. En Gray, la transition correspondante ne modifie qu’un bit.

3.3.2. Construction par réflexion

Le code Gray réfléchi peut être construit récursivement. On part du code sur un bit : 0, 1. Pour passer à n+1 bits, on recopie la liste dans l’ordre puis dans l’ordre inverse. On préfixe la première moitié par 0 et la seconde moitié par 1.

Étape

Liste obtenue

Explication

1 bit0, 1liste initiale
2 bits00, 01, 11, 100 + liste ; 1 + liste réfléchie
3 bits000, 001, 011, 010, 110, 111, 101, 100même principe appliqué au code sur 2 bits

3.3.3. Tableau binaire–Gray sur quatre bits

Décimal

Binaire naturel

Code Gray

0

0000

0000

1

0001

0001

2

0010

0011

3

0011

0010

4

0100

0110

5

0101

0111

6

0110

0101

7

0111

0100

8

1000

1100

9

1001

1101

10

1010

1111

11

1011

1110

12

1100

1010

13

1101

1011

14

1110

1001

15

1111

1000

3.3.4. Conversion du binaire vers le Gray

La conversion peut être réalisée bit par bit avec l’opération XOR. Le bit de poids fort du Gray est identique au bit de poids fort du binaire. Chaque autre bit Gray est le XOR de deux bits binaires adjacents.

gₙ₋₁ = bₙ₋₁    et     gᵢ = bᵢ₊₁ ⊕ bᵢ

1. Recopier le bit binaire de poids fort.

2. Calculer le XOR entre chaque bit binaire et son voisin immédiatement à gauche.

3. Écrire les résultats dans le même ordre pour former le mot Gray.

Exemple 9 — Binaire 1011 vers Gray

Bit de poids fort : g₃ = b₃ = 1.

g₂ = b₃ ⊕ b₂ = 1 ⊕ 0 = 1.

g₁ = b₂ ⊕ b₁ = 0 ⊕ 1 = 1.

g₀ = b₁ ⊕ b₀ = 1 ⊕ 1 = 0.

Donc 1011₂ devient 1110 en Gray.

Formule compacte
Pour un entier b, son code Gray est g = b ⊕ (b décalé d’un bit vers la droite).

3.3.5. Conversion du Gray vers le binaire

La conversion inverse est cumulative. Le bit binaire de poids fort est recopié. Chaque bit binaire suivant est le XOR du bit binaire déjà retrouvé à gauche avec le bit Gray courant.

bₙ₋₁ = gₙ₋₁    et     bᵢ = bᵢ₊₁ ⊕ gᵢ

1. Recopier le bit Gray de poids fort comme premier bit binaire.

2. Calculer le XOR entre le bit binaire précédent et le bit Gray courant.

3. Poursuivre jusqu’au bit de poids faible.

Exemple 10 — Gray 1110 vers binaire

b₃ = g₃ = 1.

b₂ = b₃ ⊕ g₂ = 1 ⊕ 1 = 0.

b₁ = b₂ ⊕ g₁ = 0 ⊕ 1 = 1.

b₀ = b₁ ⊕ g₀ = 1 ⊕ 0 = 1.

Le résultat est 1011₂, soit 11₁₀.

3.3.6. Exemple d’un codeur de position absolue

Un codeur rotatif absolu comporte plusieurs pistes concentriques et des capteurs. Chaque piste fournit un bit. En binaire naturel, une frontière entre deux positions peut nécessiter la commutation de plusieurs pistes. Une légère différence mécanique ou électrique peut alors créer un mot temporaire incorrect. En code Gray, une seule piste change à chaque frontière ; l’erreur transitoire est fortement limitée.

Exemple 11 — Transition critique

En binaire naturel : 7 = 0111 et 8 = 1000. Quatre bits doivent changer.

Une lecture instantanée pourrait, par exemple, observer 0000 ou 1111 pendant la transition.

Dans le Gray sur 4 bits : 7 = 0100 et 8 = 1100. Seul le bit de poids fort change.

3.3.7. Code cyclique, distance et limites

Le code Gray réfléchi est cyclique : le dernier mot et le premier mot ne diffèrent eux aussi que par un bit. La distance de Hamming entre deux mots successifs est donc égale à 1. Cette propriété ne signifie toutefois pas que le Gray détecte ou corrige les erreurs ; elle concerne uniquement l’ordre des transitions prévues.

Propriété

Conséquence

Adjacenceun seul bit change entre deux valeurs successives
Cyclicitéla dernière et la première valeur sont également adjacentes
Non pondéréla valeur ne se calcule pas par simple somme de poids
Pas d’arithmétique directeles additions et soustractions nécessitent généralement une conversion en binaire
Pas de détection garantieun bit erroné peut produire un autre mot Gray valide

3.3.8. Applications

  • codeurs rotatifs et linéaires de position ;
  • capteurs mécaniques ou optiques ;
  • adressage asynchrone dans certaines mémoires FIFO ;
  • convertisseurs analogique-numérique de type flash ;
  • organisation des cartes de Karnaugh afin que les cases adjacentes ne diffèrent que d’une variable.

3.4. Codes alphanumériques

3.4.1. Pourquoi coder les caractères ?

Un ordinateur ne stocke pas directement une lettre, un signe de ponctuation ou un symbole mathématique. Chaque caractère est associé à un nombre appelé valeur de code ou point de code. Ce nombre est ensuite représenté par des octets selon une convention d’encodage. Pour échanger correctement du texte, l’émetteur et le récepteur doivent utiliser la même convention.

Trois notions à distinguer
Le caractère est le symbole abstrait ; le point de code est le numéro qui lui est attribué ; l’encodage définit la suite d’octets utilisée pour stocker ou transmettre ce numéro.

3.4.2. Code ASCII

ASCII signifie American Standard Code for Information Interchange. Le code ASCII d’origine utilise 7 bits et définit 128 valeurs, de 0 à 127. Il comprend des caractères de contrôle, les chiffres, les lettres latines non accentuées, la ponctuation et plusieurs symboles.

Plage décimale

Catégorie

Exemples

0 à 31caractères de contrôleNUL, tabulation, retour à la ligne
32espaceSPACE
33 à 47ponctuation et symboles!, ", #, $, %, &, …
48 à 57chiffres0 à 9
58 à 64symboles:, ;, <, =, >, ?, @
65 à 90lettres majusculesA à Z
91 à 96symboles[, \, ], ^, _, `
97 à 122lettres minusculesa à z
123 à 126symboles{, |, }, ~
127contrôleDEL

3.4.3. Valeurs ASCII courantes et propriétés utiles

Caractère

Décimal

Hexadécimal

Binaire sur 7 bits

espace

32

20

0100000

0

48

30

0110000

1

49

31

0110001

9

57

39

0111001

A

65

41

1000001

B

66

42

1000010

Z

90

5A

1011010

a

97

61

1100001

b

98

62

1100010

z

122

7A

1111010

retour à la ligne

10

0A

0001010

Les chiffres ASCII sont consécutifs : pour convertir un caractère '0' à '9' en valeur numérique, on peut soustraire le code de '0'. Les lettres majuscules et minuscules forment également deux plages consécutives. En ASCII, l’écart entre une lettre majuscule et la minuscule correspondante est 32 en décimal.

Exemple 12 — Codage du mot « BAC » en ASCII

B = 66₁₀ = 42₁₆ = 1000010₂

A = 65₁₀ = 41₁₆ = 1000001₂

C = 67₁₀ = 43₁₆ = 1000011₂

Le texte est stocké comme une suite de valeurs, généralement placées chacune dans un octet.

3.4.4. ASCII étendu : une appellation ambiguë

L’expression ASCII étendu désigne différentes tables sur 8 bits qui réutilisent les valeurs ASCII 0 à 127 et affectent les valeurs 128 à 255 à d’autres caractères. Il n’existe pas une seule table universelle : plusieurs pages de codes ont coexisté. Un octet supérieur à 127 peut donc représenter des caractères différents selon la page de codes.

Conséquence pratique
Un texte peut devenir illisible lorsqu’il est décodé avec une page de codes différente de celle utilisée lors de sa création. Unicode a été développé pour fournir un répertoire beaucoup plus large et cohérent.

3.4.5. Principe d’Unicode

Unicode attribue un point de code unique à un très grand nombre de caractères issus de nombreux systèmes d’écriture, ainsi qu’à des symboles techniques et pictographiques. Un point de code est généralement écrit sous la forme U+ suivi d’une valeur hexadécimale, par exemple U+0041 pour la lettre A.

Unicode ne doit pas être confondu avec un encodage unique. Les points de code peuvent être représentés par différents formats, notamment UTF-8, UTF-16 et UTF-32. Le choix de l’encodage détermine le nombre d’octets et leur organisation.

Notion

Rôle

Exemple

Caractèresymbole abstraitA, é, م, Ω
Point de code Unicodeidentifiant numérique du caractèreA = U+0041
Encodagerègle de transformation en octetsUTF-8, UTF-16, UTF-32
Police de caractèresforme graphique affichéeLiberation Sans, Arial, etc.

3.4.6. UTF-8, UTF-16 et UTF-32

Encodage

Taille utilisée

Compatibilité ASCII

Caractéristique principale

UTF-81 à 4 octetsoui pour les valeurs 0–127très répandu sur le Web et dans les fichiers texte
UTF-162 ou 4 octetsnon octet pour octetunités de 16 bits ; utilisé dans certains environnements
UTF-324 octetsnontaille fixe mais consommation mémoire élevée

Exemple 13 — Compatibilité ASCII de UTF-8

Le caractère A possède le point de code U+0041.

En UTF-8, il est représenté par l’octet 41₁₆, identique à sa valeur ASCII.

Les caractères non ASCII utilisent plusieurs octets en UTF-8.

3.4.7. Erreurs d’encodage courantes

  • interpréter des octets UTF-8 avec une page de codes ancienne ;
  • couper une séquence multi-octets au milieu d’un caractère ;
  • confondre nombre de caractères, nombre de points de code et nombre d’octets ;
  • supposer qu’un caractère affiché correspond toujours à un seul octet ;
  • utiliser une police qui ne contient pas le glyphe correspondant au point de code.

3.4.8. Choix d’un code de caractères

Pour un nouveau système, UTF-8 constitue généralement un choix adapté pour les échanges et le stockage de texte multilingue. ASCII reste utile pour comprendre les protocoles simples, les commandes, les chiffres et la compatibilité historique. Dans tous les cas, l’encodage doit être déclaré, conservé et interprété de manière cohérente sur l’ensemble de la chaîne.

3.5. Codes de détection d’erreur

3.5.1. Pourquoi ajouter de la redondance ?

Une donnée peut être altérée pendant une transmission ou un stockage à cause du bruit électrique, d’une perturbation électromagnétique, d’un défaut de liaison ou d’une défaillance matérielle. Un système fiable ajoute souvent des bits de contrôle calculés à partir des données. Le récepteur recalcule le contrôle et compare le résultat attendu au résultat reçu.

Un code détecteur d’erreur ne garantit pas que toutes les erreurs seront repérées. Son efficacité dépend de la quantité de redondance, de la règle de calcul et du type d’erreurs que l’on souhaite détecter. Le bit de parité est la méthode la plus simple.

3.5.2. Bit de parité paire

En parité paire, le bit de parité est choisi de manière que le nombre total de bits égaux à 1, données et parité comprises, soit pair. Si les données contiennent déjà un nombre pair de 1, le bit de parité vaut 0. Si elles contiennent un nombre impair de 1, il vaut 1.

pₚₐᵢᵣₑ = d₀ ⊕ d₁ ⊕ … ⊕ dₙ₋₁

Données

Nombre de 1

Bit de parité paire

Mot transmis

0000

0

0

0000 0

0001

1

1

0001 1

1011

3

1

1011 1

1100

2

0

1100 0

1111

4

0

1111 0

Exemple 14 — Parité paire

Données : 1011001. Le mot contient quatre bits à 1, donc un nombre pair.

Le bit de parité paire vaut 0.

Le mot transmis est 1011001 0.

 

Figure 4 — Génération et contrôle d’un bit de parité paire avec des opérations XOR.

3.5.3. Bit de parité impaire

En parité impaire, le nombre total de bits à 1 doit être impair. Le bit de parité impaire est donc l’inverse du bit de parité paire calculé sur les mêmes données.

pᵢₘₚₐᵢᵣₑ = ¬(d₀ ⊕ d₁ ⊕ … ⊕ dₙ₋₁)

Données

Nombre de 1

Parité paire

Parité impaire

0000

0

0

1

0001

1

1

0

1011

3

1

0

1100

2

0

1

1111

4

0

1

3.5.4. Contrôle à la réception

Le récepteur calcule le XOR de tous les bits reçus, y compris le bit de parité. Avec une parité paire, un résultat égal à 0 indique que le nombre de 1 est pair et que le mot est cohérent avec la règle. Un résultat égal à 1 indique une incohérence et donc une erreur détectée.

1. Recevoir les bits de données et le bit de parité.

2. Calculer le XOR de l’ensemble du mot.

3. Comparer le résultat à la convention attendue.

4. Signaler l’erreur ou rejeter la donnée en cas d’incohérence.

Exemple 15 — Détection d’une erreur simple

Mot transmis en parité paire : 1011001 0.

Après une erreur sur un bit, le récepteur reçoit 1010001 0.

Le nombre de bits à 1 devient impair ; le contrôle XOR vaut 1.

L’erreur est détectée, mais sa position n’est pas connue.

3.5.5. Ce que la parité détecte et ne détecte pas

Une erreur sur un seul bit change nécessairement la parité : elle est toujours détectée. Plus généralement, toute modification d’un nombre impair de bits change la parité. En revanche, une modification d’un nombre pair de bits conserve la parité et peut rester indétectée.

Type d’altération

Parité modifiée ?

Détection garantie ?

1 bit inversé

oui

oui

2 bits inversés

non

non

3 bits inversés

oui

oui

4 bits inversés

non

non

perte ou ajout de bit

dépend du protocole

pas par la parité seule

permutation de bits

non

non

Limite fondamentale
Un contrôle de parité indique qu’une incohérence existe, mais il ne localise pas le bit erroné et ne permet pas de corriger directement la donnée.

3.5.6. Parité longitudinale et parité bidimensionnelle

Lorsque plusieurs mots sont organisés en tableau, on peut calculer une parité pour chaque ligne et une parité pour chaque colonne. Cette parité bidimensionnelle augmente la redondance et peut localiser une erreur simple à l’intersection d’une ligne et d’une colonne incorrectes. Elle reste toutefois limitée face à certaines configurations d’erreurs multiples.

Exemple 16 — Principe de localisation

Chaque ligne reçoit un bit de parité horizontale.

Chaque colonne reçoit un bit de parité verticale.

Si une seule donnée est inversée, une ligne et une colonne deviennent incorrectes.

Leur intersection indique la position probable du bit erroné.

3.5.7. Ouverture vers des codes plus puissants

Pour des liaisons ou stockages exigeants, on utilise des mécanismes plus robustes : somme de contrôle, contrôle de redondance cyclique, codes de Hamming ou autres codes correcteurs. Ils ajoutent davantage de redondance et peuvent détecter des motifs d’erreur plus complexes, voire corriger certaines erreurs. Leur étude détaillée dépasse le cadre de ce chapitre, mais le principe général reste identique : calculer des informations de contrôle à partir des données.

3.6. Choisir un code selon l’application

Le meilleur code n’est pas celui qui possède le plus de propriétés, mais celui qui répond correctement au besoin tout en conservant une complexité acceptable. Avant de choisir, il faut identifier la nature de l’information, les opérations prévues, la contrainte de transition, le besoin d’affichage et le niveau de fiabilité attendu.

Besoin principal

Code adapté

Justification

calculer sur des entiers non signésbinaire naturelreprésentation compacte et arithmétique directe
afficher ou saisir des chiffres décimauxBCD 8421chaque chiffre est directement disponible
mesurer une position avec contacts ou pistesGrayun seul bit change entre positions successives
échanger du texte simple historiqueASCIItable compacte et largement comprise
échanger du texte multilingueUnicode avec UTF-8répertoire très large et format d’échange courant
détecter une erreur simple à faible coûtbit de paritéun seul bit de redondance et circuit XOR simple

3.7. Méthode générale de résolution

1. Identifier le code demandé et ne pas interpréter les bits avant d’avoir fixé la convention.

2. Déterminer la longueur des mots et la manière de les regrouper.

3. Appliquer la méthode propre au code : poids, groupes BCD, XOR Gray, table ASCII ou règle de parité.

4. Vérifier la validité de chaque groupe et repérer les mots interdits.

5. Effectuer une conversion inverse ou un contrôle indépendant.

6. Conclure en indiquant clairement la valeur, le code et la longueur utilisée.

Situation

Question de contrôle

Binaire naturella valeur appartient-elle à la plage de n bits ?
BCDchaque quartet est-il compris entre 0000 et 1001 ?
Grayles XOR ont-ils été appliqués dans le bon sens ?
ASCII/Unicodes’agit-il d’un point de code ou d’une suite d’octets ?
Paritéla convention paire ou impaire a-t-elle été précisée ?

3.8. Activité pratique proposée

Station de codage, conversion et contrôle

L’activité peut être réalisée avec un simulateur logique, un tableur ou un petit montage comprenant des interrupteurs, des portes XOR, des LED et éventuellement un afficheur sept segments. Les étudiants travaillent par groupes et documentent chaque étape.

Étape

Travail demandé

Résultat attendu

1. Binaire naturelcoder plusieurs valeurs sur 8 bits et vérifier la plagetable décimal–binaire validée
2. BCDcoder une valeur à trois chiffres et commander un décodeur sept segmentsaffichage cohérent des trois chiffres
3. Graygénérer la séquence sur 3 ou 4 bits et vérifier l’adjacenceun seul bit varie entre mots successifs
4. ASCIIencoder un court mot en décimal, hexadécimal et binairesuite d’octets correctement documentée
5. Paritéajouter un bit de parité puis inverser volontairement un biterreur simple détectée par le contrôleur
6. Analysecomparer coût, lisibilité, transition et fiabilitétableau argumenté de choix de code
Compte rendu attendu
Objectif, schéma ou capture du montage, tableaux de résultats, vérifications, analyse des erreurs observées et conclusion sur le choix de chaque code.

Synthèse du chapitre

Notion

À retenir

Code numériqueassociation conventionnelle entre une information et un mot binaire
Binaire naturelcode pondéré compact adapté au calcul des entiers non signés
BCD 8421quatre bits par chiffre décimal ; six mots interdits par quartet
Graycode non pondéré dans lequel un seul bit change entre valeurs successives
ASCIIcode historique sur 7 bits pour 128 caractères et commandes
Unicoderépertoire de points de code représentés par des encodages tels que UTF-8
Paritébit de contrôle qui détecte toute modification d’un nombre impair de bits
Redondanceinformation supplémentaire utilisée pour vérifier ou protéger les données
Fil directeur
Nature de l’information → choix du code → construction du mot → contrôle de validité → décodage → vérification.

Glossaire essentiel

Terme

Définition concise

Alphabetensemble des symboles utilisés dans une source ou un code.
Mot de codesuite de bits associée à une information.
Code pondérécode dans lequel chaque position possède un poids fixe.
Code non pondérécode dont la valeur ne se déduit pas par une simple somme de poids.
BCDcodage séparé de chaque chiffre décimal sur quatre bits.
Mot interditcombinaison possible matériellement mais sans signification dans le code considéré.
Code Graycode adjacent et cyclique ne modifiant qu’un bit à chaque transition.
ASCIIcode de caractères historique sur 7 bits.
Point de codenuméro attribué à un caractère dans un répertoire comme Unicode.
Encodagerègle qui transforme des points de code en unités binaires ou octets.
Paritécontrôle du caractère pair ou impair du nombre de bits à 1.
Redondancebits supplémentaires utilisés pour le contrôle ou la correction.
XORopération logique valant 1 lorsque ses entrées sont différentes.
Distance de Hammingnombre de positions différentes entre deux mots de même longueur.

Exercices d’application

Exercice 1 — Capacité et longueur des mots

1. Déterminer le nombre minimal de bits pour coder 6, 10, 30, 100 et 1 000 symboles.

2. Indiquer le nombre de combinaisons inutilisées dans chaque cas.

3. Donner la plage d’un mot binaire naturel non signé sur 5, 8 et 12 bits.

Exercice 2 — Code binaire naturel

1. Coder 13, 47, 128 et 250 sur 8 bits.

2. Décoder 00110110, 10000001 et 11111100 en décimal.

3. Expliquer pourquoi 300 ne peut pas être codé sur 8 bits non signés.

Exercice 3 — Codage et décodage BCD

1. Coder en BCD les nombres 29, 304, 1975 et 9008.

2. Décoder 0100 0111, 0010 0000 1001 et 1001 1001 0101.

3. Repérer les mots BCD invalides : 0101 1010, 0011 1001, 1110 0001 et 1000 0110.

4. Comparer le nombre de bits requis pour 255 en binaire naturel et en BCD.

Exercice 4 — Addition BCD

1. Effectuer en BCD : 4 + 5 ; 6 + 8 ; 9 + 9.

2. Effectuer en BCD : 27 + 36 et 58 + 27.

3. Indiquer à chaque fois les quartets qui nécessitent une correction par 0110.

Exercice 5 — Conversion binaire–Gray

1. Convertir en Gray : 0000, 0011, 0111, 1010 et 1111.

2. Convertir en binaire naturel : 0000, 0010, 0110, 1111 et 1000.

3. Vérifier que deux mots Gray successifs de la séquence 0 à 15 ne diffèrent que par un bit.

Exercice 6 — ASCII et représentation des caractères

1. À partir des valeurs ASCII usuelles, coder le mot « INFO » en décimal et en hexadécimal.

2. Décoder la suite hexadécimale 42 41 43.

3. Expliquer la différence entre le caractère « 7 » et la valeur numérique 7.

4. Expliquer pourquoi une table ASCII sur 7 bits ne suffit pas à représenter un texte multilingue.

Exercice 7 — Parité

1. Calculer les bits de parité paire et impaire pour 1010101, 1110000 et 0000000.

2. Avec une parité paire, vérifier les mots reçus 10110110, 11001010 et 11111111.

3. Donner un exemple de deux erreurs de bits qui ne seraient pas détectées par une parité simple.

4. Expliquer pourquoi le bit de parité ne permet pas de corriger une erreur.

Exercice 8 — Problème de synthèse

Un instrument mesure une position de 0 à 255, affiche la valeur en décimal sur trois chiffres et transmet périodiquement le résultat avec un contrôle simple. Proposer les codes à utiliser pour la mesure interne, le capteur de position, l’affichage et la transmission. Justifier chaque choix et donner les représentations correspondant à la valeur 157.

Auto-évaluation

Affirmation

Vrai / Faux

Le mot 1010 est un chiffre BCD valide.

 

Le binaire naturel et le BCD de 59 sont identiques.

 

Deux mots Gray successifs diffèrent toujours par un seul bit.

 

ASCII d’origine utilise 7 bits.

 

UTF-8 représente toujours un caractère sur un seul octet.

 

Une parité simple détecte toute erreur sur un seul bit.

 

Deux bits inversés sont toujours détectés par une parité simple.

 

Un mot binaire ne peut être interprété correctement sans connaître son code.

 

Corrigé synthétique

Exercice 1

M

n minimal

2ⁿ

Combinaisons inutilisées

6

3

8

2

10

4

16

6

30

5

32

2

100

7

128

28

1 000

10

1 024

24

Plages : 5 bits → 0 à 31 ; 8 bits → 0 à 255 ; 12 bits → 0 à 4 095.

Exercice 2

13 → 00001101 ; 47 → 00101111 ; 128 → 10000000 ; 250 → 11111010.

00110110 → 54 ; 10000001 → 129 ; 11111100 → 252. La valeur maximale sur 8 bits non signés est 255 ; 300 exige au moins 9 bits.

Exercice 3

29 → 0010 1001 ; 304 → 0011 0000 0100 ; 1975 → 0001 1001 0111 0101 ; 9008 → 1001 0000 0000 1000.

0100 0111 → 47 ; 0010 0000 1001 → 209 ; 1001 1001 0101 → 995.

Invalides : 0101 1010 contient 1010 ; 1110 0001 contient 1110. Les deux autres sont valides. Pour 255 : 8 bits en binaire naturel, 12 bits en BCD.

Exercice 4

4 + 5 = 9 : 0100 + 0101 = 1001, sans correction. 6 + 8 = 14 : 0110 + 1000 = 1110, puis +0110 → 1 0100, soit 0001 0100. 9 + 9 = 18 : 1001 + 1001 = 1 0010, puis correction du quartet faible → 0001 1000.

27 + 36 = 63 : unités 7+6=13, correction ; dizaines 2+3+1=6. 58 + 27 = 85 : unités 8+7=15, correction ; dizaines 5+2+1=8.

Exercice 5

Binaire → Gray : 0000→0000 ; 0011→0010 ; 0111→0100 ; 1010→1111 ; 1111→1000.

Gray → binaire : 0000→0000 ; 0010→0011 ; 0110→0100 ; 1111→1010 ; 1000→1111.

Exercice 6

INFO : I=73=49₁₆ ; N=78=4E₁₆ ; F=70=46₁₆ ; O=79=4F₁₆. Suite : 49 4E 46 4F en hexadécimal.

42 41 43₁₆ correspond à B A C. Le caractère « 7 » possède le code ASCII 55 décimal, tandis que la valeur numérique 7 est un nombre utilisé dans les calculs. ASCII 7 bits ne contient que 128 valeurs et ne couvre pas les nombreux alphabets et symboles nécessaires à un texte multilingue.

Exercice 7

1010101 contient quatre 1 : parité paire 0, impaire 1. 1110000 contient trois 1 : paire 1, impaire 0. 0000000 contient zéro 1 : paire 0, impaire 1.

Pour vérifier un mot complet en parité paire, le nombre total de 1 doit être pair. Deux inversions peuvent conserver la parité, par exemple 0000→0011. Le contrôle signale seulement une incohérence globale et ne fournit pas la position du bit erroné.

Exercice 8

Mesure interne : binaire naturel sur 8 bits, car la plage est 0–255. Capteur de position : Gray sur 8 bits si le capteur est absolu et soumis à des transitions mécaniques. Affichage : BCD sur trois chiffres, associé à des décodeurs sept segments. Transmission simple : données binaires accompagnées d’un bit de parité, en précisant que ce contrôle reste limité.

Pour 157 : binaire naturel 10011101 ; BCD 0001 0101 0111 ; Gray obtenu par b ⊕ (b>>1) : 11010011. Le bit de parité paire du mot binaire 10011101 vaut 1, car les données contiennent cinq bits à 1.

Réponses de l’auto-évaluation

Faux ; Faux ; Vrai ; Vrai ; Faux ; Vrai ; Faux ; Vrai.