Tecnología

Inicio

Cómo calcular un software de código de Hamming

Cómo calcular un software de código de Hamming


Richard Hamming desarrolló el código de Hamming en los Laboratorios Bell en la década de 1940 para su uso en telecomunicaciones, pero posteriormente se encontró aplicaciones en ciencias de la computación. El Hamming es el más famoso, y se utiliza con mayor frecuencia, de la "corrección de errores" códigos. Estos códigos se suman unos pocos bits de una cadena binaria. Cuando la cadena se transmite - y posiblemente dañado en transición - los bits adicionales permiten que el receptor de saber si la cadena de transmisión se corrompió. El código de Hamming también indica qué poco ha cambiado. La posibilidad de que más de un bit se cambió por lo general se considera demasiado pequeño para preocuparse.

Instrucciones

1 Configurar una matriz en la que se le agrega los bits de control de los bits de datos para hacer la cadena que se transmite. Para obtener el espacio correcto, es útil para definir la pequeña función que muestra donde los bits de control van. 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 se puede poner los bits de datos en una matriz con la función "place_data" que se define así: "place_data int (cadena data_string) {int j, k; para (j = k = 0; data_string (k) = '\ 0'; j ++, k ++) si place_bit (k), entonces j ++ más data_ray (j) = data_string (k)} Esto pone bits de datos en data_ray, dejando espacios para los bits de control va a agregar para corrección de errores.

2 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), entonces para (n = 0; n LT m; n ++) p =

ray datos p XOR (m + n); datos (m + n) = p}}. "Esto calcula los bits de control y pone los bits en el lugar correcto.

3 Transmitir la cadena de datos.

4 Volver a calcular los bits de control cuando se reciben los datos. Si todos los bits de control son correctas, no se cambiaron los bits durante la transmisión. Si sólo hay un bit de comprobación es incorrecta, que poco se corrigió durante la transmisión. Si hay más de uno de los bits de control es incorrecto, añadir las posiciones de los bits incorrectos para encontrar el bit que fue dañado. El código para detectar el error es: "int find_error () {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), entonces para (n = 0; n LT m; n ++) p = p XOR ray de datos (m + n); ! datos (m + n) = p} if (p = data_ray (m + n) return 1;} return 0;} ".

Consejos y advertencias

  • Si se determina que la posición k en data_ray estar en error, la manera de solucionarlo es con la función fix_ray, que se define así: "int fix_ray (int k) {data_ray (k) = data_ray (k) XOR 1;} ".
  • El código de Hamming se puede ampliar para comprobar si hay más de un bit de la corrupción, pero si revisas para demasiadas trozos, los bits de control puede superar en número a los bits de datos. Si el canal es este ruido, tal vez sería mejor simplemente retransmitir señales corruptos.