Saltar al contenido

¿Cómo es útil una suma de verificación de complemento a 1 para la detección de errores?

Hola usuario de nuestro sitio web, hallamos la respuesta a tu búsqueda, continúa leyendo y la obtendrás a continuación.

Solución:

Creo que el ejemplo que estás buscando se puede encontrar aquí.

La razón por la que hacemos el complemento a 1 es que cuando el complemento a 1 se suma a la suma de todos los valores, y el resultado se recorta a la longitud de bits de la máquina (16 bits en el ejemplo anterior), todo es 1. Las CPU tienen una función para tomar el complemento de 1 de los números, y tomar el complemento de 1 de todo-1 es todo-0.

La razón: las CPU odian trabajar con bits, excepto en fragmentos de los que normalmente usan. Por lo tanto, agregar dos números de 64 bits puede tomar 1 ciclo, pero verificar todos los bits de ese número individualmente tomará muchos más (en un bucle ingenuo, quizás hasta 8×64 ciclos). Las CPU también tienen la capacidad de tomar complementos de 1 de manera trivial y detectar que el resultado del último cálculo fue cero sin inspeccionar bits individuales y bifurcarse en función de eso. Básicamente, es una optimización que nos permite verificar las sumas de verificación muy rápido. Dado que la mayoría de los paquetes están bien, esto nos permite verificar la suma de verificación sobre la marcha y llevar los datos al destino mucho más rápido.

Ejemplo, tiene tres palabras en el paquete UDP que debe enviar.

0110011001100000
0101010101010101
1000111100001100

UDP en el lado del remitente realiza el complemento a 1 de la suma de todas las palabras de 16 bits. La suma de las dos primeras de estas palabras de 16 bits es

0110011001100000
+
0101010101010101
--> 1011101110110101 

Agregar la tercera palabra a la suma anterior da, Tenga en cuenta que esta última adición tuvo un desbordamiento, que se envolvió

--> 0100101011000010

El complemento a 1 se obtiene convirtiendo todos los 0 en 1 y convirtiendo todos los 1 en 0.

Por tanto, el complemento a 1 de la suma 0100101011000010 es 1011010100111101, que se convierte en la suma de comprobación. En el receptor, se suman las cuatro palabras de 16 bits, incluida la suma de comprobación. Si no se introducen errores en el paquete, entonces claramente la suma en el receptor será 1111111111111111. Si uno de los bits es un 0, sabemos que se han introducido errores en el paquete.

El complemento a uno (inversión de bits) de una suma de comprobación es útil al menos de dos maneras.

  1. Simplifica el proceso de verificación de la suma de comprobación

Si, por ejemplo, hay un byte de suma de verificación final de 56, el complemento (inversión de bits) será 199. Súmalos y el resultado es 255. El razonamiento: al complementar la suma de verificación final, el resultado final siempre será 255 cuando incluyendo el dígito de la suma de control en el cálculo de la suma. Realizar el complemento por segunda vez con 255 producirá 0, que para las CPU en ese momento era una forma más eficiente de confirmar que la suma de verificación es válida sin tener que comparar dos números.

  1. Permite detectar un error indetectable

Calcular un mensaje de n ceros produce una suma de verificación de cero. Esto significa que un mensaje legítimo que consta de ceros es indistinguible de una situación de pérdida o borrado de memoria que debería detectarse como un error. Al complementar la suma de verificación final de 0 en este caso, el resultado es 255, lo que evita que un resultado de cero siga siendo válido.

Si sostienes algún recelo y capacidad de arreglar nuestro división te recordamos realizar una explicación y con placer lo estudiaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *