E.1 El código de Hamming

Hamming ideó además un sistema de codificación que permite recuperar un número de errores de transmisión por palabra transmitida arbitrariamente grande, aunque en esta sección se presenta (por motivos de simplicidad) el código que permite recuperar sólo un bit erróneo.

Para hacer esto, entre los bits de datos se insertan bits de paridad, concretamente en las posiciones 2i siendo i 0. Como puede deducirse fácilmente, si la trama contiene n de datos, entonces un código de Hamming introduce

log2(n+ 2) bits
(E.1)

de redundancia.


PIC


Figure E.1: Inserción de los bits de paridad en el código de Hamming. Los puntos seleccionados se corresponden con aquellos cuyo índice sólo tiene un bit a 1 y por tanto son potencias de 2.


Supongamos que el tamaño de los símbolos originales es de 7 bits. El código de Hamming inserta en las posiciones que son potencias de dos un bit de paridad (véase la Figura E.1).


PIC


Figure E.2: Ejemplo de creación del código de Hamming que utiliza paridad par (el número total de unos debe ser un número par).


Por ejemplo, el bit que está en la posición 1 (que tiene un único bit distinto de cero y que es el bit de menos peso) es el bit de paridad de los bits situados en las posiciones impares, porque todas ellas tienen el bit menos significativo igual a 1. En la Figura E.2 se muestra un ejemplo de codificación en el que se usa paridad par.


PIC


Figure E.3: Corrección de un error mediante el código de Hamming. Tras recalcular las paridades el número binario resultante indica la posición del bit erróneo. Un 1 en dicho código significa que la paridad es inorrecta, es decir, que el bit de paridad está bien calculado, y un 0 que es correcta. Por ejemplo, el bit de paridad r1 está mal calculado (y por ese motivo colocalos un 1 en el bit de menos peso del código que indica dónde está el bit erroneo) porque según él, el número de 1’s en las posiciones de índice impar es impar y sin embargo sale un número par.


Para conocer si se ha producido un error de transmisión, el receptor recalcula los bits de paridad. Si no se ha producido ningún error, los bits de paridad deben coincidir con los que viajan con los datos. Si ha ocurrido un error, los bits de paridad que cambian indican dónde se ha producido el error. Por ejemplo, si el bit séptimo en la Figura E.2 cambiara de 1 a 0 durante una transmisión ruidosa, el receptor va a apreciar que los bits de paridad r1, r2 y r4 son diferentes a los que se reciben. Como es más probable que se produzca un error en un bit que en tres, supondrá que el bit 7 (donde 7 = 1 + 2 + 4) es el bit erróneo y lo corregirá. Este proceso se muestra también en la Figura E.3.