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érique | distinguer information, mot de code, codage et décodage |
| coder un entier non signé en binaire naturel | choisir le nombre de bits et vérifier la plage représentable |
| coder et décoder un nombre en BCD 8421 | traiter séparément chaque chiffre décimal et repérer les mots interdits |
| comparer binaire naturel et BCD | justifier le choix d’un code selon l’application |
| convertir un nombre entre binaire naturel et code Gray | appliquer correctement les relations XOR dans les deux sens |
| interpréter les principes d’ASCII et d’Unicode | identifier la différence entre caractère, point de code et encodage |
| calculer un bit de parité paire ou impaire | construire et vérifier un mot transmis |
| évaluer les limites d’un code de détection | indiquer 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. |

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 source | ensemble des informations à représenter | les dix chiffres décimaux 0 à 9 |
| Alphabet du code | symboles utilisés pour construire les mots | 0 et 1 pour un code binaire |
| Mot de code | suite de symboles représentant une information | 1001 pour le chiffre 9 en BCD |
| Longueur du mot | nombre de bits du mot de code | 4 bits dans le BCD 8421 |
| Codage | passage de l’information au mot de code | 9 → 1001 |
| Décodage | interprétation du mot de code | 1001 → 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 poids | binaire naturel, BCD 8421 | calcul et interprétation directe |
| Code non pondéré | pas de valeur fixe par position | Gray | propriété de transition |
| Code numérique | représente des nombres ou chiffres | binaire, BCD, Gray | calcul, affichage, mesure |
| Code alphanumérique | représente caractères et symboles | ASCII, Unicode | texte et échange de données |
| Code détecteur | ajoute de la redondance contrôlée | parité | 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 |
|---|---|
| Avantages | représentation compacte ; correspondance directe avec l’arithmétique binaire ; traitement simple par additionneurs, compteurs et processeurs |
| Limites | lecture humaine difficile pour de longues suites ; plusieurs bits peuvent changer lors d’une transition ; pas de détection d’erreur intégrée |
| Applications | calcul 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 octet | 0100 0111 | économie de mémoire |
| BCD non compacté | un chiffre par octet | 0000 0100 0000 0111 | traitement 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 |
|---|---|
| Avantages | conversion décimale simple ; affichage direct ; représentation exacte de chiffres décimaux ; utile pour les calculs financiers décimaux |
| Limites | utilisation inefficace des bits ; arithmétique plus complexe ; présence de mots interdits |
| Applications | calculatrices, 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 bit | 0, 1 | liste initiale |
| 2 bits | 00, 01, 11, 10 | 0 + liste ; 1 + liste réfléchie |
| 3 bits | 000, 001, 011, 010, 110, 111, 101, 100 | mê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 |
|---|---|
| Adjacence | un 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 directe | les additions et soustractions nécessitent généralement une conversion en binaire |
| Pas de détection garantie | un 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 à 31 | caractères de contrôle | NUL, tabulation, retour à la ligne |
| 32 | espace | SPACE |
| 33 à 47 | ponctuation et symboles | !, ", #, $, %, &, … |
| 48 à 57 | chiffres | 0 à 9 |
| 58 à 64 | symboles | :, ;, <, =, >, ?, @ |
| 65 à 90 | lettres majuscules | A à Z |
| 91 à 96 | symboles | [, \, ], ^, _, ` |
| 97 à 122 | lettres minuscules | a à z |
| 123 à 126 | symboles | {, |, }, ~ |
| 127 | contrôle | DEL |
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ère | symbole abstrait | A, é, م, Ω |
| Point de code Unicode | identifiant numérique du caractère | A = U+0041 |
| Encodage | règle de transformation en octets | UTF-8, UTF-16, UTF-32 |
| Police de caractères | forme graphique affichée | Liberation Sans, Arial, etc. |
3.4.6. UTF-8, UTF-16 et UTF-32
Encodage | Taille utilisée | Compatibilité ASCII | Caractéristique principale |
|---|---|---|---|
| UTF-8 | 1 à 4 octets | oui pour les valeurs 0–127 | très répandu sur le Web et dans les fichiers texte |
| UTF-16 | 2 ou 4 octets | non octet pour octet | unités de 16 bits ; utilisé dans certains environnements |
| UTF-32 | 4 octets | non | taille 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és | binaire naturel | représentation compacte et arithmétique directe |
| afficher ou saisir des chiffres décimaux | BCD 8421 | chaque chiffre est directement disponible |
| mesurer une position avec contacts ou pistes | Gray | un seul bit change entre positions successives |
| échanger du texte simple historique | ASCII | table compacte et largement comprise |
| échanger du texte multilingue | Unicode avec UTF-8 | répertoire très large et format d’échange courant |
| détecter une erreur simple à faible coût | bit 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 naturel | la valeur appartient-elle à la plage de n bits ? |
| BCD | chaque quartet est-il compris entre 0000 et 1001 ? |
| Gray | les XOR ont-ils été appliqués dans le bon sens ? |
| ASCII/Unicode | s’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 naturel | coder plusieurs valeurs sur 8 bits et vérifier la plage | table décimal–binaire validée |
| 2. BCD | coder une valeur à trois chiffres et commander un décodeur sept segments | affichage cohérent des trois chiffres |
| 3. Gray | générer la séquence sur 3 ou 4 bits et vérifier l’adjacence | un seul bit varie entre mots successifs |
| 4. ASCII | encoder un court mot en décimal, hexadécimal et binaire | suite d’octets correctement documentée |
| 5. Parité | ajouter un bit de parité puis inverser volontairement un bit | erreur simple détectée par le contrôleur |
| 6. Analyse | comparer 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érique | association conventionnelle entre une information et un mot binaire |
| Binaire naturel | code pondéré compact adapté au calcul des entiers non signés |
| BCD 8421 | quatre bits par chiffre décimal ; six mots interdits par quartet |
| Gray | code non pondéré dans lequel un seul bit change entre valeurs successives |
| ASCII | code historique sur 7 bits pour 128 caractères et commandes |
| Unicode | ré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 |
| Redondance | information 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 |
|---|---|
| Alphabet | ensemble des symboles utilisés dans une source ou un code. |
| Mot de code | suite 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. |
| BCD | codage séparé de chaque chiffre décimal sur quatre bits. |
| Mot interdit | combinaison possible matériellement mais sans signification dans le code considéré. |
| Code Gray | code adjacent et cyclique ne modifiant qu’un bit à chaque transition. |
| ASCII | code de caractères historique sur 7 bits. |
| Point de code | numéro attribué à un caractère dans un répertoire comme Unicode. |
| Encodage | rè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. |
| Redondance | bits supplémentaires utilisés pour le contrôle ou la correction. |
| XOR | opération logique valant 1 lorsque ses entrées sont différentes. |
| Distance de Hamming | nombre 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.