Programa+Metodo+Hamming

Se utilizo el IDE netbeans 6.5, son solo 3 archivos java. Generar un proyecto Net Beans y pegar las clases y listo, asu funcionaria el programa.
 * Programa que realiza el metodo hamming con mensajes de 7 bits ( solo debe contener el mensaje 0 y 1) y asi generara un arreglo de 11 bits para comprobar errores.

link de descarga:**

[|Metodo Hamming]

//Diego Alvarez Chavarria Arquitectura de las computadoras I Ing. Computacion 5° Semestre UMQ//
 * subio archivo:**

---


 * DETECCIÓN Y CORRECCIÓN DE ERRORES MEDIANTE EL CÓDIGO HAMMING.**

El método de parida con un solo bit es eficiente en la detección de errores hay confiabilidad en el sistema de comunicación. De hecho, el peso del dato queda determinado con m=n+1 bits, donde n es el número de bits que contiene la información. Este método solamente puede detectar errores de dos datos que difieran en un bit; ósea, tengan distancia uno y que cambie, por error del sistema, solamente un bit. Sin embargo, no los corrige y a lo sumo, puede señalar error y/o solicitar que vuelvan a enviar el byte, dato, palabra, o bloque de información que presentó el porblema de comunicación. De la misma forma, si hay cambios de distancias pares (2, 4, 6,...), el método no detectará error. Sin embargo, en las distancias imparesseñaliza los errores. En 1950 R.W. Hamming introdujo un método para dectar y corregir errores de datos en los sistemas de comunicación donde las distancias pueden ser mayores a la unidad. Este código trabaja con una distancia mínima de tres y puede detectar errores con cambios de 1 o 2 bits y corregir, cambios de un solo bit. Los bits necesarios para el código Hamming se diciden en dos grupos; m bits de información y k bits de chequeo o paridad, por lo que, el tamaño del dato a transmitir debe ser n=m+k bits. Éste debe cumplir con la siguiente ecuación: (ec.1.9) La paridad del código puede ser par o impar, sin embargo, toda la información relacionada está dada en paridad par. Por lo tanto, los ejemplos se realizaran tomando como referencia codificación Hamming de paridad par con el número de bits n igual a siete. En la figura 1.7 se observa la distribución de paridades para los bits de chequeo con formato de siete bits de dato. De esta forma, al aplicar la E.c.1.9 se determina que m=4 y k=3, por lo tanto lainformación que se puede trasmitir va desde 0000**2 hasta** 1111**2**; éstos están distribuidos, en la figura 1.7 como  **I7**, **I6**, **I5**, **I3** y deben mezclarse con los de chequeo **C4**, **C2**, **C1**. Estos últimos ocupan las posiciones de la potencia en base 2 indicada por los subíndices dos, uno y cero respectivamente. Figura 1.7. Formación del código Hamming de 7 bits.

El código se forma entrelazando los bits de información (q3 q2 q1 q0) con los bits de control (h2 h1 h0) de forma que los subíndices de h correspondan con la posición decimal del código formado. Los bits (q3 q2 q1 q0) de información se hacen corresponder, en la figura 1.7, con los bits (I7 I6 I5 I3) respectivamente; la finalidad es ubicarlos en la posición decimal del código. Del mismo modo, (h2 h1 h0) es equivalente con las posiciones según en subíndice h2=C2**2**=C4; h1=C2**1**=C2; h0=C2**0**=C1. Finalmente el código de siete bits queda formado de la siguiente manera:
 * q3 || q2 || q1 || h2 || q0 || h1 || h0 ||
 * I7 || I6 || I5 || C4 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">I3 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">C2 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">C1 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">D6 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">D5 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">D4 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">D3 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">D2 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">D1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">D0 ||

<span style="font-family: 'Arial','sans-serif';">Al enviar el dato de siete bits, este es recibido como un paquete formado por (D6 D5 D4 D3 D2 D1 D0) donde no se reconoce quien es información y/o quien es control. Sin embargo, con el método se realizan tres grupos de detección y corrección formado por cuatro bits cada uno, los cuales siempre deben tener paridad par. Estos grupos están resaltados de gris en la figura 1.7 y forman tres cuartetos agrupados de la siguiente forma: (I7 I5 I3 C1); (I7 I6 I3 C2); (I7 I6 I5 C4). Ellos sirven tanto para generar, detectar y corregir datos con distancia uno y dos respectivamente. Por ejemplo, para enviar el dato de información (1100) codificado en Hamming se deben agregar tres bits de control de manera que los cuartetos tengan paridad par: Primero hay que hacer corresponder los bits de información; (1100)=(I7 I6 I5 I3), después se organizan los cuartetos de forma que la paridad sea par:

<span style="font-family: 'Arial','sans-serif';">Los bits de control generados son: (C4 C2 C1) = (001); en consecuencia el dato a enviar es (D6 D5 D4 D3 D2 D1 D0) = (I7 I6 I5 C4 I3 C2 C1) = (1100001). De la misma forma se procede a obtener la codificación de los bits en código Hamming. En la tabla 1.10 están representados los 4 bits de información y los tres bits de chequeo del código Hamming de 7 bits. También se puede observar que la mínima distancia, entre dos datos consecutivos, es tres.
 * **<span style="font-family: 'Arial','sans-serif';">Decimal **<span style="font-family: 'Arial','sans-serif';"> || **<span style="font-family: 'Arial','sans-serif';">Información **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">Control **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">Dato codificado **<span style="font-family: 'Arial','sans-serif';">  ||
 * <span style="font-family: 'Arial','sans-serif';"> || **<span style="font-family: 'Arial','sans-serif';">I7I6I5I3 **<span style="font-family: 'Arial','sans-serif';"> || **<span style="font-family: 'Arial','sans-serif';">C4C2C1 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">I7I6I5C4I3C2C1 **<span style="font-family: 'Arial','sans-serif';">  ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0000 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">000 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0000000 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0001 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">011 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0000111 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">2 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0010 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">101 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0011001 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">3 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0011 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">110 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0011110 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">4 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0100 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">110 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0101010 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">5 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0101 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">101 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0101101 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">6 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0110 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">011 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0110011 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">7 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0111 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">000 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0110100 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">8 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1000 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">111 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1001011 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">9 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1001 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">100 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1001100 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">10 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1010 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">010 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1010010 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">11 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1011 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">001 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1010101 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">12 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1100 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">001 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1100001 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">13 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1101 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">010 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1100110 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">14 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1110 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">100 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1111000 ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">15 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1111 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">111 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1111111 ||

También se pueden corregir errores de datos con distancia uno de la siguiente forma: a) 1100100; b) 1110101; c) 1010101; d) 1110111
 * <span style="font-family: 'Arial','sans-serif';"> Tabla 1.10. Código Hamming de 7 bits. **<span style="font-family: 'Arial','sans-serif';">
 * <span style="font-family: 'Arial','sans-serif';">Ejemplo 1.27. **<span style="font-family: 'Arial','sans-serif';"> Se han recibido los datos **a, b, c, d** codificados en Hamming de 7 bits con paridad par, y es necesario detectar y corregir los bits con errores.
 * <span style="font-family: 'Arial','sans-serif';">Solución (a): **<span style="font-family: 'Arial','sans-serif';">Para mantener la paridad par en el grupo 2,3,6,7 debe cambiarse el bit de la posición 2 (C2). El dato corresponde a 1101.
 * **<span style="font-family: 'Arial','sans-serif';">I7 **<span style="font-family: 'Arial','sans-serif';"> || **<span style="font-family: 'Arial','sans-serif';">I6 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">I5 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C4 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">I3 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C2 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C1 **<span style="font-family: 'Arial','sans-serif';">  ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 ||
 * <span style="font-family: 'Arial','sans-serif';">Solución (b): **<span style="font-family: 'Arial','sans-serif';">Para mantener la paridad par en los grupos 2,3,6,7 y 4,5,6,7 se debe cambiar el bit de la posición 6 (I6) para obtener la paridad correcta. El dato es: 1011.
 * **<span style="font-family: 'Arial','sans-serif';">I7 **<span style="font-family: 'Arial','sans-serif';"> || **<span style="font-family: 'Arial','sans-serif';">I6 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">I5 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C4 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">I3 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C2 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C1 **<span style="font-family: 'Arial','sans-serif';">  ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 ||




 * <span style="font-family: 'Arial','sans-serif';">Solución (c): **<span style="font-family: 'Arial','sans-serif';">En este caso, no hay error en el dato enviado.
 * **<span style="font-family: 'Arial','sans-serif';">I7 **<span style="font-family: 'Arial','sans-serif';"> || **<span style="font-family: 'Arial','sans-serif';">I6 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">I5 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C4 **<span style="font-family: 'Arial','sans-serif';">  ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 ||
 * **<span style="font-family: 'Arial','sans-serif';">I7 **<span style="font-family: 'Arial','sans-serif';"> || **<span style="font-family: 'Arial','sans-serif';">I6 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">I3 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C2 **<span style="font-family: 'Arial','sans-serif';">  ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 ||
 * **<span style="font-family: 'Arial','sans-serif';">I7 **<span style="font-family: 'Arial','sans-serif';"> || **<span style="font-family: 'Arial','sans-serif';">I5 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">I3 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C1 **<span style="font-family: 'Arial','sans-serif';">  ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 ||


 * **<span style="font-family: 'Arial','sans-serif';">I7 **<span style="font-family: 'Arial','sans-serif';"> || **<span style="font-family: 'Arial','sans-serif';">I6 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">I5 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C4 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">I3 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C2 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C1 **<span style="font-family: 'Arial','sans-serif';">  ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 ||


 * <span style="font-family: 'Arial','sans-serif';">Solución (d): **<span style="font-family: 'Arial','sans-serif';">Para mantener la paridad par en los grupos 4,5,6,7 se debe cambiar el bit de la posición 4 (C4) para obtener la paridad correcta. El dato es: 1111.
 * **<span style="font-family: 'Arial','sans-serif';">I7 **<span style="font-family: 'Arial','sans-serif';"> || **<span style="font-family: 'Arial','sans-serif';">I6 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">I5 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C4 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">I3 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C2 **<span style="font-family: 'Arial','sans-serif';">  || **<span style="font-family: 'Arial','sans-serif';">C1 **<span style="font-family: 'Arial','sans-serif';">  ||
 * <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">0 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 || <span style="display: block; font-family: 'Arial','sans-serif'; text-align: center;">1 ||



BRENDA ELIZETH GONZALEZ ENRIQUEZ UNIVERSIDAD MARISTA DE QUERETARO. ING. EN COMPUTACIÓN 5TO SEMESTRE. ARQUITECTURA DE LAS COMPUTADORAS 1. REFERENCIA ELECTRONICA: []