Hemos visto, en el caso de la códigos de detección y corrección de errores descrito anteriormente, cómo un aumento del número de bits redundantes añadidos a los bits de los mensajes puede mejorar la capacidad del código para detectar y corregir errores. Si tenemos un número suficiente de bits redundantes, y si estos bits pueden ser dispuestos de tal manera que diferentes bits de error produzcan diferentes resultados de error, entonces debería ser posible no sólo detectar el bit de error sino también identificar su ubicación. En realidad, la adición de bits redundantes altera el parámetro del Código de Distancia, que conocemos como el Distancia de golpeo. Ahora necesitamos saber qué es la distancia de martilleo, no es más que la diferencia en el número de bits entre dos palabras clave que estamos comprobando.
Podemos explicarlo con un ejemplo, como la adición de la paridad de un solo bit da como resultado un código con una distancia de Hamming de al menos y la distancia de Hamming más pequeña en el caso de un código de triple repetición sería el hamming notado que un aumento de la distancia mejoró la capacidad de los códigos para detectar y corregir errores, lo cual es muy deseable. Por lo tanto Código Hammings fue un intento de aumentar la distancia de Hamming y al mismo tiempo tener la mayor cantidad de información posible a una velocidad de transmisión.
El algoritmo para escribir el generalizado Código de Hamming es lo siguiente:
- La forma generalizada del código es P1P2D1P3D2D3D4P4D5D6D7D8D9D10D11P5, donde P y D representan respectivamente la paridad y los bits de datos.
- Podemos ver en la forma generalizada del código que todas las posiciones de bits que son potencias de 2 (posiciones 1, 2, 4, 8, 16) se utilizan como bits de paridad.
- Todas las demás posiciones de bits (posiciones 3, 5, 6, 7, 9, 10, 11) se utilizan para codificar los datos.
- A cada bit de paridad se le asigna un grupo de bits de los bits de datos de la palabra clave, y el valor del bit de paridad que es 0 o 1 se utiliza para darle cierta paridad para que la operación sea suave.
- Los grupos se forman primero comprobando N 1 bits y luego alternativamente saltando y comprobando N bits siguiendo el bit de paridad. Aquí, N es la posición del bit de paridad; 1 para P1, 2 para P2, 4 para P3, 8 para P4 y así sucesivamente. Por ejemplo, para la forma generalizada de código dada anteriormente, varios grupos de bits formados con diferentes bits de paridad serían P1D1D2D4D5, P2D1D3D4D6D7, P3D2D3D4D8D9, P4D5D6D7D8D9 D10D11 y así sucesivamente. Para ilustrar mejor la formación de los grupos, examinemos el grupo correspondiente al bit de paridad P3. Ahora, la posición de P3 está en el número 4. Para formar el grupo, comprobamos los tres primeros bits (N 1 = 3) y luego lo seguimos omitiendo y comprobando alternativamente cuatro bits (N = 4).
Hemos discutido mucho sobre el Códigos de Hamming y ahora podemos concluir que estos códigos son capaces de corregir errores de un solo bit en mensajes de cualquier longitud. Aunque este código puede detectar errores de dos bits, no podemos obtener las ubicaciones de los errores. Sin embargo, el número de bits de paridad necesarios para ser transmitidos junto con el mensaje depende de la longitud del mensaje, como se muestra arriba. El número de bits de paridad requeridos para codificar los bits del mensaje es el menor número entero que satisface la condición (2n n) > m.