Código Hamming: bits de paridad, corrección y ejemplo

Aug 19, 2026

El código Hamming es una familia de códigos correctores que añade bits de paridad en posiciones cuidadosamente elegidas. El receptor repite las comprobaciones y combina sus resultados en una dirección binaria llamada síndrome. Si un único bit cambió durante la transmisión o el almacenamiento, el síndrome señala su posición exacta y permite repararlo sin pedir de nuevo los datos.

El ejemplo clásico es Hamming(7,4): cuatro bits de información se convierten en una palabra de siete bits al incorporar tres controles. Esta guía desarrolla la distribución, codifica un ejemplo completo, introduce un fallo y lo corrige paso a paso. También aclara los límites del esquema básico y la función de la paridad global en SECDED.

Qué problema resuelve el código Hamming

El ruido, las interferencias, una celda débil, la radiación o un fallo de temporización pueden alterar bits en enlaces y memorias. Un solo bit de paridad permite saber que cambió una cantidad impar de bits, pero no identifica cuál. El código Hamming combina comprobaciones superpuestas para que cada posición pertenezca a un conjunto único de grupos.

Cada control solo indica aprobado o fallido. Sin embargo, la combinación de todos esos resultados codifica la ubicación del error. La redundancia no se limita a anunciar corrupción: forma un mapa para localizar el bit afectado.

Es una técnica de corrección de errores hacia delante. El emisor incluye redundancia antes de que ocurra el fallo y el receptor corrige localmente el caso previsto, en vez de depender siempre de una retransmisión.

Distancia de Hamming y capacidad de corrección

La distancia de Hamming entre dos cadenas de igual longitud es la cantidad de posiciones distintas. 101101 y 100001, por ejemplo, difieren en dos lugares y tienen distancia 2.

La distancia mínima entre palabras válidas determina la garantía del código:

Distancia mínimaCapacidad garantizada
2Detectar un error de bit
3Corregir un error de bit
4Corregir un error y detectar dos errores

El código Hamming básico tiene distancia mínima 3. Si una palabra válida sufre un cambio, el resultado sigue estando más cerca de una única palabra válida. Al añadir una paridad global, la forma extendida alcanza distancia 4 y ofrece SECDED: corrección de un error y detección de dos.

Cuántos bits de paridad hacen falta

Si hay m bits de datos y r bits de paridad, los resultados de control deben distinguir todas las posiciones y el caso sin error:

2^r >= m + r + 1

Para cuatro bits de datos, dos controles no bastan: 2^2 = 4, pero 4 + 2 + 1 = 7. Tres sí bastan porque 2^3 = 8 y 4 + 3 + 1 = 8. El resultado es una palabra de siete bits.

Para 11 bits de datos, cuatro controles cumplen 2^4 = 11 + 4 + 1, dando Hamming(15,11). En la notación Hamming(n,k), n es la longitud total y k la cantidad de datos útiles.

Dónde se colocan los bits de paridad

Numera las posiciones desde 1. Reserva las potencias de dos, como 1, 2, 4 y 8, para paridad; coloca los datos en los demás lugares.

La distribución Hamming(7,4) es:

Posición1234567
FunciónP1P2D1P4D2D3D4

Las direcciones binarias explican la cobertura:

PosiciónDirecciónControles
1001P1
2010P2
3011P1, P2
4100P4
5101P1, P4
6110P2, P4
7111P1, P2, P4

P1 comprueba 1, 3, 5 y 7, cuyas direcciones tienen activo el bit de unidades. P2 cubre 2, 3, 6 y 7; P4 cubre 4, 5, 6 y 7. Cada posición participa en una combinación distinta, de modo que los fallos forman una dirección única.

Ejemplo completo de codificación Hamming(7,4)

Codifiquemos los datos 1011 con paridad par. Coloca sus bits en las posiciones 3, 5, 6 y 7:

Posición1234567
ValorP1P21P4011

Calcular P1

P1 cubre 1, 3, 5 y 7. Los datos conocidos son 1, 0, 1, con dos unos. La cantidad ya es par, así que P1 vale 0.

Calcular P2

P2 cubre 2, 3, 6 y 7. Hay tres unos conocidos. P2 debe valer 1 para que el total sea cuatro.

Calcular P4

P4 cubre 4, 5, 6 y 7. Los valores 0, 1, 1 contienen dos unos, por lo que P4 vale 0.

La palabra final es:

Posición: 1 2 3 4 5 6 7
Palabra:  0 1 1 0 0 1 1
Resultado: 0110011

Con paridad impar se conserva la misma distribución, pero cada control se elige para dejar una cantidad impar de unos. Emisor y receptor deben compartir la convención.

Detectar y corregir un error de un bit

Supongamos que la posición 5 cambia de 0 a 1. El receptor obtiene 0110111. Al repetir los controles e incluir los bits de paridad:

ControlPosicionesResultado
P11, 3, 5, 7Falla; XOR da 1
P22, 3, 6, 7Pasa; XOR da 0
P44, 5, 6, 7Falla; XOR da 1

Ordena los resultados como P4-P2-P1:

P4 P2 P1 = 1 0 1
Binario 101 = posición decimal 5

El síndrome vale 5 y señala el bit alterado. Se invierte de 1 a 0, se recupera 0110011 y se extraen las posiciones 3, 5, 6 y 7 para obtener 1011. El conversor de binario a decimal permite verificar el valor posicional del síndrome durante el aprendizaje.

Procedimiento de un decodificador

Un decodificador práctico sigue estos pasos:

  1. Recibe la palabra con ancho fijo.
  2. Recalcula cada grupo según la paridad acordada.
  3. Combina los fallos en el síndrome, donde cada control aporta el valor de su posición.
  4. Si el síndrome no es cero y está dentro del rango, invierte esa posición bajo el modelo de un solo fallo.
  5. Elimina las posiciones de paridad y devuelve los datos.
  6. Si existe paridad global, la usa para distinguir uno y dos errores antes de corregir.

Los controles son reducciones XOR que pueden ejecutarse en paralelo con los circuitos de la guía de puertas lógicas. La guía del sistema binario explica por qué las potencias de dos producen direcciones únicas.

Código Hamming básico frente a SECDED

El esquema básico corrige un error. Si cambian dos bits, el síndrome puede apuntar a una tercera posición; invertirla convertiría dos fallos en tres. La forma de siete bits no distingue de manera fiable todos los errores dobles de los simples.

La variante extendida añade un bit de paridad sobre toda la palabra básica. El receptor combina el síndrome y ese control:

SíndromeParidad globalInterpretación
CeroPasaNo se detecta error
No ceroFallaUn error en la posición indicada; se corrige
CeroFallaFalló el propio bit global
No ceroPasaError doble detectado; no se corrige como simple

Este comportamiento SECDED aparece habitualmente en memoria ECC. Corrige cualquier error aislado y detecta, pero no repara, dos errores. Las ráfagas y los fallos de un dispositivo completo requieren códigos más fuertes o protección específica.

Formas mayores y acortadas

Las longitudes binarias perfectas son 2^r - 1: 7, 15, 31, 63 y otras. También es posible acortar un código fijando ciertas posiciones de datos y omitiéndolas en la transmisión. La nueva palabra lleva menos información, pero conserva las relaciones de paridad heredadas.

Un sistema real debe documentar numeración, orden en el cable, empaquetado en bytes, convención par o impar y presencia de paridad global. Dos implementaciones pueden usar la misma familia matemática y mostrar los bits en direcciones opuestas; la interoperabilidad depende del formato completo.

Aplicaciones habituales

  • Memoria ECC: las variantes extendidas corrigen fallos aislados e informan errores dobles.
  • Comunicación digital: un enlace sencillo repara un bit ocasional sin esperar una retransmisión.
  • Almacenamiento y sistemas integrados: palabras pequeñas reciben protección con lógica moderada.
  • Educación y diseño: el método muestra con claridad cómo ecuaciones redundantes localizan un fallo.
  • Base conceptual: códigos modernos más fuertes usan otras matemáticas, pero conservan ideas de distancia mínima y síndrome.

Es apropiado cuando predominan errores de un solo bit independientes y el coste debe ser bajo. Si el canal suele producir daños agrupados, la selección debe basarse en esas estadísticas reales.

Errores frecuentes

  • Numerar desde cero: la derivación estándar comienza en 1 para situar controles en potencias de dos.
  • Colocar datos en 1, 2, 4 u 8: esas posiciones están reservadas.
  • Mezclar paridad par e impar: ambas sirven, pero codificador y decodificador deben coincidir.
  • Leer el síndrome al revés: P1 es el bit menos significativo; P4-P2-P1 forma la posición.
  • Confiar en el básico para errores dobles: hace falta paridad global para obtener SECDED.
  • Corregir una dirección fuera de rango: debe tratarse como fallo de formato o error múltiple.
  • No acordar el orden de datos: hay que definir dónde entra el primer bit suministrado.

Preguntas frecuentes

¿Qué es el código Hamming en términos sencillos?

Añade controles de paridad superpuestos. La combinación de los controles fallidos forma la dirección de un bit incorrecto, que puede invertirse para recuperar la palabra.

¿Por qué la paridad ocupa potencias de dos?

Esas posiciones tienen una sola unidad en su dirección binaria. Las demás presentan combinaciones únicas, por lo que su participación en grupos identifica cada posición.

¿Qué significa Hamming(7,4)?

Una palabra total de siete bits que transporta cuatro bits de datos y tres de paridad. La versión básica corrige un fallo dentro de esa palabra.

¿Puede corregir dos errores?

No. La forma estándar corrige uno. Con paridad global detecta dos, pero tampoco puede repararlos. La corrección múltiple exige un código más potente.

¿Qué es el síndrome?

Es el resultado conjunto de todas las comprobaciones. Cero indica que los controles básicos pasan; un valor distinto de cero representa el índice binario del error bajo el modelo de un solo fallo.

¿Distancia de Hamming y código Hamming son lo mismo?

No. La distancia es una medida general entre cadenas de igual longitud. El código es una familia correctora concreta diseñada con esa medida.

¿El código Hamming cifra los datos?

No. La redundancia sirve para fiabilidad y es pública. La confidencialidad requiere cifrado; este esquema no impide leer el contenido.

Resumen

El código Hamming reserva potencias de dos para paridad y hace que cada control cubra un conjunto distinto de direcciones binarias. Los fallos forman un síndrome que localiza un bit alterado. Hamming(7,4) transforma cuatro bits de datos en siete, y la paridad global lo extiende a SECDED. La garantía debe respetarse: corregir uno, detectar dos solo en la versión extendida y adoptar protección superior cuando sean probables errores múltiples o en ráfaga.

Administrador

Administrador