Hamming CodeDétection et correction d'erreurs avec exemples
⚡ Résumé intelligent
Le code de Hamming est un code correcteur d'erreurs linéaire qui ajoute des bits de parité redondants aux positions de puissance de deux, permettant à un récepteur de détecter jusqu'à deux erreurs de bits et de corriger automatiquement toute erreur d'un seul bit lors de la transmission de données.

Qu'est-ce qu'une erreur ?
TransmitLes données transmises peuvent être corrompues. Elles sont susceptibles d'être affectées par des interférences externes ou d'autres défaillances matérielles. Dans ce cas, les données d'entrée ne peuvent correspondre aux données de sortie. Cette différence est appelée « erreur ».
Les erreurs de données peuvent entraîner la perte de données importantes ou confidentielles. La plupart des transferts de données dans les systèmes numériques s'effectuent par « transfert de bits », et même une petite modification d'un seul bit peut affecter les performances de l'ensemble du système. Dans une séquence de données, si un 1 est remplacé par un 0, ou inversement, on parle d'« erreur de bit ».
Types d'erreurs
Il existe principalement trois types d'erreurs de bits qui se produisent lorsque des données sont transmitLes données sont transmises de l'expéditeur au destinataire. Le schéma ci-dessous illustre l'influence de chaque type sur une séquence de données :
- Erreurs sur un seul bit
- Erreurs sur plusieurs bits
- Erreurs d'éclatement
Erreurs sur un seul bit
Une modification d'un seul bit dans l'ensemble de la séquence de données est appelée « erreur sur un seul bit ». Ce type d'erreur est relativement rare. Il se produit principalement dans un système de communication parallèle, car les données sont transférées bit à bit sur des lignes séparées ; il est donc plus probable qu'une ligne soit corrompue tandis que les autres restent intactes.
Erreurs sur plusieurs bits
Lorsque deux bits ou plus d'une séquence de données changent entre les transmitentre le récepteur et le terminal, on parle alors d’« erreur multibit ».
Ce type d'erreur se produit aussi bien dans les réseaux de communication de données en série que dans les réseaux en parallèle.
Erreurs d'éclatement
Une modification d'une série de bits consécutifs dans une séquence de données est appelée « erreur en rafale ». La longueur d'une erreur en rafale est mesurée entre le premier bit modifié et le dernier bit modifié.
Qu’est-ce que la détection et la correction d’erreurs ?
Dans un système de communication numérique, des erreurs peuvent survenir lors du transfert de données d'un appareil à un autre. Si ces erreurs ne sont pas détectées et corrigées, les données sont perdues. Pour une communication efficace, les données doivent être transférées avec une grande précision, ce qui s'obtient en identifiant d'abord les erreurs, puis en les corrigeant.
Détection d'erreur est une méthode permettant de détecter les erreurs présentes dans les données transmitted d'un transmitter à un récepteur dans un Communication de données système.
Les codes de redondance servent à détecter ces erreurs en ajoutant des bits supplémentaires aux données lorsqu'elles sont présentes. transmitextraits de la source. Ces bits supplémentaires sont appelés « codes de détection d’erreurs ». Les trois types de codes de détection d’erreurs les plus courants sont :
- Contrôle de parité
- Contrôle de redondance cyclique (CRC)
- Contrôle de redondance longitudinale (LRC)
Contrôle de parité
- On l’appelle également contrôle de parité.
- Il offre un mécanisme rentable de détection des erreurs.
- Dans cette technique, le bit redondant ajouté à chaque unité de données est appelé bit de parité. Il est configuré de sorte que le nombre total de 1 dans l'unité soit pair (parité paire) ou impair (parité impaire).
Vérification de la redondance longitudinale
Dans cette technique de détection d'erreurs, un bloc de bits est organisé dans un tableau. La méthode LRC calcule un bit de parité pour chaque colonne, et cet ensemble de bits de parité est transmis avec les données originales. Ce bloc de bits de parité permet au récepteur de vérifier la redondance et de détecter les erreurs.
Contrôle de redondance cyclique
Le contrôle de redondance cyclique ajoute une séquence de bits redondants à la fin de l'unité de données afin que l'unité de données résultante devienne exactement divisible par un deuxième nombre binaire prédéterminé.
À destination, les données entrantes sont divisées par un même nombre. Si le reste est nul, l'unité de données est considérée comme correcte et est acceptée. Dans le cas contraire, cela indique que l'unité de données a été endommagée lors de la transmission et elle doit être rejetée.
Qu'est-ce qu'un Hamming ? Code?
Le code de Hamming est un code linéaire utile pour détecter jusqu'à deux erreurs binaires immédiates et corriger les erreurs binaires isolées. Ce type de correction d'erreurs opère généralement au niveau de la couche liaison de données, en structurant les données et en vérifiant leur intégrité entre les nœuds adjacents.
En codage de Hamming, la source encode le message en ajoutant des bits redondants. Ces bits redondants sont insérés et générés à des positions spécifiques dans le message afin de réaliser le processus de détection et de correction d'erreurs.
Histoire de Hamming Code
- Le code de Hamming est une technique mise au point par RW Hamming pour détecter et corriger les erreurs.
- Elle peut être appliquée à des unités de données de toute longueur et utilise la relation entre les bits de données et les bits de redondance.
- Hamming travailla sur le problème de la correction d'erreurs et développa un ensemble d'algorithmes de plus en plus performants.
- En 1950, il publia le code de Hamming, qui est encore largement utilisé aujourd'hui dans des applications telles que la mémoire ECC.
Applications de Hamming Code
Voici quelques applications courantes du code de Hamming :
- Satellites
- Mémoire informatique (RAM ECC)
- Modems
- PlasmaCAM
- Connecteurs ouverts
- Fil blindé
- Processeurs embarqués
Avantages de Hamming Code
- Le code de Hamming est efficace sur les réseaux où les flux de données sont exposés à des erreurs sur un seul bit.
- Il ne se contente pas de détecter une erreur de bit, mais vous aide également à identifier le bit qui contient l'erreur afin qu'il puisse être corrigé.
- La facilité d'utilisation des codes de Hamming les rend parfaitement adaptés à la mémoire informatique et à la correction d'erreurs simples.
Inconvénients de Hamming Code
- Il s'agit d'un code de détection et de correction d'erreurs au niveau d'un seul bit. Si plusieurs bits sont erronés, le résultat peut inverser un autre bit correct, corrompant ainsi davantage les données.
- L'algorithme du code de Hamming ne peut résoudre que les problèmes à un seul bit.
Comment encoder un message en Hamming Code
Le processus utilisé par l'expéditeur pour encoder le message comprend les trois étapes suivantes :
- Calculez le nombre total de bits redondants.
- Déterminez la position des bits redondants.
- Calculez la valeur de chaque bit redondant.
Lorsque les bits redondants sont intégrés au message, le mot de code complet est envoyé au destinataire.
Étape 1) Calculer le nombre total de bits redondants.
Supposons que le message contienne n bits de données et p bits redondants, ajoutés pour que 2p peut indiquer au moins (n + p + 1) états différents.
Ici, (n + p) représente la position d'une erreur dans chacune des (n + p) positions binaires, et un état supplémentaire indique l'absence d'erreur. Étant donné que p bits de parité peuvent indiquer 2p états, 2p doit être au moins égal à (n + p + 1).
Étape 2) Placez les bits redondants à leurs emplacements corrects.
Les p bits redondants sont placés à des positions de bits qui sont des puissances de 2 — par exemple, 1, 2, 4, 8 et 16. Ils sont appelés p1 (en position 1), p2 (en position 2), p3 (à la position 4), et ainsi de suite.
Étape 3) Calculez la valeur de chaque bit redondant.
Chaque bit redondant est un bit de parité qui rend le nombre de 1 dans son groupe pair ou impair. Les deux types de parité sont :
- Même parité : Le nombre total de 1 dans les positions couvertes est rendu pair.
- Parité impaire : Le nombre total de 1 dans les positions couvertes est rendu impair.
Chaque bit de parité couvre un ensemble spécifique de positions, déterminé par la représentation binaire des numéros de position :
- p1 vérifie chaque position dont la valeur binaire a un 1 dans le bit de poids faible — positions 1, 3, 5, 7, 9, 11, et ainsi de suite.
- p2 vérifie chaque position dont la valeur binaire a un 1 dans le deuxième bit à partir de la droite — positions 2, 3, 6, 7, 10, 11, et ainsi de suite.
- p3 vérifie chaque position dont la valeur binaire a un 1 dans le troisième bit à partir de la droite — positions 4 à 7, 12 à 15, et ainsi de suite.
Exemple résolu (7,4) : Considérons les quatre bits de données 1011Trois bits de parité sont nécessaires (23 = 8 ≥ 4 + 3 + 1), ce qui donne un mot de code de sept bits disposé comme p1 p2 d1 p3 d2 d3 d4Le placement des données attribue aux positions 3, 5, 6, 7 les valeurs 1, 0, 1, 1. En utilisant une parité paire : p1 couvre les positions 1, 3, 5, 7 (bits 1, 0, 1 → p1 = 0); p2 couvre 2, 3, 6, 7 (bits 1, 1, 1 → p2 = 1); p3 couvre 4, 5, 6, 7 (bits 0, 1, 1 → p3 = 0). transmitLe mot de code ted est donc 0110011.
Comment décoder un message en Hamming Code
Le récepteur reçoit le message entrant et effectue des recalculs pour détecter et corriger les erreurs. Le processus de recalcul comprend les étapes suivantes :
- Comptez le nombre de bits redondants.
- Positionnez correctement tous les éléments redondants.
- Effectuez le contrôle de parité.
Étape 1) Comptez le nombre de bits redondants. Utilisez la même formule que pour l'encodage : 2p ≥ n + p + 1, où n est le nombre de bits de données et p est le nombre de bits redondants.
Étape 2) Positionnez correctement tous les bits redondants. Chaque bit redondant se trouve à une position de bit qui est une puissance de 2 — par exemple, 1, 2, 4 et 8.
Étape 3) Effectuez le contrôle de parité. Les bits de parité sont recalculés à partir des bits de données et des bits redondants reçus :
- p1 = parité(1, 3, 5, 7, 9, 11, …)
- p2 = parité(2, 3, 6, 7, 10, 11, …)
- p3 = parité(4–7, 12–15, 20–23, …)
Les bits de parité recalculés forment ensemble un nombre binaire. Si ce nombre est nul, aucune erreur n'est présente ; sinon, sa valeur indique la position exacte du bit corrompu, qui est alors inversé pour corriger le message.

