Código Gray
El código Gray o código binario reflejado, nombrado así en honor del investigador Frank Gray, es un sistema de numeración binario en el que dos números consecutivos difieren solamente en uno de sus dígitos.
De un valor en código Gray al siguiente solo hay un cambio de un bit, como puede apreciarse en la siguiente tabla. Se han incluido en ella las expresiones BCD, que ya son conocidas.
Observa también que los bits son simétricos respecto a la línea en la que se cambia de color.
DECIMAL | BCD | GRAY 2 BITS | GRAY 3 BITS | GRAY 4 BITS |
0 | 0000 | 00 | 000 | 0000 |
1 | 0001 | 01 | 001 | 0001 |
2 | 0010 | 11 | 011 | 0011 |
3 | 0011 | 10 | 010 | 0010 |
4 | 0100 | 110 | 0110 | |
5 | 0101 | 111 | 0111 | |
6 | 0110 | 101 | 0101 | |
7 | 0111 | 100 | 0100 | |
8 | 1000 | 1100 | ||
9 | 1001 | 1101 | ||
10 | 1010 | 1111 | ||
11 | 1011 | 1110 | ||
12 | 1100 | 1010 | ||
13 | 1101 | 1011 | ||
14 | 1110 | 1001 | ||
15 | 1111 | 1000 |
Se puede ver que el código Gray es también cíclico, ya que cuando llegamos al número más alto, con un solo cambio de bit se vuelve al inicio.
El código Gray fue diseñado originalmente para prevenir señales falsas o viciadas de los relés que se empleaban en las primeras computadoras, y 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.
En robótica, es utilizado principalmente en sistemas de posición (encoders), ya sea angular o lineal. Sus aplicaciones principales se encuentran en la industria y en robótica. Se suelen utilizar unos discos codificados para dar la información de posición que tiene un eje en particular. Esta información se da en código GRAY.
Una aplicación adicional, no la podemos olvidar, es la que se da en los diagramas de Karnaugh, para la simplificación de funciones lógicas.
ALGORITMOS DE CONVERSIÓN
Para convertir entre Gray y binario, basta con seguir uno de estos algoritmos, según proceda.
Conversión de binario a Gray
- Fijamos el "1" inicial, que será el mismo.
- Sumamos las cifras del número binario de dos en dos, empezando desde la izquierda, por parejas, y sin tener en cuenta los acarreos. Es decir, aplicaremos: 1 + 1 = 0; 1 + 0 = 1; 0 + 0 = 0. Si te fijas bien, es la suma a través de una puerta XOR.
- Colocamos el resultado de la operación tras el "1" inicial.
- Repetimos la operación hasta que se acaben las posibles parejas.
Un ejemplo: convertir 1100B) a Gray:
1) Ponemos el primer "1"
2) Hacemos 1⊕1 = 0 y lo colocamos tras el 1 anterior. Ya tenemos "10".
3) Hacemos 1⊕0 = 1 y lo colocamos tras el "10". Ya tenemos "101".
4) Finalmente, hacemos 0⊕0 = 0, y lo colocamos tras el "101". Hemos formado el "1010"
Podemos comprobar en la tabla que, efectivamente, se corresponden ambos valores.
Conversión de Gray a binario
En este caso, el algoritmo consiste en estos pasos:
- Ponemos el "1" inicial.
- Sumamos (sin llevada, es decir, con la suma XOR) la (n-1)-ésima cifra Gray a la n-ésima binaria y la ponemos como (n-1)-ésima cifra del número binario ya convertido.
- Repetimos hasta acabar con todas las cifras.
Vamos a hacer la conversión inversa del 1010GRAY).
1) Ponemos el "1" inicial.
2) Sumamos "0" (tercera cifra Gray) con "1" (cuarta cifra binaria). Nos da "1", que colocamos tras el "1" que teníamos, y habremos formado "11".
3) Sumamos "1" (segunda cifra Gray) con "1" (tercera cifra binaria). Nos da "0", que colocamos tras el "11", y ya habremos formado "110".
4) Finalmente, sumamos "0" (primera cifra Gray) con "0" (segunda cifra binaria). Nos da "0", que es la primera cifra binaria: hemos formado el número "1100", como ya sabíamos.
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0