Código Gray
|
Código Gray. Consiste en una ordenación de <math>2^n</math> números binarios de tal forma que cada número sólo tenga un dígito binario distinto a su predecesor. Esta técnica de codificación se originó cuando 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. El uso de código Gray 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 de cualquier circuito electrónico combinacional mediante el uso de un Mapa de Karnaugh, ya 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. Hay varios algoritmos para generar una secuencia de código Gray (y varios códigos posibles resultantes, en función del orden que se desee seguir), pero el más usado consiste en cambiar el bit menos significativo que genera un nuevo código. Este es un código gray de cuatro bits generado con dicho algoritmo:
Dígito decimal Código Gray Dígito decimal Código Gray 0 0000 8 1100 1 0001 9 1101 2 0011 10 1111 3 0010 11 1110 4 0110 12 1010 5 0111 13 1011 6 0101 14 1001 7 0100 15 1000
El primer uso documentado de un código de estas características fue en una demostración del telégrafo del ingeniero francés Émile Baudot, en 1878. Pero no fueron patentados hasta 1953 por Frank Gray (que dio nombre al sistema de codificación), un investigador de los laboratorios Bell.
Binario a Gray
Para pasar un número binario al código binario Gray, hay una regla fácil de implementar en un lenguaje de programación:
- Un número en binario siempre empieza en 1 --Los ceros a la izquierda no cuentan--; Pues en Gray también. Ej: 1000011110000 en binario se escribe 1xxxxXXXXxxxx.
- Ahora nos fijamos en el segundo dígito. Si es igual al dígito anterior se pone un 0 (no cambia); Si es diferente --como es el caso, pues el dígito anterior era un 1 y el que observamos un 0-- se pondrá un 1 (cambia). Ej: El número del ejemplo anterior será: 11xxxXXXXxxxx.
- En los casos sucesivos se repite el paso anterior, observando en el número binario 'natural' el dígito anterior al que se evalúa. Ej: El número del ejemplo anterior, pasado a código Gray será: 1100010001000.
Otros ejemplos: 1010 - 1111 111000 - 100100 011001 - 010101 110101010001 - 101111111001
Otra técnica sencilla para pasar de binario a Gray sin usar un lenguaje de programación es esta:
- aplicar un XOR (disyunción exclusiva, también se puede sumar cada bit individualmente descartando cualquier acarreo) del número a sí mismo pero con un acarreo a la derecha
- eliminar el bit del extremo derecho
Ej: Pasar diez (1010) de binario a gray será 1111
1010 1010 ----- 1111
Otros Ejemplos
111000 111000 ------ 100100
110101010001 110101010001 ------------ 101111111001
Gray a Binari
Hacer el cambio contrario es simplemente invertir lo que hace el anterior, de forma que si se encuentra un cero (siempre que no sea al principio) se debe poner la cifra anterior; En cambio si pone un 1 es porque la cifra ha cambiado así que si había un 0 ahora se pone un 1 y viceversa.
Fuente
- http://ucipedia.uci.cu/ 17 de octubre del 2011
- Elaborado por la Ing. Dunia Pineda Medina