Você está na página 1de 5

Código Gray

Ir a la navegaciónIr a la búsqueda
El código binario reflejado o código Gray, nombrado así en Código Gray de dos bits
honor del investigador Frank Gray, es un sistema de numeración
binario en el que dos números consecutivos difieren solamente 00 01 11 10
en uno de sus dígitos.
Código Gray de tres bits
El código Gray fue diseñado originalmente para prevenir señales
ilegales (señales falsas o viciadas en la representación) de
000
los switches electromecánicos, y actualmente es usado para
facilitar la corrección de errores en los sistemas de 001
comunicaciones, tales como algunos sistemas de televisión por 011
cable y la televisión digital terrestre. 010
110
111
Índice 101
100
 1Nombre
 2Historia y aplicaciones prácticas
 3Motivación Código Gray de cuatro bits

 4Conversiones
o 4.1Base 2 a Gray 0000
o 4.2Gray a Base 2 0001
 5Referencias 0011
0010
Nombre[editar] 0110
El investigador de Laboratorios Bell, Frank Gray inventó el 0111
término código binario reflejado cuando lo patentó en 1947, 0101
remarcando que éste "no tenía nombre reconocido aún".1 Él creó
el nombre basándose en el hecho de que el código "puede ser 0100
construido a partir del código binario convencional por una suerte 1100
de 'proceso reflejante'". 1101
El código fue llamado posteriormente "Gray" por otros 1111
investigadores. Dos patentes en 1953 dieron como nombre 1110
alternativo "código de Gray" para el "código binario reflejado";23
uno de ellas también se refiere al código como "minimum error 1010
code" (código de error mínimo) y como "cyclic permutation code" 1011
(código de permutación cíclica).3 1001
1000
Historia y aplicaciones prácticas[editar]
El código binario reflejado fue aplicado para acertijos
matemáticos antes de ser usado para la ingeniería. El ingeniero francés Émile Baudot le dio
una aplicación al código de Gray en 1878 en telegrafía, trabajo por el cual fue condecorado
con la Legión de Honor.
El código Gray es atribuido en algunas ocasiones, en forma incorrecta,4 a Elisha
Gray (en Principles of Pulse Code Modulation, K. W. Cattermole,5 por ejemplo.)
Hasta la primera mitad de los años 1940 los circuitos lógicos digitales se realizaban
con válvulas de vacío y dispositivos electromecánicos.
Los contadores necesitaban potencias muy elevadas a la entrada y generaban picos
de ruidocuando varios bits cambiaban simultáneamente. Tomando esto en cuenta, Frank Gray
inventó un método para convertir señales analógicas a grupos de código binario reflejado
utilizando un aparato diseñado con válvulas de vacío, con lo cual garantizó que en cualquier
transición variaría tan sólo un bit.
En la actualidad, el código Gray se emplea como parte del algoritmo de diseño de los mapas
de Karnaugh, los cuales son, a su vez, utilizados como "herramienta de diseño" en la
implementación de circuitos combinacionales y circuitos secuenciales. La vigencia del código
Gray se debe a que un diseño digital eficiente requerirá transiciones más simples y rápidas
entre estados lógicos (0 ó 1), por ello es que se persiste en su uso, a pesar de que los
problemas de ruido y potencia se hayan reducido con la tecnología de estado sólido de
los circuitos integrados.
Utilizando el código Gray es posible también resolver el problema de las Torres de Hanói. Se
puede incluso formar un ciclo hamiltoniano o un hipercubo, en el que cada bit se puede ver
como una dimensión.
Debido a las propiedades de distancia de Hamming que posee el código Gray, es usado en
ocasiones en algoritmos genéticos.

Motivación[editar]
Las computadoras antiguas indicaban posiciones abriendo y cerrando interruptores. Utilizando
tres interruptores como entradas usando Base 2, estas dos posiciones estarían una después
de la otra:

001
011
100
101

El problema con el código binario en base 2 es que con interruptores mecánicos, es realmente
difícil que todos los interruptores cambien al mismo tiempo. En la transición de los dos estados
mostrados arriba, tres interruptores cambian de sitio. En el lapso en el que los interruptores
están cambiando, se pueden presentar salidas de información espurias. Si las salidas
mencionadas alimentan un circuito secuencial, probablemente el sistema presentará un error
en entrada de datos.
El código gray resuelve este problema cambiando solamente un dígito a la vez, así que no
existe este problema:

Decimal Gray Binario


0 000 000
1 001 001
2 011 010
3 010 011
4 110 100
5 111 101
6 101 110
7 100 111

tienes que tener en cuenta que para convertir de binarios a Gray los valores que deben ser
sumados en base 2 toman los siguientes valores 1+1=0, 0+0=0 , 1+0=1 y 0+1=1 esta
operación de forma vertical como se muestra en el siguiente ejemplo:

1010
1010
----
1111

Nótese que desde el 7 podría pasar a 0 con un solo cambio de switch (el más significativo
pasa a cero). Esta es la propiedad llamada "cíclica" del código de Gray.

Conversiones[editar]
Secuencia Binario Gray Secuencia Binario Gray
0 0000 0000 8 1000 1100
1 0001 0001 9 1001 1101
2 0010 0011 10 1010 1111
3 0011 0010 11 1011 1110
4 0100 0110 12 1100 1010
5 0101 0111 13 1101 1011
6 0110 0101 14 1110 1001
7 0111 0100 15 1111 1000
Base 2 a Gray[editar]
Para convertir un número binario (en Base 2) a código Gray, simplemente se le aplica una
operación XOR con el mismo número desplazado un bit a la derecha, sin tener en cuenta el
acarreo.
Ejemplo: 1010 (Base 2) a gray

1010
1010
----
1111

Otros ejemplos 0111(Base 2) a gray :


0111
0111
------
0100
110101010001
110101010001
------------
101111111001

Gray a Base 2[editar]

Definimos un vector conteniendo los dígitos en gray y otro vector destinado a


contener los dígitos en Base 2

 es el dígito que se encuentra en el extremo izquierdo de la representación en código


gray

 es el dígito de mayor peso y que se encuentra en el extremo izquierdo en la


representación en Base 2

Luego resulta que: con la excepción de que , la cual se puede resumir como:
El dígito de más a la izquierda en Base 2 es igual al dígito de más a la izquierda en código
gray

Ejemplo Con el número en código Gray.

Lo primero es decir que: , por lo que para este caso: . Luego siguiendo con el

algoritmo: resulta que:

Esto da como resultado

Referencias[editar]
1. ↑ F. Gray. Pulse code communication, 17 de marzo de 1953 (archivado en nov 1947). Patente
USPTO nº 2632058
2. ↑ J. Breckman. Encoding Circuit, 31 de enero de 1956 (archivado en dic 1953). Patente USPTO
nº 2733432
3. ↑ a b E. A. Ragland et al. Direction-Sensitive Binary Code Position Control System, 11 de
febrero de 1958 (archivado oct 1953). Patente USPTO nº 2823345
4. ↑ Knuth, Donald E. "Generating all n-tuples." The Art of Computer Programming, Volumen 4A:
Enumeration and Backtracking, pre-fascículo 2a, 15 de octubre de 2004. [1]
5. ↑ K. W. Cattermole, Principles of Pulse Code Modulation, American Elsevier Publishing
Company, Inc., 1969, New York NY, ISBN 0-444-19747-8.

Você também pode gostar