10.6 Códigos de Hamming.


Es un método general propuesto por R. W Hamming usando una distancia mínima m. Con este método, por cada entero m existe un código de hamming de 2m-1 bits que contiene m bits de paridad y  2m-1-m bits de información. En este código, los bits de paridad y los bits de paridad se encuentran entremezclados de la siguiente forma: Si se numeran las posiciones de los bits desde 1 hasta 2m-1, los bits en la posición 2k, donde , son los bits de paridad y los bits restantes son bits de información.

El valor de cada bit de paridad se escoge de modo que el total de unos en un número específico de bits sea par, y estos grupos se escogen de tal forma que ningún bit de información se cubra con la misma combinación de bits de paridad. Es lo anterior lo que proporciona al código su capacidad de corrección.

Para cada bit de paridad en la posición 2k, su grupo de bits de información correspondiente incluye todos esos bits de información correspondiente cuya representación binaria tenga un uno en la posición 2k. La siguiente tabla muestra los grupos de paridad para un código de hamming de 7 bits o sea de la forma 2m-1 con m = 3. En este ejemplo, los bits de información son 4 y los bits de paridad son 3. Los bits de información están en las posiciones 7, 6, 5 ,3. Los bits de paridad están en las posiciones 1, 2, 4.

POSICIÓN DE LOS BITS

 
7
6
5
4
3
2
1
X
X
X
X
     
X
X
   
X
X
 
X
 
X
 
X
 
X

 

En la tabla anterior, el grupo de paridad del bit de paridad situado en la posición 4 son los bits de información situados en las posiciones 7, 6, 5 que contienen unos en la posición  2k o sea 4 cuando k = 2.

El grupo de paridad del bit de paridad situado en la posición 2 son los bits de información situados en las posiciones 7, 6, 3 que contienen unos en la posición  2k o sea 2 cuando k = 1.

El grupo de paridad del bit de paridad situado en la posición 1 son los bits de información situados en las posiciones 7, 5, 3 que contienen unos en la posición  2k o sea 1 cuando K = 0.

Como 111 es la representación binaria de 7, el bit de información en la posición 7 se usa para calcular el valor de los tres bits de paridad. Similarmente, el bit de información en la posición 6 se usa para calcular el valor de los bits de paridad en las posiciones 4 y 2; el bit de información en la posición 5 se usa se usa para calcular el valor de los bits de paridad en las posiciones 4 y 1. Finalmente, el bit de información en la posición 3 se usa para calcular el valor de los bits de paridad en las posiciones 2 y 1.

De acuerdo con estos grupos de paridad, el valor del bit de paridad de la posición 1 tiene que elegirse de modo que el número de unos en las posiciones 7, 5, 3, 1 sea par, mientras el bit de paridad en la posición 2 hace el número de unos par 7, 6, 3, 2 y el valor del bit de paridad en la posición cuatro hace el número de unos par en las posiciones 7, 6, 5, 4.

Es fácil observar que, en estas condiciones, la distancia mínima es 3, o sea que tienen que haber al menos tres cambios de un bit para convertir una palabra de código en otra.

Para probar que un cambio de un bit siempre genera una palabra que no pertenece al código, hay que observar que un cambio de un bit en una palabra del código afecta al menos un bit de paridad.

Por otra parte, un cambio de dos bits en una palabra del código no cambia el valor del bit de paridad si ambos bits pertenecen al mismo grupo de paridad. Sin embargo ello no es posible ya que para dos posiciones cualquiera de una palabra del código siempre hay un grupo de paridad que no incluye ambas posiciones. En otras palabras, como dos bits cualquiera deben estar en distintas posiciones, sus números binarios deben diferir al menos en un bit, así que siempre hay al menos un grupo de paridad con un solo bit cambiado, lo cuál da lugar a una palabra que no pertenece al código con al menos un valor de paridad incorrecto.
 

Ejemplo 12.

Supóngase que se transmite una palabra de código y se recibe una palabra que no pertenece al código y que es 1110101 . Cuál fue la palabra correcta transmitida?

Posiciones de los bits.

 
7
6
5
4
3
2
1
1
1
1
0
1
0
1

 

En la tabla anterior se puede observar lo siguiente:

Cuando se cuenta el número de unos que hay en los bits, 7, 6, 5, 4 de la palabra del código recibida, se encuentra que este número es impar. De forma similar, se encuentra que los bits 7, 6, 3, 2 contienen un número0 impar de unos. Por tanto hay un error en los bits de paridad 4 y 2. Como la suma de los números en esas posiciones es 6, se sabe que el error se ha producido en el bit de posición 6 y por tanto la palabra transmitida fue 1010101.
 

EJERCICIOS CAPÍTULO 10

1) codifique los siguientes números en los códigos BCD y exceso 3
a) 39
b) 1950
c) 94704


2) Defina un código de 4 bits para la representación de dígitos decimales, con la propiedad de que las palabras de código para dos dígitos cualquiera cuya diferencia sea uno, difieran sólo en una posición de bits, y que esto también se cumpla para los dígitos 0 y 9.
 

3) Determinar la distancia entre X y Y en:

    a) X = 1100010 y Y = 1010001
    b) X = 0100110 y Y = 0110010
    c) X = 00111001, y Y = 10101001
 
4) Determine la distancia mínima de la función de decodificación

    e= (000)= 00000000

    e= (001)= 01110010
    e= (010)= 10011100
    e= (011)= 01110001
    e= (100)= 01100101
    e= (101)= 10110000
    e= (111)= 00001111

    Cuantos errores detectará e?

    Cuantos errores corregirá e?