robot de la enciclopedia para niños

Código Hamming para niños

Enciclopedia para niños
Archivo:Cube with binary vertices
Un cubo con vértices binarios, mostrando cómo se conectan los puntos que difieren en una sola posición.

En el mundo de la informática, el código de Hamming es una forma inteligente de encontrar y arreglar errores en los datos. Fue inventado por un científico llamado Richard Hamming. Imagina que envías un mensaje digital (hecho de ceros y unos) y, en el camino, un "0" se convierte en "1" o viceversa. El código de Hamming puede detectar si un solo bit (un cero o un uno) ha cambiado por error y, lo que es aún mejor, puede corregirlo. Esto es una gran mejora comparado con métodos más antiguos, como el bit de paridad, que solo podían decirte que había un error, pero no dónde estaba ni cómo arreglarlo.

¿Por qué necesitamos códigos para corregir errores?

Cuando la información viaja de un lugar a otro, o se guarda en un dispositivo, a veces ocurren pequeños fallos. Un "0" puede cambiar a "1" o un "1" a "0". Si esto pasa, el mensaje original se altera. Para que las computadoras funcionen bien, necesitan formas de asegurarse de que los datos que reciben son los mismos que se enviaron.

Métodos antiguos para detectar errores

Antes de que Richard Hamming creara su código, existían otras maneras de intentar detectar errores. Aquí te contamos algunas:

El bit de paridad

Este método es como añadir una pequeña "pista" al final de tus datos. Consiste en agregar un bit extra, llamado bit de paridad, que indica si el número de unos en el mensaje es par o impar.

  • Si el número de unos es par, el bit de paridad es "0".
  • Si el número de unos es impar, el bit de paridad es "1".

Si un solo bit cambia durante la transmisión, la paridad del mensaje también cambiará. Así, la computadora receptora puede saber que algo salió mal. Sin embargo, este método tiene un problema: si dos bits cambian al mismo tiempo, la paridad podría seguir siendo la misma y el error no se detectaría. Además, no te dice qué bit es el que falló, así que el mensaje completo debe enviarse de nuevo.

El código "Dos entre cinco"

En los años 40, los Laboratorios Bell usaron un código un poco más avanzado. En este sistema, cada grupo de cinco bits (llamado "penta-bit") siempre debía tener exactamente dos unos. Si la computadora recibía un penta-bit con un número diferente de unos, sabía que había un error. Pero, al igual que la paridad, si un "0" cambiaba a "1" y un "1" cambiaba a "0" dentro del mismo grupo de cinco bits, el error no se detectaba.

El código de repetición

Este método es muy sencillo: ¡simplemente repite cada bit varias veces! Por ejemplo, si quieres enviar un "1", podrías enviar "111". Si el receptor recibe "001", "010" o "100", puede suponer que el bit original era "0". Y si recibe "110", "101" o "011", asume que era "1". Este tipo de código puede corregir errores, pero es muy ineficiente. Necesitas enviar mucha más información de la que realmente tienes, lo que hace que la transmisión sea muy lenta. Además, si ocurren demasiados errores al mismo tiempo, el código puede equivocarse al intentar corregirlos.

¿Cómo funcionan los códigos de Hamming?

Richard Hamming se dio cuenta de que si se añadían más bits de control al mensaje y se organizaban de una forma especial, se podría saber exactamente qué bit estaba equivocado. Imagina que tienes siete bits de información. Si solo siete posibles errores pueden ocurrir (uno por cada bit), podrías usar solo tres bits extra para señalar cuál de los siete bits es el que falló.

Hamming estudió los códigos existentes y creó una forma de describirlos. Por ejemplo, un código de paridad para un mensaje de siete bits (como el Código ASCII) se describiría como un código (8,7). Esto significa que el mensaje total tiene 8 bits, de los cuales 7 son datos y 1 es el bit de paridad. El código de repetición que enviaba "111" para un solo bit de datos se describiría como (3,1).

Hamming también introdujo el concepto de "distancia" (ahora conocida como distancia de Hamming). Esta distancia mide cuántos bits deben cambiar para que una palabra de código se convierta en otra. Un código de paridad tiene una distancia de 2, porque si dos bits cambian, el error no se detecta. El código de repetición (3,1) tiene una distancia de 3, porque se necesitan al menos tres cambios para que el mensaje se confunda con otro.

La meta de Hamming era crear códigos que tuvieran una gran "distancia" (para detectar y corregir más errores) y que al mismo tiempo fueran muy eficientes (usando la menor cantidad posible de bits extra). La clave de sus sistemas fue intercalar los bits de paridad entre los bits de datos.

El código Hamming (7,4)

El código de Hamming más conocido es el llamado Hamming (7,4), que Richard Hamming presentó en 1950. Este código añade tres bits de comprobación por cada cuatro bits de datos. El código Hamming (7,4) puede corregir cualquier error de un solo bit. Sin embargo, si hay errores en dos o más bits, el código podría corregir el mensaje de forma incorrecta, pensando que solo hubo un error. Para detectar (pero no corregir) errores de dos bits, se puede añadir un bit extra, creando lo que se conoce como Hamming extendido.

El proceso para el código Hamming (7,4) funciona así:

1. Los bits que están en posiciones que son potencias de dos (1, 2, 4, 8, 16, etc.) se usan como bits de paridad. 2. Los bits en las demás posiciones (3, 5, 6, 7, 9, 10, etc.) se usan para los datos. 3. Cada bit de paridad se calcula revisando un grupo específico de bits de datos. Por ejemplo: * El bit de paridad en la posición 1 revisa los bits en las posiciones 1, 3, 5, 7, 9, etc. * El bit de paridad en la posición 2 revisa los bits en las posiciones 2, 3, 6, 7, 10, 11, etc. * El bit de paridad en la posición 4 revisa los bits en las posiciones 4, 5, 6, 7, 12, 13, 14, 15, etc. * En general, un bit de paridad en la posición 'n' (donde 'n' es una potencia de dos) revisa todos los bits cuyas posiciones, al escribirlas en binario, tienen un "1" en la misma posición que 'n'.

Ejemplo de cómo funciona el código Hamming

Vamos a ver un ejemplo con una palabra de datos de 7 bits: "0110101". Usaremos 'd' para los bits de datos y 'p' para los bits de paridad.

Primero, colocamos los bits de datos en sus posiciones y calculamos los bits de paridad (usando paridad par, donde el número de unos debe ser par).

Cálculo de los bits de paridad en el código Hamming
p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7
Palabra de datos (sin paridad): 0 1 1 0 1 0 1
p1 1 0 1 0 1 1
p2 0 0 1 0 0 1
p3 0 1 1 0
p4 0 1 0 1
Palabra de datos (con paridad): 1 0 0 0 1 1 0 0 1 0 1

La nueva palabra de datos (con los bits de paridad) es ahora "10001100101".

Ahora, imaginemos que el último bit de la derecha cambia de "1" a "0" por un error. La palabra recibida sería "10001100100".

Veamos cómo se comprueba:

Comprobación de los bits de paridad (con el último bit cambiado)
p1 p2 d1 p3 d2 d3 d4 p4 d5 d6 d7 Prueba de paridad Bit de comprobación
Palabra de datos recibida: 1 0 0 0 1 1 0 0 1 0 0 1
p1 1 0 1 0 1 0 Error 1
p2 0 0 1 0 0 0 Error 1
p3 0 1 1 0 Correcto 0
p4 0 1 0 0 Error 1

Si la paridad de una fila no es correcta (es "1" en lugar de "0"), significa que hay un error en alguno de los bits que esa paridad revisa.

Al final, se combinan los resultados de los bits de comprobación (los "1" y "0" de la última columna). Si los bits de comprobación son "1011" (leyéndolos de p4 a p1), esto en número decimal es 11. Esto significa que el bit número 11 de la palabra completa (contando desde la izquierda) es el que tiene el error.

p4 p3 p2 p1
Binario 1 0 1 1
Decimal 8 2 1 Σ = 11

Como el bit 11 es el que falló, lo cambiamos. Si era "0", lo hacemos "1". Así, la palabra "10001100100" se convierte de nuevo en "10001100101", ¡y el error ha sido corregido!

¿Qué es el Hamming Extendido?

Para hacer el código de Hamming aún más robusto y poder detectar errores en dos bits (aunque no corregirlos), se añade un bit de paridad extra. Este se llama Hamming Extendido. Con este bit adicional, pueden ocurrir tres cosas:

1. No hay error: El código de Hamming no detecta nada y la paridad extra también está bien. 2. Un bit de error: El código de Hamming te dice dónde está el error y lo corriges. Si el error fue en un bit de paridad, el código de Hamming podría ser cero, pero la paridad extra te dirá que algo está mal. 3. Dos bits de error: El código de Hamming te indicará un error, pero la paridad extra te dirá que hay un problema más grande. En este caso, el sistema sabe que hay dos errores y no intenta corregirlos, porque podría empeorar la situación.

Véase también

Kids robot.svg En inglés: Hamming code Facts for Kids

kids search engine
Código Hamming para Niños. Enciclopedia Kiddle.