El código binario reflejado ( RBC ), también conocido simplemente como binario reflejado ( RB ) o código Gray en honor a Frank Gray , es una ordenación del sistema numérico binario tal que dos valores sucesivos difieren en un solo bit (dígito binario).
Por ejemplo, la representación del valor decimal "1" en binario normalmente sería " 001 " y "2" sería " 010 ". En código Gray, estos valores se representan como " 001 " y " 011 ". De esa manera, incrementar un valor de 1 a 2 requiere solo un bit para cambiar, en lugar de dos.
Los códigos grises se utilizan ampliamente para evitar salidas espurias de interruptores electromecánicos y para facilitar la corrección de errores en comunicaciones digitales como la televisión digital terrestre y algunos sistemas de televisión por cable .
Muchos dispositivos indican la posición cerrando y abriendo interruptores. Si ese dispositivo usa códigos binarios naturales , las posiciones 3 y 4 están una al lado de la otra, pero los tres bits de la representación binaria difieren:
El problema con los códigos binarios naturales es que los interruptores físicos no son ideales: es muy poco probable que los interruptores físicos cambien de estado exactamente en sincronía. En la transición entre los dos estados que se muestran arriba, los tres interruptores cambian de estado. En el breve período mientras todos están cambiando, los interruptores leerán alguna posición falsa. Incluso sin keybounce , la transición podría verse como 011 — 001 — 101 — 100 . Cuando los interruptores parecen estar en la posición 001 , el observador no puede decir si esa es la posición 1 "real" o un estado de transición entre otras dos posiciones. Si la salida alimenta un sistema secuencial , posiblemente a través delógica combinacional , entonces el sistema secuencial puede almacenar un valor falso.
Este problema se puede resolver cambiando solo un interruptor a la vez, por lo que nunca hay ambigüedad de posición, lo que resulta en códigos que asignan a cada uno de un conjunto contiguo de números enteros , o a cada miembro de una lista circular, una palabra de símbolos como que no hay dos palabras de código idénticas y que cada dos palabras de código adyacentes difieren exactamente en un símbolo. Estos códigos también se conocen como códigos de distancia unitaria , [3] [4] [5] [6] [7] de distancia única , de paso único , monostróficos [8] [9] [6] [7] o códigos sincópicos . [8] en referencia a la distancia de Hammingde 1 entre códigos adyacentes.