Los códigos de corrección de errores permiten localizar el error y corregirlo sin necesidad de retransmitir. Como ya hemos indicado, la clave está en la introducción de la suficiente cantidad de redundancia. La idea es crear un código donde las palabras se diferencien en una cantidad de bits suficiente (dependiendo de la cantidad de bits erróneos que se desea corregir). A esta diferencia se le llama distancia de Hamming* [10]. Por ejemplo, en un código binario natural de n bits de longitud existen hasta 2n palabras distintas y la distancia de Hamming es 1. Como puede verse, cuando la distancia es 1 entonces el código no permite detectar, ni aún menos corregir, ningún error, porque cualquier palabra con uno o más errores genera otra palabra del código.
La capacidad de detección y de corrección de errores de un código depende de su distancia de Hamming. En concreto, para detectar al menos d errores, se necesita una distancia igual a d + 1. Por ejemplo, el código 0000, 0011, 1100, 1111 tiene una distancia de Hamming igual a 2. Si se recibiera la palabra 1110, sabríamos que hay al menos un error y que las palabras que con más probabilidad fueron transmitidas son 1100 y 1111.† Nótese, sin embargo, que esta información es insuficiente para corregir el error porque ambas palabras son equiprobables.
Sin embargo, para corregir d errores, se necesita una distancia de 2d + 1. Por ejemplo, el código 00000 00000, 00000 11111, 11111 00000, 11111 11111, tiene una distancia igual a 5, por lo que puede llegar a corregir hasta 2 bits erróneos. Por ejemplo, si se recibe la palabra 00010 11011, lo más probable es que se tratara de la palabra 00000 11111. Obsérvese que nunca sabremos con certeza esto porque implicaría que sabemos que sólo dos bits iban a ser invertidos durante la transmisión. Este factor es el que provoca que ningún código de corrección de errores sea infalible.
Los códigos de corrección de errores son usados en tres situaciones muy concretas:
Ejemplo E.15: Considere un enlace que comete errores de transmisión aislados con una tasa de 10-3 errores/bit. Supóngase que la longitud de la trama de datos es de 1.000 bits. Esto significa que en promedio cada trama transmitida contendrá un bit erróneo y la transmisión utilizando un código de detección de errores no sería posible.