Saltar al contenido

Control de errores

Qué se añade a unos datos para saber si han llegado intactos, qué códigos se limitan a detectar el fallo y cuáles además lo arreglan sin volver a pedir el dato.

El bit de paridad

El mecanismo de control más sencillo consiste en añadir un bit extra al final de cada grupo de datos. Ese bit no lleva información: se calcula para que el número total de unos del conjunto sea par o sea impar, según la estrategia que se haya acordado. Es lo que convierte los 7 bits de un carácter ASCII en los 8 bits de un byte.

texto
Paridad par sobre 7 bits

  1000001  ->  tiene dos unos, ya es par  ->  bit de paridad 0  ->  10000010
  1000011  ->  tiene tres unos, es impar ->  bit de paridad 1  ->  10000111

Al recibir el dato se vuelve a contar. Si la cuenta no cuadra con lo acordado, algo se ha alterado por el camino. La limitación es doble: solo dice que hay un error, no dónde está, y si se han corrompido dos bits a la vez la paridad vuelve a cuadrar y el fallo pasa desapercibido.

La paridad detecta, pero no corrige, y solo caza un número impar de bits alterados.

Para el examen

  • Qué hace: iguala la cuenta de unos a par o impar

  • Qué NO hace: no corrige, solo detecta

  • Su punto ciego: dos bits alterados a la vez

Códigos detectores y correctores

Cuando volver a pedir el dato es caro o imposible (una sonda espacial, un disco óptico rayado, un código impreso en una etiqueta), no basta con detectar el error: hace falta reconstruirlo. Para eso existen códigos que añaden redundancia suficiente como para deducir cuál era el valor original.

CódigoQué hace
CRC (comprobación de redundancia cíclica)Detección. Calcula un valor de comprobación a partir de los datos y lo envía con ellos.
HammingDetección y corrección. Reparte varios bits de paridad de forma que su combinación señala la posición exacta del bit erróneo.
Reed-SolomonDetección y corrección, especialmente eficaz frente a errores en ráfaga, es decir, varios bits seguidos.
GolayDetección y corrección.
HadamardDetección y corrección.

Que un código solo detecte o además corrija no es una decisión de diseño arbitraria: depende de su distancia mínima, es decir, del número de bits en que se diferencian las dos palabras válidas más parecidas entre sí. Con una distancia mínima d se pueden detectar hasta d menos 1 errores, y corregir la mitad de esa cantidad redondeando hacia abajo. La paridad simple tiene distancia 2: por eso detecta un error y no corrige ninguno.

El CRC se queda en detectar. Hamming, Reed-Solomon, Golay y Hadamard detectan y además corrigen.

Para el examen

  • Solo detecta: CRC

  • También corrigen: Hamming, Reed-Solomon, Golay y Hadamard

  • Reed-Solomon: especialmente bueno con errores en ráfaga

  • Con distancia mínima d: se detectan d-1 errores y se corrigen (d-1)/2 redondeando hacia abajo

El código Gray

El código Gray es una forma de ordenar los números en binario con una propiedad concreta: entre dos valores consecutivos cambia siempre un único bit. En binario normal, pasar del 3 (011) al 4 (100) obliga a cambiar los tres bits a la vez.

DecimalBinario naturalCódigo Gray
0000000
1001001
2010011
3011010
4100110

Esa propiedad importa cuando los bits no cambian todos en el mismo instante. En un sensor de posición o un codificador rotatorio, cambiar tres bits a la vez puede producir durante unos microsegundos una lectura intermedia que no corresponde a ninguna posición real. Con Gray eso no puede pasar, porque solo hay un bit en movimiento. También simplifica los mapas de Karnaugh al diseñar circuitos.

Gray no es un código detector ni corrector de errores: es una codificación que evita lecturas intermedias erróneas al cambiar de valor.

Para el examen

  • Su propiedad: entre dos valores consecutivos cambia UN solo bit

  • Dónde se usa: encoders de posición y mapas de Karnaugh

  • Lo que no hace: no corrige errores

Checksum y funciones hash

Los dos sirven para comprobar que unos datos no se han alterado, y los dos funcionan igual de cara al usuario: se calcula un valor a partir del contenido, se guarda o se transmite aparte, y al llegar se recalcula y se compara. Si los dos valores no coinciden, el contenido ha cambiado.

MecanismoCómo se obtienePara qué se usa
Checksum (suma de verificación)Una función matemática de redundancia sobre los datos, típicamente una suma.Detectar errores accidentales en una transmisión. Asegura la integridad frente a fallos, no frente a alguien que manipule a propósito.
Función hashUn algoritmo que transforma un bloque de datos de cualquier tamaño en una cadena de caracteres de longitud fija.Verificar la integridad de un fichero o de un mensaje. La longitud del resultado no depende del tamaño de la entrada.

La característica que define al hash es esa longitud fija: da igual que se le pase un fichero de 2 KB o de 2 GB, la huella resultante mide siempre lo mismo. Y un cambio de un solo bit en la entrada produce una huella completamente distinta, que es lo que la hace útil para comprobar descargas.

Para el examen

  • Checksum: redundancia frente a errores accidentales

  • Hash: huella de longitud FIJA, sea cual sea la entrada