El código de Hamming es un código corrector de errores: añade unos pocos bits de paridad a tus datos para que, si un bit se corrompe al transmitirse o almacenarse, se pueda detectar y corregir automáticamente sin reenviar nada. Se usa en memorias ECC, comunicaciones y almacenamiento. Un código Hamming clásico corrige 1 bit erróneo por palabra; con la extensión SECDED, además detecta 2. Todo el cálculo ocurre en tu navegador.
1. Codificar — escribe tus bits de datos y obtén la palabra código con la paridad ya intercalada; haz clic en un bit para simular un error.
2. Detectar y corregir — pega una palabra código (con o sin fallo) y verás la síndrome, el bit erróneo y la palabra corregida.
3. Simulador — envía la misma palabra miles de veces por un canal con ruido y mide cuántas se corrigen, se detectan o fallan.
El interruptor SECDED y el menú Ejemplos están en las tres pestañas. Todo se recalcula solo al escribir (sin botón).
En Codificar tienes dos modos:
• Bits — solo caracteres 0 y 1 (los datos, sin bits de paridad: se añaden solos).
• Texto — texto ASCII/Latin-1; cada carácter se convierte a 8 bits (los caracteres fuera de ese rango no se admiten).
En Detectar y corregir se pega la palabra código completa (datos + paridad), también en 0 y 1. Cualquier otro carácter marca el campo en rojo. No hay límite de longitud: cuantos más bits de datos, más eficiente es el código (menos paridad por bit).
Los bits de paridad se colocan en las posiciones potencia de 2 (1, 2, 4, 8, 16…) y los de datos rellenan el resto. Para k bits de datos se eligen los r bits de paridad justos para que 2^r ≥ k + r + 1 (así 4 datos → 3 paridad = Hamming(7,4); 8 datos → 4 paridad).
Cada bit de paridad Pi cubre las posiciones cuyo índice tiene ese bit a 1: P1 (1, 3, 5, 7…), P2 (2, 3, 6, 7…), P4 (4, 5, 6, 7…). Su valor se fija (con XOR) para que la cantidad de unos que cubre sea par. La tabla Cobertura muestra qué posiciones vigila cada uno.
Al recibir la palabra, se recomprueba cada paridad con un XOR. La síndrome es la suma de las posiciones de paridad que fallan y, por cómo se colocaron, vale exactamente la posición del bit erróneo: síndrome 0 = sin error; síndrome 5 (= 101 en binario) = el bit 5 está mal, y se invierte para corregirlo.
Ojo: Hamming siempre supone un solo error. Si hay 2 bits mal, la síndrome apunta a un tercer bit inocente y lo "corrige" mal → fallo silencioso (datos erróneos sin aviso). Para eso está SECDED.
Al activar SECDED se añade un bit de paridad global (P0) que cubre toda la palabra, subiendo la distancia mínima de 3 a 4. Con eso el código corrige 1 error y detecta 2 (aunque no puede corregir los dobles). Es lo que usa la memoria ECC.
La lógica combina la síndrome con P0: síndrome 0 y P0 correcto = sin error; síndrome ≠ 0 y P0 falla = 1 error corregible; síndrome ≠ 0 pero P0 correcto = error doble detectado; solo P0 falla = el propio P0 se corrompió.
Tras codificar, haz clic en cualquier bit de la palabra para "corromperlo" y observa al instante cómo la síndrome localiza el bit señalado y lo corrige. Si cambias 2 o más bits verás el fallo silencioso (o, con SECDED, la detección del error doble). Usa Restaurar palabra para volver a la original o Enviar a Detectar y corregir para analizarla en la otra pestaña.