viernes, 15 de noviembre de 2013

Cómo calcular un software de código Hamming

El código de Hamming es el código de corrección de errores de uso más frecuente. 

CALCULAR HAMMING

Richard Hamming desarrollado el código de Hamming en los Laboratorios Bell en la década de 1940 para su uso en las telecomunicaciones, pero posteriormente se encontró aplicaciones en ciencias de la computación. El Hamming es el más famoso y más utilizado, del códigos correctores de errores. Estos códigos añaden unos pocos bits a una cadena binaria. Cuando se transmite la cadena - y posiblemente dañado en transición - los bits adicionales permiten que el receptor para saber si la cadena de transmisión se corrompió. El código Hamming también dice que poco ha cambiado. La posibilidad de que más de un bit se cambió es generalmente considerado demasiado pequeño como para preocuparse.



Crear una matriz en la que se le agrega los bits de control de los bits de datos para que la cadena que se transmite. Para obtener el espacio correcto, es útil para definir la pequeña función que muestra dónde van los bits de control. La función place_bit se define así: int place_bit (int k) {int i; for (i = 1, i GT k, i = 2 * i) {if (i == k) return 1;} return 0;} Esta función devuelve 1 si la entrada es una potencia de 2, y 0 en caso contrario. Con esta función, usted puede poner los bits de datos en una matriz con la función place_data que se define así: int place_data (cadena data_string) {int j, k; for (j = k = 0; data_string (k) = \ 0! ; J + +, K + +) si place_bit (k) a continuación, j + + más data_ray (j) = data_string (k)} Esto pone bits de datos en data_ray, dejando espacios para los bits de verificación que va a añadir para la corrección de errores.



Calcular los bits de control y añadirlos a la data_array. La función que hace esto es add_check_bits y se ve así: add_check_bits int () {int m, n, p, para (m = 0, m LT data_ray_max, m + +) si place_bit (m) después de (n = 0, n LT m, n + +) p = p XOR data_ray (m + n); data_ (m + n) = p}}. Esto calcula los bits de control y pone los bits en el lugar correcto.



Transmitir la cadena de datos.



Vuelva a calcular los bits de control cuando se reciben los datos. Si todos los bits de control son correctas, no se han cambiado los bits durante la transmisión. Si sólo hay un bit de control no es correcto, que poco se corrigió durante la transmisión. Si más de uno de los bits de control es incorrecta, agregue las posiciones de los bits erróneos para encontrar la parte que fue dañada. El código para encontrar el error es: find_error int () {int k, m, n, p, para (k = 1, k LT data_ray_max; k * = 2) {for (m = 0, m LT data_ray_max, m + +) si place_bit (m) a continuación, para (n = 0; n LT m, n + +) p = p XOR data_ray (m + n);! data_ (m + n) = p} si (p = data_ray (m + n) de regreso 1;} return 0;}.



Consejos y advertencias

Si se encuentra en la posición k data_ray estar en error, la forma de solucionarlo es con la función fix_ray, que se define así: fix_ray int (int k) {data_ray (k) = data_ray (k) XOR 1;}.



El código Hamming se puede ampliar para comprobar si hay más de un bit de la corrupción, pero si revisas durante demasiados pedazos, los bits de control pueden superar en número a los bits de datos. Si el canal es este ruido, tal vez sería mejor simplemente retransmitir señales dañadas.



 

1 comentario: