No es posible corregir "todos" los bits de error, ya que entonces no tendría que transmitir o almacenar ninguna información. El punto de corrección de errores de los códigos es controlar la tasa de error. Digamos que tiene un medio con una tasa de error de 1 error en 1000 bits. Con la corrección de errores hacia adelante de algún tipo, puede reducir la tasa de error a 1 en 1000000 o mejor a expensas de algunos gastos generales para la codificación. Sin embargo, el código que usa bien solo podrá corregir errores en determinadas circunstancias. Digamos, hasta dos bits malos por palabra de código. Sin embargo, puede calcular la probabilidad de obtener más de dos errores por palabra de código, una situación que generará un error a pesar del código, y esto se convierte en la nueva tasa de error.
En cuanto a los códigos de Hamming, Hamming (7,4) es el ejemplo más común. Esto genera 3 bits de paridad por cada 4 bits de datos (por lo que la tasa es 4/7, un poco mejor que 1/2). Este código puede corregir cualquier error de un solo bit. Es posible usar una longitud de bloque más larga como en Hamming (15,11) y Hamming (31,26) para obtener una tasa más alta (menos gastos generales). Sin embargo, los códigos de Hamming solo pueden corregir un solo error de bit en todo el bloque. Entonces, para Hamming (7,4) esto sería 1 error en cualquier palabra de código de 7 bits. Para Hamming (31,26) esto sería un bit en cualquier palabra de código de 31 bits.
Otros métodos de codificación tienen capacidades diferentes. Por ejemplo, el código G24 de Golay codifica 12 bits de datos en 24 bits de código (tasa 1/2) pero puede corregir cualquier error de 3 bits o detectar cualquier error de 7 bits.
Los códigos Reed-solomon son otro tipo de código. Los códigos Reed-solomon agregan t símbolos a cada bloque y pueden detectar hasta t errores o corregir hasta t / 2 errores. Los CD utilizan dos capas de codificación Reed-Solomon junto con el intercalado para corregir los errores causados por rasguños. RS (28,24) se utiliza para codificar bloques de datos de 24 bits. Los bloques de 28 bits resultantes están intercalados de modo que un gran grupo local de errores causará errores corregibles de un solo bit en varias palabras de código. Luego los datos se codifican con RS (32,28). Tanto RS (28,24) como RS (32,28) pueden corregir errores de hasta 2 bits. Finalmente, las palabras de 32 bits se entrelazan nuevamente con un patrón diferente. Esto significa que un rasguño que cause una larga serie de errores de bit de back-to-back afectará a los bits en diferentes palabras de código, permitiendo que los errores se corrijan.
Los códigos más potentes incluyen códigos Turbo y códigos LDPC. Estos pueden usarse para acercarse arbitrariamente a la capacidad del canal de un enlace determinado (velocidad máxima alcanzable teóricamente) y son utilizados por la Red de Espacio Profundo de la NASA, entre otras cosas.
El código más sencillo de implementar es probablemente Hamming (7,4), pero esto puede o no ser apropiado para su aplicación.