You are on page 1of 11

CODIGO HAMMING

En informtica, el cdigo de Hamming es un cdigo detector y corrector de errores que lleva el nombre de su inventor, Richard Hamming. En los datos codificados en Hamming se pueden detectar errores en un bit y corregirlos, sin embargo no se distingue entre errores de dos bits y de un bit (para lo que se usa Hamming extendido). Esto representa una mejora respecto a los cdigos con bit de paridad, que pueden detectar errores en slo un bit, pero no pueden corregirlo.

Este cdigo no slo permite detectar un bit errneo, sino tambin identifica el bit errneo de forma que pueda ser corregido. El cdigo utiliza un nmero de bits de paridad (dependiendo del nmero de bits de informacin), localizados en determinadas posiciones del grupo del cdigo. La deteccin del cdigo que aqu se presenta corresponde a una nica correccin de error.

Nmeros de Paridad
Si al nmero de bits de informacin lo designamos como m, entonces el nmero de bits de es elparidad, p, se determina mediante la siguiente relacin: 2p> m + p + 1 Por ejemplo, si se tiene cuatros bits de informacin (m=4), p se calcula mediante el mtodo de prueba y error. Sea p=2, entonces 2p >=22=4 y m+p+1=4+2+1=7

Puesto que p=2 no satisface la ecuacin, se busca probar con p=3. Sea p=3, entonces: 2p=23=8 y m + p + 1 = 4 + 3 + 1 = 8 Este valor de p satisface la ecuacin, de manera que se necesitan tres bits de paridad para proporcionar correccin simple de errores para cuatro bits de informacin. Conviene fijarse en que la deteccin y correccin de errores se proporciona para todos los bits, tanto de paridad como de informacin, dentro de un grupo de cdigo.

Situacin de los bits de paridad dentro del cdigo


Se debe tener en cuenta que en esta expresin, el cdigo se compone de cuatro bits de informacin y de tres bits de paridad. El bit ms a la izquierda se designa como bit 1, el siguiente bit 2, y as sucesivamente del mismo modo: bit 1, bit 2, bit 3, bit 4, bit 5, bit 6, bit 7 Los bits de paridad se sitan en las posiciones cuya numeracin corresponde a las potencias de dos en sentido ascendente (1, 2, 4,8,..), tal como se indica: P1, P2, M1, P3, M2, M3, M4 El smbolo Pn designa un determinado bit de paridad y Mn designa un determinado bit de informacin.

Asignacin de valores a los bits de paridad


1. Se tiene que asignar un valor 1 0 a cada bit de paridad. 2. Dado que cada bit de paridad proporciona una comprobacin de otros bits del cdigo total, se tiene que conocer el valor de estos otros bits para poder asignarle un valor. 3. Para encontrar los valores del bit, primero se tiene que numerar cada posicin de bit en forma de nmero binario. 4. A continuacin, se indica la situacin de los bits de paridad y de informacin. 5. Tenga en cuenta que el nmero binario que indica la posicin del bit de paridad P1 contiene un 1 como el dgito ms a la derecha. Este bit de paridad comprueba todas las posiciones de bit, incluida la suya propia, que tiene como valor 1 en la misma posicin que los nmeros binarios que indican la posicin. Por consiguiente, el bit de paridad P1, comprueba las posiciones de bit 1, 3, 5 y 7. Tabla de posiciones de los bits para cdigo de correccin de errores de 7 bits

6. El nmero binario de posicin para el bit de paridad P2 tiene un 1 en el bit del medio. Comprueba todas las posiciones de bit, includa la suya propia, que tienen un 1 en la misma posicin. Por lo tanto, el bit de paridad P2 comprueba las posiciones de bit 2, 3, 6 y 7.

7. Bajo la misma premisa, el bit de paridad P3, comprobar las posiciones de bit 4, 5, 6 y 7. 8. En cada caso, al bit de paridad se le asigna un valor tal, que haga que el nmero de unos del conjunto de bits que comprueba, sea par o impar, de acuerdo a lo que especificado. Ejemplo: Determinar el cdigo de correccin de error para el nmero de cdigo BCD 1001 (bits de informacin), utilizando paridad par. Solucin: Paso 1. Encontrar el nmero de bits de paridad requeridos. Sea p=3, entonces 2p = 23 = 8 y m + p + 1 = 8 tres bits de paridad son suficientes. Bits totales del cdigo = 4 + 3 = 7 Paso 2. Construir una tabla de posiciones de los bits para un cdigo de correccin de errores de 7 bits. Recuerde que el nmero es el BCD 1001 (bits de informacin)

Paso 3. Determinar los bits de paridad de la siguiente manera: El bit P1 comprueba las posiciones 1, 3, 5 y 7 y tiene que ser 0 para que haya un nmero par de unos (2) en este grupo. El bit P2 comprueba las posiciones 2, 3, 6 y 7 y tiene que ser 0 para que haya un nmero par de unos (2) en este grupo. El bit P3 comprueba las posiciones 4, 5, 6 y 7 y tiene que ser 1 para que haya un nmero par de unos (2) en este grupo. Paso 4. Estos bits se introducen en la tabla.

El cdigo combinado resultante es 0011001

Deteccin y correccin de un error


Ahora que ya se tiene un mtodo de construccin de un cdigo de errores, Cmo se puede aplicar para localizar el error?
1. Cada bit de paridad, junto con su correspondiente grupo de bits, tiene que ser comprobado con la paridad adecuada. 2. Si hay tres bits de paridad en una palabra de cdigo, entonces hay que realizar tres comprobaciones de paridad. 3. Cada comprobacin de paridad nos dar un resultado correcto o incorrecto. 4. El resultado total de las comprobaciones de paridad indican el bit, si es que lo hay, que es errneo. Los pasos a seguir son entonces los siguientes: Paso 1. Comenzar con el grupo que comprueba P1.

Paso 2. Comprobar que el grupo tenga la paridad adecuada. Un 0 representa que la comprobacin de paridad es correcta y un 1 representa una mala comprobacin. Paso 3. Repetir el paso 2 para cada grupo de paridad.

Paso 4. El nmero binario formado a partir de los resultados de todas las comprobaciones de paridad determina la posicin del bit de cdigo que contiene un error. Este es el cdigo de posicin de error. La primera comprobacin de paridad genera el bit menos significativo. Si todas las comprobaciones son correctas, no hay error. Ejemplo: Suponer que la palabra de cdigo del ejemplo anterior (0011001) es transmitida y que recibimos 0010001. El receptor no conoce cul fue la palabra transmitida y tiene que buscar las paridades adecuadas para determinar si el cdigo es correcto. Encontrar cualquier error que haya habido en la transmisin si utilizamos paridad par. Solucin: Construimos una tabla de posicin de bit:

Primera comprobacin de paridad:


El bit P1 comprueba las posiciones 1, 3, 5 y 7. Hay dos unos en este grupo Comprobacin de paridad correcta 0 (LSB) Segunda comprobacin de paridad: El bit P2 comprueba las posiciones 2, 3, 6 y 7. Hay dos unos en este grupo Comprobacin de paridad correcta 0 Tercera comprobacin de paridad: El bit P3 comprueba las posiciones 4, 5, 6 y 7. Hay un uno en este grupo Comprobacin de paridad incorrecta 1 (MSB)

Resultado:
El cdigo de posicin de error es 100 (cuatro binario). Esto indica que el bit de la posicin 4 es errneo, y que es un 0 cuando debera ser un 1. El cdigo corregido es 0011001, que concuerda con el cdigo transmitido.

CODIGO BCD
Cdigo decimal codificado en binario (BCD, Binary Coded Decimal, por sus siglas en ingls) Si cada dgito de un nmero decimal se representa por su equivalente binario, esto produce un cdigo llamado decimal codificado en binario (abreviado BCD por sus siglas en ingls). Puesto que un dgito decimal puede ser tan grande como 9, se requieren 4 bits para codificar cada dgito (el cdigo binario para 9 es 1001). Para ilustrar el cdigo BCD, tomemos un nmero decimal como 874. Cada dgito se cambia a su equivalente binario como sigue: 8 7 4 ^ ^ ^ 1000 0111 0100

Como otro ejemplo, cambiemos 94.3 a su representacin en cdigo BCD: 9 4 . 3 ^ ^ ^ 1001 0100 . 0011 Una vez ms, cada dgito decimal se cambia a su equivalente binario directo. Note que siempre se usan 4 bits para cada dgito. El cdigo BCD, entonces representa cada dgito del nmero decimal por un nmero binario de 4 bits. Claramente, slo los nmeros binarios de 4 bits desde 0000 hasta 1001se usan. El cdigo BCD no usa los nmeros 1010, 1011, 1100, 1101, 1110 y 1111. En otras palabras, slo 10 de los 16 grupos codificados posibles de 4 bits se usan. Si cualquiera de estos nmeros prohibidos de 4 bits alguna vez ocurre en una mquina que usa el cdigo BCD, generalmente indica que ha ocurrido un error.

EJEMPLO 3. SOLUCIN

Convertir el nmero BCD 0110100000111001 a su equivalente decimal:

0110 1000 0011 1001 ^ ^ ^ ^ 6 8 3 9 EJEMPLO 4. Convierta el nmero BCD 011111000001 a su equivalente decimal:

0111 1100 0001 7 ^ 1 grupo de cdigo prohibido indica error en el nmero BCD Al hacer una comparacin entre BCD y binario comn, es importante darse cuenta que un nmero BCD no es lo mismo que un nmero binario comn. Un cdigo binario comn toma el nmero decimal completo y lo representa en binario, mientras que el cdigo BCD convierte cada dgito decimal a binario en forma individual. Para ilustrar, tome el nmero 137 y compare las representaciones binaria comn y codificada BCD: 13710 = 10001001 binario 13710 = 0001 0011 0111 BCD

El cdigo BCD requiere 12 bits mientras que el cdigo binario comn requiere slo 8 bits para representar 137. Es siempre verdadero que el cdigo BCD para un nmero decimal dado requiere ms bits que el cdigo binario comn. Esto es porque BCD no usa todos los grupos posibles de 4 bits, como se seal antes y es por consiguiente algo ineficiente. La principal ventaja del cdigo BCD es la facilidad relativa para convertir a y desde decimal. Slo se requiere recordar los grupos codificados de 4 bits para los dgitos decimales del 0 al 9. Esta facilidad de conversin es especialmente importante desde el punto de vista de circuitos, porque en un sistema decimal son los circuitos lgicos los que ejecutan las conversiones a y desde decimal. BCD se usa en mquinas digitales siempre y cuando se aplique informacin digital, ya sea como entradas o mostradas como salidas. Los voltmetros digitales, contadores de frecuencia y relojes digitales usan todos BCD, porque despliegan la informacin de salida en decimal. Las calculadoras electrnicas usan BCD porque los nmeros de entrada vienen en decimal va el teclado y los nmeros de salida son mostrados en decimal. BCD no es a menudo usado en computadoras digitales modernas de alta velocidad por dos buenas razones. Primero, como ya fue sealado, el cdigo BCD para un nmero decimal dado requiere ms bits que el cdigo binario directo y es por consiguiente menos eficiente. Esto es importante en computadoras digitales porque el nmero de lugares en memoria donde estos bits pueden ser almacenados es limitado. Segundo, los procesos aritmticos para nmeros representados en cdigo BCD son ms complicados que en binario ordinario y requieren as de circuitera ms compleja. La circuitera ms compleja contribuye a una disminucin en la velocidad a la cual tienen lugar las operaciones aritmticas. Las calculadoras que usan BCD son, por consiguiente, considerablemente ms lentas en su operacin que las computadoras.

Cdigo exceso-3
El cdigo exceso-3 est relacionado con el cdigo BCD y usado a veces en lugar de l porque posee ventajas en ciertas operaciones aritmticas. El cdigo exceso-3 para un nmero decimal se ejecuta de la misma manera que en BCD excepto que se aade 3 a cada dgito decimal antes de codificarlo en binario. Por ejemplo, para codificar el nmero decimal 4 en el cdigo exceso-3, debemos aadir 3 para obtener 7. Luego el 7 se codifica en cdigo binario equivalente de 4 bits para obtener 0111. Como otro ejemplo, convirtamos 46 a su representacin en cdigo exceso-3: 4 +3 6 +3

aada 3 a cada dgito

7 9 convierta a cdigo binario de 4 bits 0111 1001

La siguiente tabla muestra las listas para las representaciones BCD y exceso-3 para los dgitos decimales. Note que ambos cdigos usan 10 de los 16 posibles grupos codificados de 4 bits. El cdigo exceso-3, sin embargo, no usa los mismos grupos codificados. Para exceso-3, los grupos codificados no vlidos son 0000, 0001, 0010, 1101,1110 y 1111. Decimal 0 1 2 3 4 5 5 7 8 9 BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Exceso-3 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100

CODIGO GRAY

El cdigo Gray pertenece a una clase de cdigos llamados cdigos de cambio mnimo, en los cuales slo cambia un bit en el grupo codificado cuando se va de un paso al siguiente. El cdigo Gray es un cdigo no ponderado, significando que las posiciones de los bits en los grupos codificados no tienen un peso especfico asignado. Debido a esto, el cdigo Gray no es apropiado para operaciones aritmticas, pero encuentra aplicaciones en dispositivos de entrada/salida y en algunos tipos de convertidores analgicos a digital. La siguiente tabla muestra la representacin en Cdigo Gray para los nmeros decimales 0 al 15, junto con el cdigo binario directo. Si examinamos los grupos codificados Gray para cada nmero decimal, puede verse que al ir desde cualquier nmero decimal al siguiente, slo un bit del cdigo Gray cambia. Por ejemplo, al ir desde 3 a 4, el cdigo Gray cambia de 0010 a 0110, con solo el segundo bit desde la izquierda experimentando cambio. Yendo de 14 a 15 los bits del cdigo Gray cambian de 1001 a 1000, con una sola variacin en el ltimo bit. Esta es la principal caracterstica del cdigo Gray. Compare esto con el cdigo binario en el cual de uno a todos los bits cambian de un nmero al siguiente.

Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Cdigo binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Cdigo Gray 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000

El cdigo Gray se usa a menudo donde otros cdigos tales como el binario, pudieran producir resultados errneos o ambiguos durante esas transiciones en las cuales ms de un bit del cdigo est cambiando. Usando el cdigo binario, por ejemplo, y yendo de 0111 a 1000 requiere que todos los 4 bits cambien simultneamente. Dependiendo del dispositivo o circuito que est generando los bits, puede haber una diferencia significativa en los tiempos de transicin de los diferentes bits. Si esto es as, las transiciones de 0111a 1000 pudiera producir uno o ms estados intermedios. Por ejemplo, si el bit ms significativo cambia ms rpido que el resto, ocurrirn las siguientes transiciones: 0111 1111 1000 decimal cdigo errneo decimal 8

La ocurrencia de 1111 es slo momentnea pero pudiera concebiblemente producir una operacin errnea de los elementos que estn siendo controlados por los bits. Obviamente, usando el cdigo Gray se elimina este problema, puesto que slo ocurre el cambio de un bit por transicin y no puede ocurrir una carrera. Cualquier nmero binario puede convertirse a su representacin en cdigo Gray como sigue: 1. El primer bit del cdigo Gray es el mismo como el primer bit del nmero binario.

2. El segundo bit del cdigo Gray es igual a la operacin O EXCLUSIVA del primer y segundo bits del nmero binario; esto es, ser 1 si estos bits del cdigo binario son diferentes y 0 si son los mismos. 3. El tercer bit del cdigo Gray es igual a la O EXCLUSIVA del segundo y tercer bits del nmero binario y as sucesivamente. Para ilustrar esto, convirtamos el binario 10110 al cdigo Gray: 1 ^ 1 0 ^ 1 1 ^ 1 1 ^ 0 0 cdigo binario ^ 1 cdigo Gray

El primer bit del cdigo Gray es el mismo como el primer bit del cdigo binario. El primero y segundo bits del cdigo binario son diferentes, dando un 1 para el segundo bit Gray. El segundo y tercer bits del nmero binario son diferentes, dando un 1 para el tercer bit Gray. El tercero y cuarto bits del nmero binario son lo mismo, as que el cuarto bit Gray es 0. Finalmente, el cuarto y quinto bits binarios son diferentes, dando un quinto bit Gray de 1. Otro ejemplo es como sigue: 1 ^ 1 0 ^ 1 0 ^ 0 1 ^ 1 1 ^ 0 0 ^ 1 0 ^ 0 1 binario ^ 1 Gray

Para convertir de Gray a binario se requiere el procedimiento opuesto dado previamente: 1. El primer bit binario es el mismo que el primer bit Gray. 2. Si el segundo bit Gray es 0, el segundo bit binario es el mismo como el primero; si el segundo bit Gray es 1, el segundo bit binario es el inverso del primer bit binario. 3. El paso 2 se repite para el bit sucesivo. Para ilustrar esto, convirtamos 1101 de Gray a binario: 1 ^ 1 1 ^ 0 0 ^ 0 1 Gray ^ 1 binario

El primer bit Gray es 1, as que el primer bit binario se escribe como 1. El segundo bit Gray es un 1, as que el segundo bit binario se hace un 0 (inverso del primer bit binario). El tercer bit Gray es un 0. as que

el tercer bit binario se hace un 0 (lo mismo como el segundo bit binario). El cuarto bit Gray es 1, haciendo el cuarto bit un 1(inverso del tercer bit binario). Este proceso puede ser visto de otra manera: Cada bit binario (exceptuando el primero) puede obtenerse tomando la O EXCLUSIVA del bit correspondiente del cdigo Gray y el bit binario previo. Finalmente, en las siguientes tablas, se presentan los cdigos Gray y los ponderados exceso-3, 8 4 -2 -1 y Biquinario, referidos al cdigo BCD. CDIGO Decimal BCD 8 4 0 0 0 1 0 0 2 0 0 3 0 0 4 0 1 5 0 1 6 0 1 7 0 1 8 1 0 9 1 0 10 : 15

2 0 0 1 1 0 0 1 1 0 0

1 0 1 0 1 0 1 0 1 0 1

Gray 8 4 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 1 1 1 x x : : x x

2 0 0 1 1 1 1 0 0 0 0 x : x

1 0 1 1 0 0 1 1 0 0 1 x : x

Exceso-3 8 4 2 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 x x x x : : : : x x x x

CDIGO Decimal 8 4 -2 -1 8 4 -2 0 0 0 0 1 0 1 1 2 0 1 1 3 0 1 0 4 0 1 0 5 1 0 1 6 1 0 1 7 1 0 0 8 1 0 0 9 1 1 1 10 x x x : : : : 15 x x x

-1 0 1 0 1 0 1 0 1 0 1 x : x

Biquinario 5 0 4 3 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1 0 1 0 x x x x : : : : x x x x

2 0 0 1 0 0 0 0 1 0 0 x : x

1 0 1 0 0 0 0 1 0 0 0 x : x

0 1 0 0 0 0 1 0 0 0 0 x : x

En las tablas anteriores, se indican los trminos indiferentes (prohibidos).

You might also like