Herramientas |
Código Gray
El código binario reflejado o código Gray, nombrado así en honor del investigador Frank Gray, es un sistema de numeración binario en el que dos valores sucesivos difieren solamente en uno de sus dígitos. El código Gray fue diseñado originalmente para prevenir señales espurias de los switches electromecánicos. Actualmente es usado para facilitar la corrección de errores en los sistemas de comunicaciones, tales como algunos sistemas de televisión por cable y la televisión digital terrestre.
[editar] NombreEl investigador de Laboratorios Bell, Frank Gray, inventó el término código binario reflejado cuando lo patentó en 1947, remarcando que este "no tenía nombre reconocido aún".[1] Él creó el nombre basándose en el hecho de que el código "puede ser construido a partir del código binario convencional por una suerte de 'proceso reflejante'". El código fue llamado posteriormente "Gray" por otros investigadores. Dos patentes en 1953 dieron como nombre alternativo "código de Gray" para el "código binario reflejado";[2] [3] uno de ellas también se refiere al código como "minumum error code" (código de error mínimo) y como "cyclic permutation code" (código de permutación cíclica).[3] [editar] Historia y aplicaciones prácticasEl 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 atribuído 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 ruido cuando 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 sigue empleando para el diseño los mapas de Karnaugh, los cuales son, a su vez, utilizados en la implementación de circuitos combinacionales y circuitos secuenciales. Esto es debido a que el principio de diseño de buscar transiciones más simples y rápidas entre estados sigue vigente, a pesar de que los problemas de ruido y potencia se hayan reducido. Utilizando el código Gray es posible resolver el problema de las Torres de Hanoi. 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 de los códigos de Gray, es usado en ocasiones en algoritmos genéticos. [editar] MotivaciónLas 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: ... 011 100 ... 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 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. [editar] Conversiones
[editar] Base 2 a GrayPara convertir un número binario en Base 2 a código Gray o viceversa, simplemente hemos de aplicarle la puetá lógica XOR al mismo número, con 1 desplazamiento a la derecha Ejemplo: 1010 (Base 2) a gray 1010 101 Otros ejemplos 111000 11100 110101010001 11010101000 [editar] Gray a Base 2Tenemos un vector a conteniendo los dígitos en gray y otro vector b destinado a contener los dígitos en Base 2 a0 es el dígito que se encuentra en el extremo izquerdo de la representación en codigo gray b0 es el dígito de mayor peso y que se encuentra en el extremo izquerdo en la representación en Base 2 tenemos que: [editar] Referencias
|