InfyCalculator
English
💻

Calculadora de código Hamming: codificar, detectar y corregir errores

Codifica bits de datos en código Hamming (7,4), (15,11) o de cualquier longitud con bits de paridad en las posiciones 1, 2, 4, 8…, con opción SECDED, o verifica una palabra recibida y corrige un error de un bit.

Modo
Bits
Tipo de código
Cargando calculadora…

Cómo funciona

Bits de paridad en las posiciones 1, 2, 4, 8 … (potencias de dos); los bits de datos ocupan el resto · r bits de paridad protegen k bits de datos si 2ʳ ≥ k + r + 1 · bit de paridad p = XOR de todas las posiciones cuyo índice tiene activo el bit p (paridad par) · síndrome = XOR de las posiciones de todos los 1 de la palabra recibida = posición de un error simple · SECDED añade un bit de paridad global para distinguir errores simples de dobles

El código de Richard Hamming coloca los bits de paridad en las posiciones que son potencia de dos, de modo que cada posición de datos queda verificada por una combinación única de bits de paridad. Cuando un bit cambia, las comprobaciones que fallan escriben su posición en binario (el síndrome), así que el receptor puede volver a invertirlo. La versión extendida (SECDED) añade un bit de paridad global: un síndrome distinto de cero con la paridad global correcta indica que cambiaron dos bits, lo que se detecta pero no se corrige. La memoria ECC usa exactamente este esquema, normalmente (72,64).

Ejemplo resuelto

Codificar 1011 requiere 3 bits de paridad (2³ ≥ 4 + 3 + 1), lo que da un Hamming (7,4). Los datos van a las posiciones 3, 5, 6 y 7; P1 = d3 ⊕ d5 ⊕ d7 = 0, P2 = d3 ⊕ d6 ⊕ d7 = 1 y P4 = d5 ⊕ d6 ⊕ d7 = 0, así que la palabra de código es 0110011 (tasa 4/7 = 57.14%). Si se recibe con la posición 5 invertida (0110111), el síndrome es 101 = 5 y el decodificador lo corrige.

Fuentes: R. W. Hamming, Error detecting and error correcting codes, Bell System Technical Journal 29(2), 1950 · Hamming code — Wikipedia

Preguntas frecuentes

¿Cuántos bits de paridad necesita un código Hamming?

El menor r tal que 2ʳ ≥ k + r + 1: 3 bits de paridad para 4 bits de datos (7,4), 4 para 11 (15,11), 5 para 26 (31,26) y 6 para 57 (63,57). Suma uno más para SECDED, por ejemplo (8,4) o (72,64).

¿Cómo se encuentra la posición del error?

Haz el XOR de las posiciones de todos los bits que valen 1 (o, lo que es lo mismo, recalcula cada comprobación de paridad). El resultado leído en binario es el síndrome: 0 significa que no hay error y cualquier otro valor es la posición del bit invertido.

¿El código Hamming puede corregir dos errores?

No. El Hamming simple corrige un error; con dos errores “corrige” el bit equivocado. El Hamming extendido (SECDED) detecta los errores dobles para poder reportarlos en vez de corregirlos mal, pero para corregir más errores se necesitan códigos más potentes como BCH o Reed–Solomon.

¿Usa paridad par o impar?

Paridad par, la convención de los libros de texto: cada bit de paridad hace que la cantidad de 1 de su grupo sea par. Algunos ejercicios usan paridad impar; en ese caso cada bit de paridad se invierte, pero las posiciones y la lógica del síndrome son las mismas.

Calculadoras relacionadas

Esta calculadora tiene fines informativos. Verifica los resultados importantes antes de tomar decisiones.