Código Gray

De EcuRed
Código Gray
Información sobre la plantilla
Concepto:El Código Gray es un caso particular de código binario.

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.

Contenido

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