Exercice 01 | CODE DE HAMMING

Exercice sur le Code Hamming | Exercice 01 :

Considérons l'utilisation des codes de Hamming pour envoyer des messages de 11 bits. Plus précisément, considérons le message :

Code hamming

Tout d'abord, calculez le mot de Hamming pour ce message. Ensuite, inversez un bit du message dans ce mot de code de Hamming (pour représenter une erreur de 1 bit) et montrez comment le destinataire peut utiliser les bits de contrôle pour corriger le bit inversé. (C'est-à-dire, effectuer la correction d'erreur).


Placez les bits du message aux positions non puissantes de deux dans le mot-code final, en observant que nous comptons les positions à partir de 1.

  Mot code | 1 0 0 1 1 0 1 1 0 1 1 1 1
  ---------|----------------------------------------------
  Position | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
        

Pour calculer le bit de contrôle de la position 1, il faut prendre la parité des positions dont les facteurs additifs comprennent 20 = 1 : plus précisément, les bits 3, 5, 7, 9, 11, 13 et 15. La somme des bits à ces positions est de 1 + 0 + 1 + 1 + 1 + 0 + 1 = 5, et 5 mod 2 = 1, donc le bit de parité à la position 1 est 1.

Les autres bits de contrôle sont calculés de manière similaire :

  Bit 2 = (Bit 3 + Bit 6 + Bit 7 + Bit 10 + Bit 11 + Bit 14 + Bit 15) mod 2
  Bit 4 = (Bit 5 + Bit 6 + Bit 7 + Bit 12 + Bit 13 + Bit 14 + Bit 15) mod 2
  Bit 8 = (Bit 9 + Bit 10 + Bit 11 + Bit 12 + Bit 13 + Bit 14 + Bit 15) mod 2
        

Par conséquent, le mot de code de Hamming final est le suivant :

  Mot de code | 1 1 1 0 0 0 1 1 0 1 1 0 1 0 1 1 1
  ---------|----------------------------------------------
  Position | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
        

Considérons maintenant une inversion du bit 13, représentant une erreur de transmission de 1 bit. Commencez par un compteur c = 0, qui stockera la somme des positions des bits de contrôle dont la parité était incorrecte. Testez chaque bit de contrôle tour à tour pour déterminer si sa parité est correcte. Par exemple, pour le bit de contrôle 1, si la valeur suivante est 0, alors il est correct, et si elle est 1, alors il est incorrect :

  (Bit 1 + Bit 3 + Bit 5 + Bit 7 + Bit 9 + Bit 11 + Bit 13 + Bit 15) mod 2
        

Pour chaque bit de contrôle dont la parité est incorrecte, ajoutez l'indice de ce bit de contrôle à c. Ainsi, si le bit 13 a été inversé, les bits de contrôle 1, 4 et 8 seront incorrects, et leurs numéros de position seront ajoutés à c. Notez qu'après l'évaluation de tous les bits de contrôle, c = 13, indiquant exactement le bit qui a été inversé, et permettant ainsi de le corriger.

L'erreur la plus courante ici était de croire que les bits de contrôle pouvaient simplement être ajoutés, plutôt que d'être placés à des positions de puissance-deux. Bien que cette approche fonctionne pour les erreurs de 1 bit sur les bits de message, elle échouera si l'erreur de 1 bit se produit sur l'un des bits de contrôle. Une autre erreur courante était de se souvenir de l'emplacement des bits de contrôle, mais d'oublier comment calculer leurs valeurs.

Un petit nombre de personnes ont changé l'endianness de l'exemple donné ci-dessus -- c'est-à-dire qu'ils ont compté les bits de droite à gauche. Ce changement est sans conséquence sur l'exactitude du code de Hamming ; il implique simplement que la réponse sous cette forme est différente de celle présentée ci-dessus. Certaines personnes ont également utilisé la parité impaire plutôt que la parité paire utilisée ci-dessus. Ce changement implique simplement que les valeurs des bits de contrôle sont toutes inversées, et ne change pas l'efficacité du code de Hamming.

 

  • Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam