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.
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 -> 10000111Al 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ódigo | Qué 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. |
| Hamming | Detecció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-Solomon | Detección y corrección, especialmente eficaz frente a errores en ráfaga, es decir, varios bits seguidos. |
| Golay | Detección y corrección. |
| Hadamard | Detecció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.
| Decimal | Binario natural | Código Gray |
|---|---|---|
| 0 | 000 | 000 |
| 1 | 001 | 001 |
| 2 | 010 | 011 |
| 3 | 011 | 010 |
| 4 | 100 | 110 |
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.
| Mecanismo | Cómo se obtiene | Para 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 hash | Un 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