Ordenación de valores binarios, utilizada para posicionamiento y corrección de errores.
El código binario reflejado ( RBC ), también conocido como código 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 solo un 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, para incrementar un valor de 1 a 2 solo se necesita cambiar un bit, en lugar de dos.
Muchos dispositivos indican la posición mediante el cierre y la apertura de interruptores. Si ese dispositivo utiliza 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 improbable 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 en el que todos están cambiando, los interruptores leerán alguna posición falsa. Incluso sin el rebote de teclas , 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 "real" 1, o un estado de transición entre otras dos posiciones. Si la salida alimenta un sistema secuencial , posiblemente a través de la ló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 ninguna 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 tal que no hay dos palabras de código idénticas y cada dos palabras de código adyacentes difieren exactamente en un símbolo. Estos códigos también se conocen como distancia unitaria , [4] [5] [6] [7] [8] distancia única , paso único , monostróficos [9] [10] [7] [8] o códigos sincópicos , [9] en referencia a la distancia de Hamming de 1 entre códigos adyacentes.
Invención
En principio, puede haber más de un código de este tipo para una longitud de palabra dada, pero el término código Gray se aplicó por primera vez a un código binario particular para números enteros no negativos, el código Gray binario reflejado o BRGC . El investigador de Bell Labs, George R. Stibitz, describió dicho código en una solicitud de patente de 1941, concedida en 1943. [11] [12] [13] Frank Gray introdujo el término código binario reflejado en su solicitud de patente de 1947, señalando que el código "aún no tenía un nombre reconocido". [14] Derivó el nombre del hecho de que "puede construirse a partir del código binario convencional mediante una especie de proceso de reflexión".
En la codificación estándar del Código Gray, el bit menos significativo sigue un patrón repetitivo de 2 activados, 2 desactivados (… 11001100 …); el siguiente dígito, un patrón de 4 activados, 4 desactivados; el i -ésimo bit menos significativo, un patrón de 2 i activados, 2 i desactivados. El dígito más significativo es una excepción a esto: para un código Gray de n bits, el dígito más significativo sigue el patrón 2 n -1 activado, 2 n -1 desactivado, que es la misma secuencia (cíclica) de valores que para el segundo dígito más significativo, pero desplazado hacia delante 2 n -2 lugares. La versión de cuatro bits de esto se muestra a continuación:
Para el decimal 15, el código pasa al decimal 0 con un solo cambio de interruptor. Esto se denomina propiedad cíclica o de adyacencia del código. [15]
En las comunicaciones digitales modernas , los códigos Gray desempeñan un papel importante en la corrección de errores . Por ejemplo, en un esquema de modulación digital como QAM , donde los datos se transmiten normalmente en símbolos de 4 bits o más, el diagrama de constelación de la señal está dispuesto de modo que los patrones de bits transmitidos por puntos de constelación adyacentes difieran en solo un bit. Al combinar esto con la corrección de errores hacia adelante capaz de corregir errores de un solo bit, es posible que un receptor corrija cualquier error de transmisión que haga que un punto de constelación se desvíe hacia el área de un punto adyacente. Esto hace que el sistema de transmisión sea menos susceptible al ruido .
A pesar de que Stibitz describió este código [11] [12] [13] antes que Gray, el código binario reflejado recibió posteriormente el nombre de Gray por parte de otros que lo utilizaron. Dos solicitudes de patente diferentes de 1953 utilizan "código Gray" como nombre alternativo para el "código binario reflejado"; [16] [17] una de ellas también incluye "código de error mínimo" y "código de permutación cíclica" entre los nombres. [17] Una solicitud de patente de 1954 se refiere al "código Gray de Bell Telephone". [18] Otros nombres incluyen "código binario cíclico", [12] "código de progresión cíclica", [19] [12] "binario permutante cíclico" [20] o "binario permutado cíclico" (CPB). [21] [22]
El código Gray a veces se atribuye erróneamente al inventor del dispositivo eléctrico del siglo XIX, Elisha Gray . [13] [23] [24] [25]
Historia y aplicación práctica
Rompecabezas matemáticos
Los códigos binarios reflejados se aplicaron a problemas matemáticos antes de que fueran conocidos por los ingenieros.
El código Gray reflejado en binario representa el esquema subyacente del clásico rompecabezas de anillos chinos , un mecanismo de rompecabezas mecánico secuencial descrito por el francés Louis Gros en 1872. [26] [13]
Puede servir como guía de solución para el problema de las Torres de Hanoi , basado en un juego del francés Édouard Lucas en 1883. [27] [28] [29] [30] De manera similar, las configuraciones de juego llamadas Torres de Bucarest y Torres de Klagenfurt producen códigos Gray ternarios y pentarios. [31]
Cuando el ingeniero francés Émile Baudot cambió el uso de un código de 6 unidades (6 bits) a un código de 5 unidades para su sistema de telégrafo de impresión , en 1875 [33] o 1876, [34] [35] ordenó los caracteres alfabéticos en su rueda de impresión utilizando un código binario reflejado y asignó los códigos utilizando solo tres de los bits a las vocales. Con las vocales y consonantes ordenadas en su orden alfabético, [36] [37] [38] y otros símbolos colocados apropiadamente, el código de caracteres de 5 bits ha sido reconocido como un código binario reflejado. [13] Este código se conoció como código Baudot [39] y, con cambios menores, finalmente se adoptó como Alfabeto Telegráfico Internacional No. 1 (ITA1, CCITT-1) en 1932. [40] [41] [38]
Casi al mismo tiempo, el germano-austriaco Otto Schäffler [de] [42] demostró otro telégrafo de imprenta en Viena usando un código binario reflejado de 5 bits para el mismo propósito, en 1874. [43] [13]
Conversión de señal analógica a digital
Frank Gray , que se hizo famoso por inventar el método de señalización que llegó a utilizarse para la televisión en color compatible, inventó un método para convertir señales analógicas en grupos de códigos binarios reflejados utilizando aparatos basados en tubos de vacío . Presentada en 1947, el método y el aparato recibieron una patente en 1953, [14] y el nombre de Gray se quedó con los códigos. El aparato de " tubo PCM " que Gray patentó fue fabricado por Raymond W. Sears de Bell Labs, en colaboración con Gray y William M. Goodall, quien atribuyó a Gray la idea del código binario reflejado. [44]
Gray estaba más interesado en utilizar los códigos para minimizar los errores en la conversión de señales analógicas a digitales; sus códigos todavía se utilizan hoy en día para este propósito.
Codificadores de posición
Los códigos Gray se utilizan en codificadores de posición lineales y rotatorios ( codificadores absolutos y codificadores de cuadratura ) en lugar de la codificación binaria ponderada. Esto evita la posibilidad de que, cuando varios bits cambian en la representación binaria de una posición, se produzca una lectura incorrecta debido a que algunos de los bits cambian antes que otros.
Por ejemplo, algunos codificadores rotatorios proporcionan un disco que tiene un patrón de código Gray conductor de electricidad en anillos concéntricos (pistas). Cada pista tiene un contacto de resorte metálico estacionario que proporciona contacto eléctrico al patrón de código conductor. Juntos, estos contactos producen señales de salida en forma de código Gray. Otros codificadores emplean mecanismos sin contacto basados en sensores ópticos o magnéticos para producir las señales de salida del código Gray.
Independientemente del mecanismo o la precisión de un codificador móvil, pueden producirse errores de medición de posición en posiciones específicas (en los límites del código) porque el código puede estar cambiando en el momento exacto en que se lee (muestrea). Un código de salida binario puede provocar errores de medición de posición significativos porque es imposible hacer que todos los bits cambien exactamente al mismo tiempo. Si, en el momento en que se muestrea la posición, algunos bits han cambiado y otros no, la posición muestreada será incorrecta. En el caso de los codificadores absolutos, la posición indicada puede estar muy alejada de la posición real y, en el caso de los codificadores incrementales, esto puede dañar el seguimiento de la posición.
Por el contrario, el código Gray que utilizan los codificadores de posición garantiza que los códigos de dos posiciones consecutivas cualesquiera difieran en solo un bit y, en consecuencia, solo puede cambiar un bit a la vez. En este caso, el error de posición máximo será pequeño, lo que indica una posición adyacente a la posición real.
Algoritmos genéticos
Debido a las propiedades de distancia de Hamming de los códigos Gray, a veces se utilizan en algoritmos genéticos . [15] Son muy útiles en este campo, ya que las mutaciones en el código permiten cambios en su mayoría incrementales, pero ocasionalmente un solo cambio de bit puede causar un gran salto y conducir a nuevas propiedades.
En las comunicaciones digitales modernas , los códigos Gray 1D y 2D desempeñan un papel importante en la prevención de errores antes de aplicar una corrección de errores . Por ejemplo, en un esquema de modulación digital como QAM , donde los datos se transmiten normalmente en símbolos de 4 bits o más, el diagrama de constelación de la señal está dispuesto de modo que los patrones de bits transmitidos por puntos de constelación adyacentes difieran en solo un bit. Al combinar esto con la corrección de errores hacia adelante capaz de corregir errores de un solo bit, es posible que un receptor corrija cualquier error de transmisión que haga que un punto de constelación se desvíe hacia el área de un punto adyacente. Esto hace que el sistema de transmisión sea menos susceptible al ruido .
Códigos 4-PSK
Códigos 8-PSK
Códigos 16-QAM
Comunicación entre dominios de reloj
Los diseñadores de lógica digital utilizan ampliamente los códigos Gray para pasar información de conteo de múltiples bits entre lógicas sincrónicas que operan a diferentes frecuencias de reloj. Se considera que la lógica opera en diferentes "dominios de reloj". Es fundamental para el diseño de chips grandes que operan con muchas frecuencias de reloj diferentes.
Recorriendo los estados en bicicleta con el mínimo esfuerzo
Si un sistema tiene que pasar secuencialmente por todas las combinaciones posibles de estados de encendido y apagado de un conjunto de controles, y los cambios de los controles requieren un gasto significativo (por ejemplo, tiempo, desgaste, trabajo humano), un código Gray minimiza la cantidad de cambios de configuración a solo un cambio por cada combinación de estados. Un ejemplo sería probar un sistema de tuberías para todas las combinaciones de configuraciones de sus válvulas operadas manualmente.
Se puede construir un código Gray equilibrado , [52] que invierta cada bit con la misma frecuencia. Dado que los cambios de bits se distribuyen de manera uniforme, esto es óptimo de la siguiente manera: los códigos Gray equilibrados minimizan el recuento máximo de cambios de bits para cada dígito.
Contadores de código Gray y aritmética
George R. Stibitz utilizó un código binario reflejado en un dispositivo de conteo de pulsos binarios ya en 1941. [11] [12] [13]
Un uso típico de los contadores de código Gray es la construcción de un búfer de datos FIFO (primero en entrar, primero en salir) que tiene puertos de lectura y escritura que existen en diferentes dominios de reloj. Los contadores de entrada y salida dentro de un FIFO de puerto dual a menudo se almacenan utilizando código Gray para evitar que se capturen estados transitorios no válidos cuando el conteo cruza dominios de reloj. [53]
Los punteros de lectura y escritura actualizados deben pasarse entre dominios de reloj cuando cambian, para poder rastrear el estado de vacío y lleno de FIFO en cada dominio. Cada bit de los punteros se muestrea de forma no determinista para esta transferencia de dominio de reloj. Por lo tanto, para cada bit, se propaga el valor antiguo o el nuevo. Por lo tanto, si más de un bit en el puntero multibit está cambiando en el punto de muestreo, se puede propagar un valor binario "incorrecto" (ni nuevo ni antiguo). Al garantizar que solo un bit puede cambiar, los códigos Gray garantizan que los únicos valores muestreados posibles sean el valor multibit nuevo o antiguo. Normalmente se utilizan códigos Gray de longitud de potencia de dos.
A veces, los buses digitales en los sistemas electrónicos se utilizan para transmitir cantidades que solo pueden aumentar o disminuir de a una por vez, por ejemplo, la salida de un contador de eventos que se pasa entre dominios de reloj o a un convertidor digital a analógico. La ventaja de los códigos Gray en estas aplicaciones es que las diferencias en los retrasos de propagación de los muchos cables que representan los bits del código no pueden hacer que el valor recibido pase por estados que están fuera de la secuencia del código Gray. Esto es similar a la ventaja de los códigos Gray en la construcción de codificadores mecánicos, sin embargo, la fuente del código Gray es un contador electrónico en este caso. El contador en sí debe contar en código Gray, o si el contador funciona en binario, entonces el valor de salida del contador debe volver a cronometrarse después de que se haya convertido a código Gray, porque cuando un valor se convierte de binario a código Gray, [nb 1] es posible que las diferencias en los tiempos de llegada de los bits de datos binarios al circuito de conversión de binario a Gray signifiquen que el código podría pasar brevemente por estados que están muy fuera de secuencia. Agregar un registro sincronizado después del circuito que convierte el valor del conteo en código Gray puede introducir un ciclo de reloj de latencia, por lo que contar directamente en código Gray puede ser ventajoso. [54]
Para producir el siguiente valor de conteo en un contador de código Gray, es necesario tener alguna lógica combinacional que incremente el valor de conteo actual que está almacenado. Una forma de incrementar un número de código Gray es convertirlo en código binario ordinario, [55] sumarle uno con un sumador binario estándar y luego convertir el resultado nuevamente a código Gray. [56] Otros métodos de conteo en código Gray se analizan en un informe de Robert W. Doran , que incluye tomar la salida de los primeros pestillos de los flip flops maestro-esclavo en un contador de ondulación binaria. [57]
Direccionamiento de código Gray
Como la ejecución del código del programa generalmente genera un patrón de acceso a la memoria de instrucciones de direcciones consecutivas localmente, las codificaciones de bus que utilizan direccionamiento de código Gray en lugar de direccionamiento binario pueden reducir significativamente la cantidad de cambios de estado de los bits de dirección, reduciendo así el consumo de energía de la CPU en algunos diseños de bajo consumo. [58] [59]
Construyendo unnorte-Código Gray de bit
La lista de código Gray reflejada en binario para n bits se puede generar recursivamente a partir de la lista para n − 1 bits reflejando la lista (es decir, enumerando las entradas en orden inverso), anteponiendo un 0 binario a las entradas de la lista original, anteponiendo un 1 binario a las entradas de la lista reflejada y, a continuación, concatenando la lista original con la lista invertida. [13] Por ejemplo, generar la lista n = 3 a partir de la lista n = 2:
El código Gray de un bit es G 1 = ( 0,1 ). Se puede pensar que se construye de forma recursiva como se indicó anteriormente a partir de un código Gray de cero bits G 0 = ( Λ ) que consiste en una única entrada de longitud cero. Este proceso iterativo de generación de G n +1 a partir de G n deja claras las siguientes propiedades del código reflectivo estándar:
G n es una permutación de los números 0, ..., 2 n − 1. (Cada número aparece exactamente una vez en la lista).
G n está incrustado como la primera mitad de G n +1 .
Por lo tanto, la codificación es estable , en el sentido de que una vez que un número binario aparece en G n aparece en la misma posición en todas las listas más largas; por lo que tiene sentido hablar del valor del código Gray reflectante de un número: G ( m ) = el m ésimo código Gray reflectante, contando desde 0.
Cada entrada en G n difiere de la entrada anterior en solo un bit. (La distancia de Hamming es 1).
La última entrada en G n difiere de la primera en solo un bit. (El código es cíclico).
Estas características sugieren un método simple y rápido de traducir un valor binario al código Gray correspondiente. Cada bit se invierte si el siguiente bit más alto del valor de entrada se establece en uno. Esto se puede realizar en paralelo mediante una operación de desplazamiento de bits y de o exclusivo si están disponibles: el código Gray n -ésimo se obtiene calculando . Anteponer un bit 0 deja sin cambios el orden de las palabras de código, anteponer un bit 1 invierte el orden de las palabras de código. Si se invierten los bits en la posición de las palabras de código, se invierte el orden de los bloques vecinos de palabras de código. Por ejemplo, si se invierte el bit 0 en una secuencia de palabras de código de 3 bits, se invierte el orden de dos palabras de código vecinas.
000,001,010,011,100,101,110,111 → 001,000,011,010,101,100,111,110 (invertir bit 0)
Si se invierte el bit 1, los bloques de 2 palabras de código cambian de orden:
000,001,010,011,100,101,110,111 → 010,011,000,001,110,111,100,101 (invertir bit 1)
Si se invierte el bit 2, los bloques de 4 palabras de código invierten el orden:
000,001,010,011,100,101,110,111 → 100,101,110,111,000,001,010,011 (invertir bit 2)
Por lo tanto, al ejecutar una operación exclusiva o en un bit en la posición con el bit en la posición se deja intacto el orden de las palabras de código si , y se invierte el orden de los bloques de palabras de código si . Ahora bien, esta es exactamente la misma operación que el método reflect-and-prefix para generar el código Gray.
Se puede utilizar un método similar para realizar la traducción inversa, pero el cálculo de cada bit depende del valor calculado del siguiente bit superior, por lo que no se puede realizar en paralelo. Suponiendo que es el bit codificado en Gray ( siendo el bit más significativo), y es el bit codificado en binario ( siendo el bit más significativo), la traducción inversa se puede dar de forma recursiva: , y . Alternativamente, la decodificación de un código Gray en un número binario se puede describir como una suma de prefijo de los bits en el código Gray, donde cada operación de suma individual en la suma de prefijo se realiza módulo dos.
Para construir el código Gray binario reflejado de forma iterativa, en el paso 0 comience con , y en el paso encuentre la posición de bit del 1 menos significativo en la representación binaria de e invierta el bit en esa posición en el código anterior para obtener el siguiente código . Las posiciones de bit comienzan 0, 1, 0, 2, 0, 1, 0, 3, .... [nb 2] Consulte encontrar el primer conjunto para obtener algoritmos eficientes para calcular estos valores.
Conversión hacia y desde código Gray
Las siguientes funciones en C convierten entre números binarios y sus códigos Gray asociados. Si bien puede parecer que la conversión de Gray a binario requiere que cada bit se maneje de a uno por vez, existen algoritmos más rápidos. [60] [55] [nb 1]
tipo def int sin signo uint ;// Esta función convierte un número binario sin signo en código binario Gray reflejado. uint BinaryToGray ( uint num ) { return num ^ ( num >> 1 ); // El operador >> es desplazamiento a la derecha. El operador ^ es or exclusivo. }// Esta función convierte un número de código Gray binario reflejado en un número binario. uint GrayToBinary ( uint num ) { uint mask = num ; while ( mask ) { // Cada bit de código Gray se asocia de forma exclusiva con todos los bits más significativos. mask >>= 1 ; num ^= mask ; } return num ; }// Una versión más eficiente para códigos Gray de 32 bits o menos mediante el uso de técnicas SWAR (SIMD dentro de un registro). // Implementa una función XOR de prefijo paralelo. Las instrucciones de asignación pueden estar en cualquier orden. // // Esta función se puede adaptar para códigos Gray más largos agregando pasos.uint GrayToBinary32 ( uint num ) { num ^= num >> 16 ; num ^= num >> 8 ; num ^= num >> 4 ; num ^= num >> 2 ; num ^= num >> 1 ; return num ; } // Una variante de cuatro bits a la vez cambia un número binario (abcd)2 a (abcd)2 ^ (00ab)2, luego a (abcd)2 ^ (00ab)2 ^ (0abc)2 ^ (000a)2.
En los procesadores más nuevos, la cantidad de instrucciones ALU en el paso de decodificación se puede reducir aprovechando el conjunto de instrucciones CLMUL . Si MASK es la cadena binaria constante de unos que termina con un solo dígito cero, entonces la multiplicación sin acarreo de MASK con la codificación gris de x siempre dará x o su negación bit a bit.
Tipos especiales de códigos Gray
En la práctica, el "código Gray" casi siempre se refiere a un código Gray binario reflejado (BRGC). Sin embargo, los matemáticos han descubierto otros tipos de códigos Gray. Al igual que los BRGC, cada uno consiste en una lista de palabras, donde cada palabra difiere de la siguiente en solo un dígito (cada palabra tiene una distancia de Hamming de 1 con respecto a la palabra siguiente).
Códigos grises connortebits y de longitud menor a 2norte
Es posible construir códigos Gray binarios con n bits con una longitud menor que 2 n , si la longitud es par. Una posibilidad es comenzar con un código Gray balanceado y eliminar pares de valores al principio y al final, o en el medio. [61] La secuencia OEIS A290772 [62] proporciona el número de posibles secuencias Gray de longitud 2 n que incluyen cero y utilizan el número mínimo de bits.
norte-Código Gray ario
Existen muchos tipos especializados de códigos Gray además del código Gray reflejado en binario. Uno de estos tipos de código Gray es el código Gray n -ario , también conocido como código Gray no booleano . Como su nombre lo indica, este tipo de código Gray utiliza valores no booleanos en sus codificaciones.
Por ejemplo, un código Gray 3-ario ( ternario ) utilizaría los valores 0,1,2. [31] El código Gray ( n , k ) es el código Gray n -ario con k dígitos. [63]
La secuencia de elementos en el código Gray (3, 2) es: 00,01,02,12,11,10,20,21,22. El código Gray ( n , k ) puede construirse recursivamente, como el BRGC, o puede construirse iterativamente . Se presenta un algoritmo para generar iterativamente el código Gray ( N , k ) (en C ):
// entradas: base, dígitos, valor // salida: Gray // Convierte un valor en un código Gray con la base y los dígitos dados. // Iterar a través de una secuencia de valores daría como resultado una secuencia // de códigos Gray en la que solo cambia un dígito a la vez. void toGray ( unsigned base , unsigned digits , unsigned value , unsigned gray [ digit ]) { unsigned baseN [ digit ]; // Almacena el número base-N ordinario, un dígito por entrada unsigned i ; // La variable de bucle // Coloca el número baseN normal en la matriz baseN. Para la base 10, 109 // se almacenaría como [9,0,1] for ( i = 0 ; i < digits ; i ++ ) { baseN [ i ] = value % base ; value = value / base ; } // Convierte el número baseN normal en el código Gray equivalente. Ten en cuenta que // el bucle comienza en el dígito más significativo y va hacia abajo. unsigned shift = 0 ; mientras ( i -- ) { // El dígito Gray se desplaza hacia abajo por la suma de los dígitos superiores. gray [ i ] = ( baseN [ i ] + shift ) % base ; shift = shift + base - gray [ i ]; // Restar de la base para que shift sea positivo } } // EJEMPLOS // entrada: valor = 1899, base = 10, dígitos = 4 // salida: baseN[] = [9,9,8,1], gray[] = [0,1,7,1] // entrada: valor = 1900, base = 10, dígitos = 4 // salida: baseN[] = [0,0,9,1], gray[] = [0,1,8,1]
Existen otros algoritmos de código Gray para los códigos Gray ( n , k ). El código Gray ( n , k ) producido por el algoritmo anterior siempre es cíclico; algunos algoritmos, como el de Guan, [63] carecen de esta propiedad cuando k es impar. Por otro lado, aunque con este método solo cambia un dígito a la vez, puede cambiar envolviéndolo (haciendo un bucle de n − 1 a 0). En el algoritmo de Guan, el conteo aumenta y disminuye alternativamente, de modo que la diferencia numérica entre dos dígitos del código Gray siempre es uno.
Los códigos Gray no están definidos de forma única, ya que una permutación de las columnas de un código de este tipo también es un código Gray. El procedimiento anterior produce un código en el que cuanto menor sea la importancia de un dígito, más a menudo cambia, lo que lo hace similar a los métodos de conteo normales.
Véase también Sistema de numeración binario sesgado , una variante del sistema de numeración ternario en el que como máximo dos dígitos cambian en cada incremento, ya que cada incremento puede realizarse con una operación de acarreo de un dígito como máximo .
Código Gray equilibrado
Aunque el código Gray binario reflejado es útil en muchos escenarios, no es óptimo en ciertos casos debido a una falta de "uniformidad". [52] En los códigos Gray balanceados , el número de cambios en las diferentes posiciones de coordenadas es lo más cercano posible. Para hacer esto más preciso, sea G un ciclo Gray completo R -ario que tiene una secuencia de transición ; los conteos de transición ( espectro ) de G son la colección de números enteros definidos por
Un código Gray es uniforme o uniformemente balanceado si sus conteos de transición son todos iguales, en cuyo caso tenemos
para todo k . Claramente, cuando , tales códigos existen solo si n es una potencia de 2. [64] Si n no es una potencia de 2, es posible construir códigos binarios bien balanceados donde la diferencia entre dos conteos de transición es como máximo 2; de modo que (combinando ambos casos) cada conteo de transición es o . [52] Los códigos Gray también pueden estar balanceados exponencialmente si todos sus conteos de transición son potencias adyacentes de dos, y tales códigos existen para cada potencia de dos. [65]
Por ejemplo, un código Gray equilibrado de 4 bits tiene 16 transiciones, que se pueden distribuir uniformemente entre las cuatro posiciones (cuatro transiciones por posición), lo que lo hace uniformemente equilibrado: [52]
0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0
0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0
0 0 0 0 1 1 1 1 1 0 0 1 1 1 0 0
0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1
Mientras que un código Gray de 5 bits balanceado tiene un total de 32 transiciones, que no se pueden distribuir de manera uniforme entre las posiciones. En este ejemplo, cuatro posiciones tienen seis transiciones cada una y una tiene ocho: [52]
Ahora mostraremos una construcción [66] e implementación [67] para códigos Gray binarios bien balanceados que nos permite generar un código Gray balanceado de n dígitos para cada n . El principio principal es construir inductivamente un código Gray de ( n + 2) dígitos dado un código Gray de n dígitos G de tal manera que se preserve la propiedad balanceada. Para hacer esto, consideramos particiones de en un número par L de bloques no vacíos de la forma
donde , , y ). Esta partición induce un código Gray de dígitos dado por
Si definimos las multiplicidades de transición
para ser el número de veces que el dígito en la posición i cambia entre bloques consecutivos en una partición, entonces para el código Gray de ( n + 2) dígitos inducido por esta partición el espectro de transición es
La parte delicada de esta construcción es encontrar una partición adecuada de un código Gray de n dígitos balanceado de tal manera que el código inducido por él permanezca balanceado, pero para esto solo importan las multiplicidades de transición; unir dos bloques consecutivos sobre una transición de dígito y dividir otro bloque en otra transición de dígito produce un código Gray diferente con exactamente el mismo espectro de transición , por lo que uno puede, por ejemplo [65] designar las primeras transiciones en dígito como aquellas que caen entre dos bloques. Se pueden encontrar códigos uniformes cuando y , y esta construcción se puede extender también al caso R -ario. [66]
Códigos Gray de largo plazo
Los códigos Gray de largo recorrido (o de intervalo máximo ) maximizan la distancia entre cambios consecutivos de dígitos en la misma posición. Es decir, la longitud mínima de recorrido de cualquier bit permanece inalterada durante el mayor tiempo posible. [68]
Códigos grises monótonos
Los códigos monótonos son útiles en la teoría de redes de interconexión, especialmente para minimizar la dilatación de matrices lineales de procesadores. [69]
Si definimos el peso de una cadena binaria como la cantidad de 1 en la cadena, entonces, aunque claramente no podemos tener un código Gray con un peso estrictamente creciente, es posible que queramos aproximarnos a esto haciendo que el código pase por dos pesos adyacentes antes de llegar al siguiente.
Podemos formalizar el concepto de códigos Gray monótonos de la siguiente manera: considere la partición del hipercubo en niveles de vértices que tienen igual peso, es decir
para . Estos niveles satisfacen . Sea el subgrafo de inducido por , y sean las aristas en . Un código Gray monótono es entonces un camino hamiltoniano en tal que siempre que aparece antes en el camino, entonces .
Una construcción elegante de códigos Gray monótonos de n dígitos para cualquier n se basa en la idea de construir recursivamente subcaminos de longitud que tengan aristas en . [69] Definimos , siempre que o , y
De lo contrario, aquí, es una permutación adecuadamente definida y se refiere a la ruta P con sus coordenadas permutadas por . Estas rutas dan lugar a dos códigos Gray monótonos de n dígitos y están dadas por
La elección de cuál garantiza que estos códigos sean realmente códigos Gray resulta ser . Los primeros valores de se muestran en la tabla siguiente.
Estos códigos Gray monótonos se pueden implementar de manera eficiente de tal manera que cada elemento subsiguiente se pueda generar en tiempo O ( n ). El algoritmo se describe más fácilmente utilizando corrutinas .
Los códigos monótonos tienen una conexión interesante con la conjetura de Lovász , que establece que cada grafo transitivo de vértice conectado contiene un camino hamiltoniano. El subgrafo de "nivel medio" es transitivo de vértice (es decir, su grupo de automorfismos es transitivo, de modo que cada vértice tiene el mismo "entorno local" y no se puede diferenciar de los demás, ya que podemos reetiquetar las coordenadas así como los dígitos binarios para obtener un automorfismo ) y el problema de encontrar un camino hamiltoniano en este subgrafo se denomina "problema de niveles medios", que puede proporcionar información sobre la conjetura más general. La pregunta ha sido respondida afirmativamente para , y la construcción precedente para códigos monótonos asegura un camino hamiltoniano de longitud al menos 0,839 N , donde N es el número de vértices en el subgrafo de nivel medio. [70]
Código Beckett-Gray
Otro tipo de código Gray, el código Beckett-Gray , recibe su nombre del dramaturgo irlandés Samuel Beckett , que estaba interesado en la simetría . Su obra " Quad " presenta cuatro actores y está dividida en dieciséis períodos de tiempo. Cada período termina con uno de los cuatro actores entrando o saliendo del escenario. La obra comienza y termina con un escenario vacío, y Beckett quería que cada subconjunto de actores apareciera en el escenario exactamente una vez. [71] Claramente, el conjunto de actores que se encuentran actualmente en el escenario puede representarse mediante un código Gray binario de 4 bits. Beckett, sin embargo, puso una restricción adicional en el guion: quería que los actores entraran y salieran de modo que el actor que hubiera estado en el escenario durante más tiempo siempre fuera el que saliera. Los actores podrían entonces representarse mediante una cola de primero en entrar, primero en salir , de modo que (de los actores en el escenario) el actor que se retira de la cola sea siempre el que se puso en cola primero. [71] Beckett no pudo encontrar un código Beckett-Gray para su obra y, de hecho, una lista exhaustiva de todas las secuencias posibles revela que no existe tal código para n = 4. Hoy se sabe que tales códigos existen para n = 2, 5, 6, 7 y 8, y no existen para n = 3 o 4. Un ejemplo de un código Beckett-Gray de 8 bits se puede encontrar en Art of Computer Programming de Donald Knuth . [13] Según Sawada y Wong, el espacio de búsqueda para n = 6 se puede explorar en 15 horas, y más deSe han encontrado 9500 soluciones para el caso n = 7. [72]
Códigos de la serpiente en la caja
Los códigos de serpiente en la caja , o snakes , son las secuencias de nodos de caminos inducidos en un grafo de hipercubo n -dimensional , y los códigos de bobina en la caja, [73] o coils , son las secuencias de nodos de ciclos inducidos en un hipercubo. Vistas como códigos Gray, estas secuencias tienen la propiedad de poder detectar cualquier error de codificación de un solo bit. Los códigos de este tipo fueron descritos por primera vez por William H. Kautz a fines de la década de 1950; [5] desde entonces, ha habido mucha investigación para encontrar el código con el mayor número posible de palabras de código para una dimensión de hipercubo dada.
Código Gray de vía única
Otro tipo de código Gray es el código Gray de pista única (STGC) desarrollado por Norman B. Spedding [74] [75] y refinado por Hiltgen, Paterson y Brandestini en Single-track Gray Codes (1996). [76] [77] El STGC es una lista cíclica de P codificaciones binarias únicas de longitud n tales que dos palabras consecutivas difieren exactamente en una posición, y cuando la lista se examina como una matriz P × n , cada columna es un desplazamiento cíclico de la primera columna. [78]
El nombre proviene de su uso con codificadores rotatorios , donde una serie de pistas son detectadas por contactos, lo que resulta para cada una en una salida de 0 o 1. Para reducir el ruido debido a que los diferentes contactos no cambian exactamente en el mismo momento en el tiempo, se configuran preferiblemente las pistas de modo que la salida de datos por los contactos esté en código Gray. Para obtener una alta precisión angular, se necesitan muchos contactos; para lograr una precisión de al menos 1°, se necesitan al menos 360 posiciones distintas por revolución, lo que requiere un mínimo de 9 bits de datos y, por lo tanto, la misma cantidad de contactos.
Si todos los contactos se colocan en la misma posición angular, se necesitan 9 pistas para obtener un BRGC estándar con una precisión de al menos 1°. Sin embargo, si el fabricante mueve un contacto a una posición angular diferente (pero a la misma distancia del eje central), entonces el "patrón de anillo" correspondiente debe rotarse el mismo ángulo para obtener el mismo resultado. Si el bit más significativo (el anillo interior en la Figura 1) se rota lo suficiente, coincide exactamente con el siguiente anillo. Como ambos anillos son idénticos, se puede cortar el anillo interior y mover el sensor de ese anillo al anillo idéntico restante (pero desplazado en ese ángulo respecto del otro sensor en ese anillo). Esos dos sensores en un solo anillo forman un codificador de cuadratura. Eso reduce el número de pistas para un codificador angular de "resolución de 1°" a 8 pistas. Reducir aún más el número de pistas no se puede hacer con BRGC.
Durante muchos años, Torsten Sillke [79] y otros matemáticos creyeron que era imposible codificar la posición en una sola pista de modo que las posiciones consecutivas difirieran en un solo sensor, excepto en el caso del codificador de cuadratura de 2 sensores y 1 pista. Por lo tanto, para aplicaciones en las que 8 pistas eran demasiado voluminosas, se utilizaban codificadores incrementales de una sola pista (codificadores de cuadratura) o codificadores de "codificador de cuadratura + muesca de referencia" de 2 pistas.
Sin embargo, Norman B. Spedding registró una patente en 1994 con varios ejemplos que demostraban que era posible. [74] Aunque no es posible distinguir 2 n posiciones con n sensores en una sola pista, es posible distinguir cerca de esa cantidad. Etzion y Paterson conjeturan que cuando n es en sí mismo una potencia de 2, n sensores pueden distinguir como máximo 2 n − 2 n posiciones y que para n primo el límite es 2 n − 2 posiciones. [80] Los autores continuaron generando un código de pista única de 504 posiciones de longitud 9 que creen que es óptimo. Dado que este número es mayor que 2 8 = 256, cualquier código requiere más de 8 sensores, aunque un BRGC podría distinguir 512 posiciones con 9 sensores.
Se reproduce aquí un STGC para P = 30 y n = 5:
Cada columna es un desplazamiento cíclico de la primera columna, y de cualquier fila a la siguiente solo cambia un bit. [81]
La naturaleza de pista única (como una cadena de código) es útil en la fabricación de estas ruedas (en comparación con BRGC), ya que solo se necesita una pista, lo que reduce su costo y tamaño. La naturaleza del código Gray es útil (en comparación con los códigos en cadena , también llamados secuencias De Bruijn ), ya que solo cambiará un sensor en un momento dado, por lo que la incertidumbre durante una transición entre dos estados discretos solo será más o menos una unidad de medida angular que el dispositivo es capaz de resolver. [82]
Desde que se agregó este ejemplo de 30 grados, ha habido mucho interés en ejemplos con mayor resolución angular. En 2008, Gary Williams, [83] basándose en trabajos anteriores [80] descubrió un código Gray de pista única de 9 bits que brinda una resolución de 1 grado. Este código Gray se utilizó para diseñar un dispositivo real que se publicó en el sitio Thingiverse . Este dispositivo [84] fue diseñado por etzenseep (Florian Bauer) en septiembre de 2022.
Se reproduce aquí un STGC para P = 360 y n = 9:
Código Gray bidimensional
Los códigos Gray bidimensionales se utilizan en las comunicaciones para minimizar la cantidad de errores de bits en los puntos adyacentes de la constelación con modulación de amplitud en cuadratura (QAM) . En una codificación típica, los puntos adyacentes horizontales y verticales de la constelación difieren en un solo bit, y los puntos adyacentes diagonales difieren en 2 bits. [85]
Los códigos Gray bidimensionales también tienen usos en esquemas de identificación de ubicación , donde el código se aplicaría a mapas de área como una proyección de Mercator de la superficie de la Tierra y se usaría una función de distancia bidimensional cíclica apropiada como la métrica de Mannheim para calcular la distancia entre dos ubicaciones codificadas, combinando así las características de la distancia de Hamming con la continuación cíclica de una proyección de Mercator. [86]
Código Gray en exceso
Si se extrae una subsección de un valor de código específico de ese valor, por ejemplo los últimos 3 bits de un código Gray de 4 bits, el código resultante será un "código Gray en exceso". Este código muestra la propiedad de contar hacia atrás en esos bits extraídos si el valor original se incrementa aún más. La razón de esto es que los valores codificados en Gray no muestran el comportamiento de desbordamiento, conocido en la codificación binaria clásica, cuando aumentan más allá del valor "más alto".
Ejemplo: el código Gray de 3 bits más alto, 7, se codifica como (0)100. Si se suma 1, se obtiene el número 8, codificado en Gray como 1100. Los últimos 3 bits no se desbordan y cuentan hacia atrás si se aumenta aún más el código de 4 bits original.
Al trabajar con sensores que generan múltiples valores codificados en Gray de manera serial, se debe prestar atención a si el sensor produce esos múltiples valores codificados en un solo código Gray o como valores separados, ya que de lo contrario los valores podrían parecer contados hacia atrás cuando se espera un "desbordamiento".
Hay una serie de códigos binarios similares a los códigos Gray, entre ellos:
Los códigos Datex, también conocidos como códigos Giannini (1954), descritos por Carl P. Spaulding, [9] [89] [90] [91] [92] [8] utilizan una variante del código O'Brien II.
Los códigos utilizados por Varec (ca. 1954), [93] [94] [95] [96] utilizan una variante del código O'Brien I, así como variantes del código Gray base 12 y base 16.
Código Lucal (1959) [1] [2] [57] también conocido como código binario reflejado modificado (MRB) [1] [2] [nb 3]
El código Gillham (1961/1962), [90] [97] [8] [98] [99] utiliza una variante del código Datex y del código O'Brien II.
Código de Leslie y Russell (1964) [100] [10] [101] [97]
Código Petherick (1953), [19] [105] [106] [107] [55] [103] [nb 4] también conocido como código Royal Aircraft Establishment (RAE). [108]
Códigos O'Brien I y II (1955) [109] [110] [111] [91] [92] [103] (Un código O'Brien tipo I [nb 5] ya fue descrito por Frederic A. Foss de IBM [112] [113] y utilizado por Varec en 1954. Más tarde, también se lo conoció como código Watts o código decimal reflejado de Watts (WRD) y a veces se lo denomina ambiguamente código Gray binario reflejado modificado. [114] [20] [21] [115] [116] [117] [118] [119] [120] [nb 1] [nb 3] Un código O'Brien tipo II ya fue utilizado por Datex en 1954. [nb 4] )
Código Gray de exceso-3 (1956) [121] (también conocido como código Gray de exceso-3 , [91] [92] [8] código Gray de exceso-3, código Gray de exceso-3 reflejo, código Gray de exceso, [103] código Gray de exceso-3, código Gray de exceso-10-3 o código Gray–Stibitz), descrito por Frank P. Turvey Jr. de ITT . [121]
Códigos Tompkins I y II (1956) [4] [110] [111] [91] [92] [103]
Código Glixon (1957), a veces ambiguamente también llamado código Gray modificado [122] [55] [123] [124 ] [ 110] [111] [91] [92] [103] [nb 3] [nb 5]
^ abc Aplicando una regla de inversión simple , el código Gray y el código O'Brien I pueden traducirse al código binario puro 8421 y al código Aiken 2421 , respectivamente, para facilitar las operaciones aritméticas. [C]
^ Secuencia 0, 1, 0, 2, 0, 1, 0, 3, … (secuencia A007814 en la OEIS ).
^ abc Existen varias variantes del código Gray que se denominan "modificadas" de algún modo: El código Glixon a veces se denomina código Gray modificado. [D] El código Lucal también se denomina código binario reflejado modificado (MRB). [E] El código O'Brien I o código Watts a veces se denomina código Gray modificado binario reflejado. [F]
^ abcd Al intercambiar e invertir tres filas de bits, el código O'Brien II y el código Petherick se pueden transferir entre sí.
^ abcd Al intercambiar dos pares de filas de bits, desplazando individualmente cuatro filas de bits e invirtiendo una de ellas, el código Glixon y el código O'Brien I pueden transferirse entre sí.
^ Otros códigos BCD de unidades de distancia incluyen el código Libaw-Craig de 5 bits no relacionado con el código Gray y el código 1-2-1 .
^ Dependiendo de la aplicación de destino de un código, los pesos de Hamming de un código pueden ser propiedades importantes más allá de las consideraciones teóricas de codificación, también por razones físicas. En algunas circunstancias, los estados de todo despejado y/o todo configurado deben omitirse (fe para evitar condiciones de no conducción o cortocircuito), puede ser deseable mantener el peso más alto utilizado lo más bajo posible (fe para reducir el consumo de energía del circuito lector) o mantener pequeña la varianza de los pesos utilizados (fe para reducir el ruido acústico o las fluctuaciones de corriente).
^ abc Para los códigos Gray BCD, Paul y Klar, la cantidad de pistas de lectura necesarias se puede reducir de 4 a 3 si la inversión de una de las pistas intermedias es aceptable.
^ abcdef Para los códigos O'Brien I y II y los códigos Petherick, Susskind, Klar y Gray Excess-3, se puede derivar un complemento de 9 invirtiendo el dígito binario más significativo (cuarto).
^ Para el código Tompkins II, un complemento de 9 invirtiendo los primeros tres dígitos e intercambiando los dos dígitos binarios del medio.
Referencias
^ abc Lucal, Harold M. (diciembre de 1959). "Operaciones aritméticas para computadoras digitales que utilizan un binario reflejado modificado". IRE Transactions on Electronic Computers . EC-8 (4): 449–458. doi :10.1109/TEC.1959.5222057. ISSN 0367-9950. S2CID 206673385.(10 páginas)
^ abc Sellers, Jr., Frederick F.; Hsiao, Mu-Yue; Bearnson, Leroy W. (noviembre de 1968). Error Detecting Logic for Digital Computers (1.ª ed.). Nueva York, EE. UU.: McGraw-Hill Book Company . págs. 152–164. LCCN 68-16491. OCLC 439460.
^ Gray, Joel (marzo de 2020). "Entender el código Gray: un sistema de codificación confiable". graycode.ie . Sección: Conclusión . Consultado el 30 de junio de 2023 .
^ abcd Tompkins, Howard E. (septiembre de 1956) [16 de julio de 1956]. "Códigos binarios decimales de distancia unitaria para conmutación de dos vías". IRE Transactions on Electronic Computers . Correspondencia. EC-5 (3). Moore School of Electrical Engineering , University of Pennsylvania , Philadelphia, Pennsylvania, EE. UU.: 139. doi :10.1109/TEC.1956.5219934. ISSN 0367-9950. Archivado desde el original el 18 de mayo de 2020 . Consultado el 18 de mayo de 2020. el 18 de mayo de 2020 .(1 página)
^ ab Susskind, Alfred Kriss; Ward, John Erwin (28 de marzo de 1958) [1957, 1956]. "III.F. Códigos de unidad de distancia / VI.E.2. Códigos binarios reflejados". Escrito en Cambridge, Massachusetts, EE. UU. En Susskind, Alfred Kriss (ed.). Notas sobre técnicas de conversión analógico-digital . Libros de tecnología en ciencia e ingeniería. Vol. 1 (3.ª ed.). Nueva York, EE. UU.: Technology Press del Instituto Tecnológico de Massachusetts / John Wiley & Sons, Inc. / Chapman & Hall, Ltd. pp. 3-10–3-16 [3-13–3-16], 6-65–6-60 [6-60].(x+416+2 páginas) (NB. El contenido del libro fue preparado originalmente por miembros del personal del Laboratorio de Servomecanismos , Departamento de Ingeniería Eléctrica, MIT , para los Programas Especiales de Verano celebrados en 1956 y 1957. El "código de tipo de lectura" de Susskind es en realidad una variante menor del código que se muestra aquí con las dos filas de bits más significativas intercambiadas para ilustrar mejor las simetrías. Además, al intercambiar dos filas de bits e invertir una de ellas, el código se puede transferir al código Petherick, mientras que al intercambiar e invertir dos filas de bits, el código se puede transferir al código O'Brien II.)
^ ab Chinal, Jean P. (enero de 1973). "3.3. Códigos de distancia unitaria". Escrito en París, Francia. Métodos de diseño para sistemas digitales. Traducido por Preston, Alan; Summer, Arthur (1.ª edición en inglés). Berlín, Alemania: Akademie-Verlag / Springer-Verlag . pág. 50. doi :10.1007/978-3-642-86187-1. ISBN .978-0-387-05871-9. S2CID 60362404. Número de licencia 202-100/542/73. Número de orden 7617470(6047) ES 19 B 1 / 20 K 3 . Consultado el 21 de junio de 2020 .(xviii+506 páginas) (NB. El libro original francés de 1967 se llamó "Techniques Booléennes et Calculateurs Arithmétiques", publicado por Éditions Dunod [fr] ).
^ abcdef Manual militar: codificadores: ángulo del eje a digital (PDF) . Departamento de Defensa de los Estados Unidos . 1991-09-30. MIL-HDBK-231A. Archivado (PDF) desde el original el 2020-07-25 . Consultado el 2020-07-25 .(NB. Reemplaza MIL-HDBK-231(AS) (1970-07-01).)
^ abc Spaulding, Carl P. (1965-01-12) [1954-03-09]. "Sistema de codificación y traducción digital" (PDF) . Monrovia, California, EE. UU.: Datex Corporation. Patente estadounidense 3165731A . Número de serie 415058. Archivado (PDF) desde el original el 2020-08-05 . Consultado el 2018-01-21 .(28 páginas)
^ ab Russell, A. (agosto de 1964). "Algunos códigos binarios y un nuevo código de cinco canales". Control (sistemas, instrumentación, procesamiento de datos, automatización, gestión, incorporando Automation Progress) . Características especiales. 8 (74). Londres, Reino Unido: Morgan-Grampain (Publishers) Limited: 399–404 . Consultado el 22 de junio de 2020 .(6 páginas)
^ abc Stibitz, George Robert (12 de enero de 1943) [26 de noviembre de 1941]. "Contador binario". Nueva York, EE. UU.: Bell Telephone Laboratories, Incorporated . Patente estadounidense 2.307.868 . Número de serie 420537. Consultado el 24 de mayo de 2020. pág. 2, columna derecha, filas 43–73: […] Se obtendrá una idea más clara de la posición de las bolas después de cada pulso si el conjunto de bolas se representa mediante un número que tenga una cantidad similar de dígitos, cada uno de los cuales puede tener uno de dos valores arbitrarios, por ejemplo, 0 y 1. Si la posición superior se llama 0 y la posición inferior […] 1, entonces el ajuste del contador […] puede leerse de izquierda a derecha como 0.100.000. […] A continuación se muestra una traducción del número de pulsos recibidos en esta forma de notación binaria para los primeros dieciséis pulsos recibidos en las primeras cinco bolas […] Número de pulso […] Notación binaria […][1] (4 páginas)
^ abcde Winder, C. Farrell (octubre de 1959). "Los codificadores de ángulo de eje ofrecen alta precisión" (PDF) . Industrias electrónicas . 18 (10). Chilton Company : 76–80. Archivado desde el original (PDF) el 28 de septiembre de 2020 . Consultado el 14 de enero de 2018 . p. 78: […] El tipo de rueda de código más popular en los codificadores ópticos contiene un patrón de código binario cíclico diseñado para dar una secuencia cíclica de salidas de "encendido-apagado". El código binario cíclico también se conoce como código de progresión cíclica, código binario reflejado y código Gray. Este código fue creado por GR Stibitz , de Bell Telephone Laboratories , y fue propuesto por primera vez para sistemas de modulación de código de pulso por Frank Gray , también de BTL. De ahí el nombre de código Gray. El código Gray o cíclico se utiliza principalmente para eliminar la posibilidad de errores en la transición de código que podrían dar lugar a grandes ambigüedades. […]
^ ab Gray, Frank (1953-03-17) [1947-11-13]. Comunicación por código de pulso (PDF) . Nueva York, EE. UU.: Bell Telephone Laboratories, Incorporated . Patente estadounidense 2.632.058 . Número de serie 785697. Archivado (PDF) desde el original el 2020-08-05 . Consultado el 2020-08-05 .(13 páginas)
^ Breckman, Jack (1956-01-31) [1953-12-31]. Circuito de codificación (PDF) . Long Branch, Nueva Jersey, EE. UU.: Secretario del Ejército de EE . UU . . Patente estadounidense 2.733.432 . Número de serie 401738. Archivado (PDF) desde el original el 2020-08-05 . Consultado el 2020-08-05 .(8 páginas)
^ ab Ragland, Earl Albert; Schultheis, Jr., Harry B. (1958-02-11) [1953-10-16]. Sistema de control de posición de código binario sensible a la dirección (PDF) . North Hollywood, California, EE. UU.: Bendix Aviation Corporation. Patente estadounidense 2.823.345 . Número de serie 386524. Archivado (PDF) desde el original el 2020-08-05 . Consultado el 2020-08-05 .(10 páginas)
^ Domeshek, Sol; Reiner, Stewart (1958-06-24) [1954-01-08]. Sistema de rectificación automática (PDF) . Secretario de la Marina de los EE . UU. . Patente estadounidense 2.839.974 . Número de serie 403085. Archivado (PDF) desde el original el 2020-08-05 . Consultado el 2020-08-05 .(8 páginas)
^ abc Petherick, Edward John (octubre de 1953). Un sistema decimal codificado en binario cíclico y progresivo para representar números (nota técnica MS15). Farnborough, Reino Unido: Royal Aircraft Establishment (RAE).(4 páginas) (NB. A veces denominado " Sistema decimal codificado en binario y cíclico para representar números ").
^ ab Evans, David Silvester (1960). Fundamentos de instrumentación digital (1.ª ed.). Londres, Reino Unido: Hilger & Watts Ltd. Consultado el 24 de mayo de 2020. .(39 páginas)
^ ab Evans, David Silvester (marzo de 1961). "Capítulo tres: lectura directa de escalas codificadas". Datos digitales: su derivación y reducción para análisis y control de procesos (1.ª ed.). Londres, Reino Unido: Hilger & Watts Ltd / Interscience Publishers . págs. 18–23 . Consultado el 24 de mayo de 2020 . pág. 20–23: […] Descodificación. […] Para decodificar códigos CPB o WRD, se puede aplicar una regla de inversión simple. Las lecturas de las pistas superiores determinan la forma en que se traducen las pistas inferiores. La regla de inversión se aplica línea por línea para el CPB y para el WRD se aplica década por década o línea por línea. Por lo tanto, comenzando con la pista superior o la que cambia más lentamente del CPB, si el resultado es impar (1), el siguiente valor de la pista debe invertirse, es decir, 0 para 1 y 1 para 0. Sin embargo, si la primera pista es par (0), la segunda pista se deja como se lee, es decir, 0 para 0 y 1 para 1. Nuevamente, si la lectura resultante de la segunda pista es impar, la lectura de la tercera pista se invierte y así sucesivamente. Cuando un impar se cambia a par, la línea de abajo no se invierte y cuando un par se cambia a impar, la línea de abajo se invierte. El resultado de aplicar esta regla al patrón […] es el patrón binario puro (PB) […] donde a cada pista o dígito se le puede dar un valor numérico definido (en este caso 1, 2, 4, 8, etc.). […] El uso de la regla de inversión línea por línea en el código WRD produce [un] patrón [de código 1, 2, 4, 2 ] donde nuevamente los dígitos pueden recibir valores numéricos y sumarse década por década. La suma de los dígitos puede ser muy útil, por ejemplo, en un sistema de escaneo de alta velocidad; pero en un sistema de decodificación paralela […], es habitual tratar cada cuarteto binario o década como una entidad. En otras palabras, si la primera década o la más significativa es impar, la segunda década se rectifica o complementa invirtiendo la pista D y así sucesivamente, siendo el resultado el patrón repetitivo de [código WRD rectificado]. Esto es algo extremadamente fácil de lograr ya que el único cambio requerido es la inversión del significado de la pista D o dígito complementario. […](8+82 páginas) (NB: El autor no menciona a Gray en absoluto y llama al código Gray estándar "Código binario permutado cíclico" (CPB); el índice del libro lo enumera erróneamente como "código binario puro cíclico").
^ Cattermole, Kenneth W. (1969). Escrito en Harlow, Essex, Reino Unido. Principles of pulse code modulation (1 ed.). Londres, Reino Unido / Nueva York, EE. UU.: Iliffe Books Ltd. / American Elsevier Publishing Company, Inc. pp. 245, 434. ISBN978-0-444-19747-4. LCCN 78-80432. SBN 444-19747-8. p. 245: […] Parece haber cierta confusión sobre la atribución de este código, porque dos inventores llamados Gray han sido asociados con él. Cuando escuché el nombre por primera vez, pensé que se refería a Elisha Gray , y Heath da testimonio de su uso. Mucha gente lo toma como una referencia a Frank Gray de Bell Telephone Laboratories , quien en 1947 propuso por primera vez su uso en tubos de codificación: su patente aparece en la bibliografía. […](2+448+2 páginas)
^ Gros, Luc-Agathon-Louis (1872). Théorie du baguenodier par un clerc de notaire lyonnais (en francés) (1 ed.). Lyon, Francia: Aimé Vingtrinier . Archivado desde el original el 3 de abril de 2017 . Consultado el 17 de diciembre de 2020 .[2](2+16+4 páginas y 4 páginas desplegables) (NB: Este folleto se publicó de forma anónima, pero se sabe que su autor es Louis Gros).
^ Lucas, Édouard (noviembre de 1883). La tour d'Hanoï: Véritable casse tête annamite - Jeu rapporté du Tonkin par le Professeur N. Claus (de Siam) Mandarin du Collège Li Sou Stian! (en francés). Imprimerie Paul Bousrez, Tours.(NB. N. Claus de Siam es un anagrama de Lucas d'Amiens, seudónimo del autor Édouard Lucas .)
^ de Parville, Henri [en francés] , ed. (27 de diciembre de 1883). "La tour d'Hanoï, véritable casse-tête annamite, jeu rapporté du Tonkin par le professeur N. Claus (de Siam), mandarin du collège Li-Sou-Stian. Un vrai casse-tête, en efecto, mais interessant. Nous ne saurions mieux remercier le mandarin de son aimable intent à l'égard d'un profane qu'en signalant la Tour d'Hanoï aux personnespatientes posedées par le démon du jeu". Journal des Débats Politiques et Littéraires (Revisar). Revue des science (en francés) (edición matinal). París, Francia: 1–2 [2]. ark:/12148/bpt6k462461g. Archivado desde el original el 18 de diciembre de 2020. Consultado el 18 de diciembre de 2020 .(1 página)
^ Allardice, RE; Fraser, AY (febrero de 1883). Allardice, Robert Edgar ; Fraser, Alexander Yule (eds.). "La Tour d'Hanoï". Actas de la Sociedad Matemática de Edimburgo (en inglés y francés). 2 (5). Sociedad Matemática de Edimburgo : 50–53. doi : 10.1017/S0013091500037147 (inactivo el 26 de agosto de 2024). eISSN: 1464-3839. ISSN : 0013-0915. S2CID : 122159381.{{cite journal}}: CS1 maint: DOI inactive as of August 2024 (link)[3] (4 páginas)
^ Lucas, Édouard (1979) [1892]. Récréations mathématiques (en francés). vol. 3 (Reedición de la Biblioteca Albert Blanchard). pag. 58.(La primera edición de este libro se publicó póstumamente.)
^ ab Herter, Felix; Rote, Günter (2018-11-14) [2018-08-09, 2017-12, 2017-08-09, 2016-04-22]. "Enumeración de código Gray sin bucles y la Torre de Bucarest" (PDF) . Theoretical Computer Science . 748 . Berlín, Alemania: 40–54. arXiv : 1604.06707 . doi :10.1016/j.tcs.2017.11.017. ISSN 0304-3975. S2CID 4014870. Archivado (PDF) desde el original el 2020-12-16 . Consultado el 2020-12-16 .[4] (15/18/19/24 páginas)
^ Gardner, Martin (agosto de 1972). "Las curiosas propiedades del código Gray y cómo se puede utilizar para resolver acertijos". Scientific American . Mathematical Games . Vol. 227, núm. 2. pág. 106.(1 página)
^ Zeman, Johann; Fischer, Fernando, eds. (1877). "Einige neuere Vorschläge zur mehrfachen Telegraphie: A. Absatzweise vielfache Telegraphie". Revista Polytechnisches de Dingler (en alemán). 226 . Augsburgo, Alemania: JG Cotta'sche Buchhandlung: 499–507. Archivado desde el original el 21 de diciembre de 2020 . Consultado el 21 de diciembre de 2020 . pag. 499: […] Der um die Mitte des J[ahres] 1874 patenti[e]rte, ebenfalls dem Highton 'schen verwandte Typendrucker des französischen Telegraphen-Verwaltungsbeamten Baudot wurde bei seiner 1875 patenti[e]rten Weiterentwicklung in einen fünffachen umgewandelt [… ]
^ Butrica, Andrew J. (21 de junio de 1991). "Baudot, Jean Maurice Emile". En Froehlich, Fritz E.; Kent, Allen ; Hall, Carolyn M. (eds.). La enciclopedia de telecomunicaciones Froehlich/Kent: volumen 2: baterías y códigos. Telecomunicaciones . Vol. 2. Marcel Dekker Inc. / CRC Press . págs. 31–34. ISBN.0-8247-2901-3. LCCN 90-3966 . Consultado el 20 de diciembre de 2020 . p. 31: […] En 1876 se construyó un prototipo de Baudot (que tardó 4 años en fabricarse). El transmisor tenía 5 teclas similares a las de un piano. Los mensajes se enviaban en un código especial de 5 elementos ideado por Baudot […]
^ Fischer, Eric N. (2000-06-20). "La evolución de los códigos de caracteres, 1874-1968". ark:/13960/t07x23w8s . Consultado el 2020-12-20 . […] En 1872, [Baudot] comenzó a investigar sobre un sistema de telégrafo que permitiera a varios operadores transmitir simultáneamente por un solo cable y, a medida que se recibían las transmisiones, las imprimiría en caracteres alfabéticos ordinarios en una tira de papel. Recibió una patente para dicho sistema el 17 de junio de 1874. […] En lugar de un retraso variable seguido de un pulso de una sola unidad, el sistema de Baudot utilizaba seis unidades de tiempo uniformes para transmitir cada carácter. […] Su primer telégrafo probablemente utilizaba el código de seis unidades […] que atribuye a Davy en un artículo de 1877. […] En 1876 Baudot rediseñó su equipo para utilizar un código de cinco unidades. Sin embargo, a veces todavía se necesitaban signos de puntuación y dígitos, por lo que adoptó de Hughes el uso de dos caracteres especiales de espacio entre letras y cifras que hacían que la impresora cambiara de un caso a otro al mismo tiempo que avanzaba el papel sin imprimir. El código de cinco unidades que comenzó a utilizar en esa época […] estaba estructurado para adaptarse a su teclado […], que controlaba dos unidades de cada carácter con interruptores accionados con la mano izquierda y las otras tres unidades con la mano derecha. […][5][6]
^ Rothen, Timoteo (25 de diciembre de 1884). "Le télégraphe imprimeur Baudot". Journal Télégraphique (en francés). VIII/#16 (12). Berna, Suiza: Le Bureau International des Administrations Télégraphiques: 241–253 [249]. eISSN 2725-738X. ISSN 2223-1420. arca:/12148/bpt6k5725454q. Archivado desde el original el 21 de diciembre de 2020 . Consultado el 20 de diciembre de 2020 .
^ Pendry, Henry Walter (1920) [octubre de 1919]. Escrito en Londres, Reino Unido. The Baudôt Printing Telegraph System (2.ª ed.). Londres, Bath, Melbourne, Nueva York: Sir Isaac Pitman and Sons, Ltd. págs. 43–44. LCCN 21005277. OCLC 778309351. OL 6633244M . Consultado el 20 de diciembre de 2020 .(vii+184 páginas) (NB. Una primera edición fue publicada en 1913.)
^ ab MacMillan, David M. (2010-04-27) [2010-04-25, 2010-04-23]. "Códigos que no cuentan: algunos códigos de telégrafo de imprenta como productos de sus tecnologías (con especial atención al teletipo)". lemur.com . Revisión 3. Mineral Point, Wisconsin, EE. UU. Archivado desde el original el 2020-12-18 . Consultado el 2020-12-20 .
^ Escrito en Lisboa, Portugal. Convention télégraphique internationale de Saint-Pétersbourg et Règlement et tarifs y anexos, Revision de Lisbonne, 1908 / Extraits de la publicación: Documents de la Conférence télégraphique internationale de Lisbonne (en francés). Berna, Suiza: Bureau Internationale de L'Union Télégraphique . 1909 [1908].
^ "Capítulo IX. Señales de transmisión, artículo 35. Señales de transmisión de los alfabetos télegraphiques internationaux 'nos 1 et 2, señales del código Morse, de l'appareil Hughes et de l'appareil Siemens". Escrito en Madrid, España. Règlement télégraphique anexo à la convención internacional de télécomunicaciones - protocolo final de auditoría règlement - Madrid, 1932 (PDF) (en francés). Berna, Suiza: Bureau Internationale de L'Union Télégraphique . 1933 [1932]. págs. 31–40 [33]. Archivado (PDF) desde el original el 21 de diciembre de 2020 . Consultado el 21 de diciembre de 2020 .(1+188 páginas) [7]
^ "Capítulo IX. Señales de transmisión. Artículo 35. Señales de transmisión de los alfabetos telegráficos internacionales números 1 y 2, señales de código Morse y señales de los instrumentos Hughes y Siemens". Reglamento Telegráfico Anexo al Convenio Internacional de Telecomunicaciones - Protocolo Final del Reglamento Telegráfico - Madrid 1932 (PDF) (en inglés y francés). Londres, Reino Unido: General Post Office / His Majesty's Stationery Office . 1933 [1932]. págs. 32–40 [34]. 43-152-2 / 18693. Archivado (PDF) desde el original el 2020-12-21 . Consultado el 2020-12-21 .(1+2*120+26 páginas) [8]
^ Zemanek, Heinrich "Heinz" Josef (1 de diciembre de 1983). Otto Schäffler (1838-1928). Pionier des Telephons, der Telegraphie und der Lochkarte sowie Erbauer der ersten Wiener Telephonzentrale . Blätter für Technikgeschichte (en alemán e inglés). vol. 41–43 (1979–1981) (1 ed.). Viena, Austria: Technisches Museum für Industrie und Gewerbe , Forschungsinstitut für Technikgeschichte/ Springer-Verlag . págs. 81-118. ISBN3-21181779-4. ISSN 0067-9127. OCLC 952698275.
^ Zemanek, Heinrich "Heinz" Josef (7 de junio de 1976). "Prehistoria e historia de la informática en Europa central". Escrito en Viena, Austria. Taller internacional sobre gestión de conocimientos de requisitos . AFIPS '76: Actas de la conferencia y exposición informática nacional del 7 al 10 de junio de 1976, junio de 1976. Vol. 1. Nueva York, EE. UU.: American Federation of Information Processing Societies , Association for Computing Machinery . págs. 15-20. doi :10.1145/1499799.1499803. ISBN978-1-4503-7917-5. S2CID 14114959. Archivado desde el original el 2020-12-17 . Consultado el 2020-12-17 . p. 17: […] En 1874, Schaeffler [de] inventó otro telégrafo de imprenta , un sistema cuádruple como el Baudot , pero mecánicamente más sofisticado. El telégrafo Hughes tenía dos dedos que giraban sincrónicamente, uno en el emisor y otro en el receptor. Mediante un teclado parecido a un piano, el operador seleccionaba una letra y, de ese modo, hacía contacto con el dedo giratorio en la dirección correspondiente. Como el dedo receptor estaba en la misma dirección en ese momento, el receptor podía imprimir la letra correcta. Los telégrafos de imprenta Baudot y Schaeffler utilizan un código binario de cinco bits. ... ¡El código de Schaeffler es un código binario reflejado! Lo que F. Gray patentó en 1953 para el PCM , Schaeffler lo había aplicado en su telégrafo en 1874, y por una razón similar: la fiabilidad. Hizo que unos dedos de contacto detectaran en cinco levas consecutivas todas las combinaciones; la correcta activa la impresión. Si los dedos deben realizar un número mínimo de movimientos, la solución es el código binario reflejado. Para Schaeffler, esta idea era menor. Más exactamente, el código se describe en una carta del empleado de Correos de Austria, J[ohann] N[epomuk] Teufelhart, insertada allí como nota a pie de página y diciendo que Schaeffler encontró el código combinando barras de madera con las diferentes combinaciones hasta que obtuvo la mejor solución. Otro empleado de Correos, Alexander Wilhelm Lambert de Linz, afirma haberle mostrado este código a Schaeffler ya en 1872, pero esta afirmación no es clara y no se puede comprobar. […](6 páginas)
^ Goodall, William M. (enero de 1951). "Televisión mediante modulación por impulsos codificados". Bell System Technical Journal . 30 (1): 33–49. doi :10.1002/j.1538-7305.1951.tb01365.x.(NB. Presentado oralmente ante la Convención Nacional de la IRE, Ciudad de Nueva York, marzo de 1949.)
^ Wakerly, John F. (1994). Diseño digital: principios y prácticas . Nueva Jersey, EE. UU.: Prentice Hall . pp. 48-49, 222. ISBN.0-13-211459-3.(NB. Las dos secciones de la página tomadas en conjunto dicen que los mapas K están etiquetados con código Gray. La primera sección dice que están etiquetados con un código que cambia solo un bit entre entradas y la segunda sección dice que dicho código se llama código Gray).
^ Brown, Frank Markham (2012) [2003, 1990]. "3.9.2 Mapas". Razonamiento booleano: la lógica de las ecuaciones booleanas (reedición de la 2.ª ed.). Mineola, Nueva York, EE. UU.: Dover Publications, Inc. pág. 49. ISBN978-0-486-42785-0. p. 49: […] El mapa de Karnaugh ordena los argumentos de los discriminantes según el código binario reflejado, también llamado código Gray. […](xii+291+3 páginas) 1ª edición
^ Händler, Wolfgang (1958). Ein Minimisierungsverfahren zur Synthese von Schaltkreisen (Minimisierungsgraphen) (Disertación) (en alemán). Potsdam, Alemania: Technische Hochschule Darmstadt . D 17.(73 páginas+aprox.) [9]
^ Berger, Erich R.; Handler, Wolfgang (1967) [1962]. Steinbuch, Karl W .; Wagner, Siegfried W. (eds.). Taschenbuch der Nachrichtenverarbeitung (en alemán) (2 ed.). Berlín, Alemania: Springer-Verlag OHG . págs.64, 1034–1035, 1036, 1038. LCCN 67-21079. Título No. 1036. p. 64: […] Übersichtlich ist die Darstellung nach Händler , die sämtliche Punkte, numeriert nach dem Gray-Code […], auf dem Umfeld eines Kreises anordnet. Sie erfordert allerdings sehr viel Platz. […] [ El diagrama de Händler , en el que todos los puntos, numerados según el código de Gray , están dispuestos sobre la circunferencia de un círculo, es fácilmente comprensible. Sin embargo, requiere mucho espacio.]
^ "Informatik Sammlung Erlangen (ISER)" (en alemán). Erlangen, Alemania: Universidad Friedrich-Alexander . 2012-03-13. Archivado desde el original el 16 de mayo de 2017 . Consultado el 12 de abril de 2017 .
^ "Informatik Sammlung Erlangen (ISER) - Impressum" (en alemán). Erlangen, Alemania: Universidad Friedrich-Alexander . 2012-03-13. Archivado desde el original el 26 de febrero de 2012 . Consultado el 15 de abril de 2017 .
^ Donohue, Ryan (2003). «Sincronización en circuitos lógicos digitales» (PDF) . Archivado (PDF) desde el original el 15 de enero de 2018. Consultado el 15 de enero de 2018 .
^ Hulst, George D. (1962-02-06) [1957-11-15]. Contador de código binario reflejado (PDF) . Nutley, Nueva Jersey, EE. UU.: International Telephone and Telegraph Corporation (ITT). Patente estadounidense 3.020.481 . Número de serie 696793. Archivado (PDF) desde el original el 2020-08-06 . Consultado el 2020-08-06 .(5 páginas)
^ abcd Powell, E. Alexander (junio de 1968). "Códigos particularmente útiles para conversiones de analógico a digital". Una breve nota sobre códigos útiles para circuitos de control fluídico (PDF) . Cranfield, Reino Unido: The College of Aeronautics , Departamento de Ingeniería de Producción. págs. 7, 9. S2CID 215864694. CoA Memo 156. Archivado (PDF) desde el original el 2020-12-15 . Consultado el 2020-12-15 .(18 páginas) (NB: El artículo nombra el código Glixon como código Gray modificado y escribe mal el nombre de Richard W. Hamming ).
^ Mehta, Huzefa; Owens, Robert Michael; Irwin, Mary Jane "Janie" (22 de marzo de 1996). "Algunas cuestiones en el direccionamiento de código gris". Actas del Sexto Simposio de los Grandes Lagos sobre VLSI . IEEE Computer Society . págs. 178–181. doi :10.1109/GLSV.1996.497616. ISBN .978-0-8186-7502-7. ISSN 1066-1395. S2CID 52837310.
^ ab Doran, Robert "Bob" William (marzo de 2007). El código Gray (PDF) . Serie de informes de investigación del CDMTCS. Centro de Matemáticas Discretas y Ciencias de la Computación Teórica, Universidad de Auckland , Nueva Zelanda. CDMTCS-304. Archivado (PDF) desde el original el 22 de mayo de 2020. Consultado el 23 de mayo de 2020 .(25 páginas)
^ Su, Ching-Long; Tsui, Chi-Ying; Despain, Alvin M. (1994). Low Power Architecture Design and Compilation Techniques for High-Performance Processors (PDF) (Informe). Laboratorio de Arquitectura de Computadores Avanzados. ACAL-TR-94-01. Archivado (PDF) desde el original el 2020-07-26 . Consultado el 2020-12-17 .
^ Guo, Hui; Parameswaran, Sri (abril-junio de 2010). "Codificación Gray desplazada para reducir la conmutación del bus de direcciones de memoria de instrucciones para sistemas integrados de bajo consumo". Journal of Systems Architecture . 56 (4–6): 180–190. doi :10.1016/j.sysarc.2010.03.003.
^ Dietz, Henry Gordon "Hank" (2002). "Los algoritmos mágicos de agregación: conversión de código Gray". El agregado . Departamento de Ingeniería Eléctrica y Computacional, Facultad de Ingeniería, Universidad de Kentucky . Archivado desde el original el 2020-12-16 . Consultado el 2020-12-16 .
^ Maxfield, Max (29 de junio de 2007). «Cómo generar códigos Gray para secuencias que no son potencias de 2». Archivado desde el original el 29 de enero de 2022. Consultado el 29 de enero de 2022 .
^ (secuencia A290772 en la OEIS )
^ ab Guan, Dah-Jyh (1998). "Códigos Gray generalizados con aplicaciones". Actas del Consejo Científico Nacional, República de China, Parte A. 22 : 841–848. CiteSeerX 10.1.1.119.1344 .
^ DG Wagner, J. West (1991). "Construcción de códigos Gray uniformes". Congressus Numerantium . 80 : 217–223.
^ ab Suparta, I. Nengah (2005). "Una prueba simple de la existencia de códigos Gray exponencialmente equilibrados". Electronic Journal of Combinatorics . 12 . doi : 10.37236/1986 .
^ Savage, Carla Diane (16 de enero de 1997). «Ciclos largos en los dos niveles intermedios de la red booleana». Ars Combinatoria . 35 (A). Universidad Estatal de Carolina del Norte, Raleigh, Carolina del Norte, EE. UU.: 97–108. CiteSeerX 10.1.1.39.2249 . ISSN 0381-7032. S2CID 15975960. Archivado desde el original el 13 de mayo de 2020 . Consultado el 13 de mayo de 2020 .(15 páginas)
^ ab Goddyn, Luis (1999). "Materiales complementarios de Matemática discreta aplicada de MATH 343" (PDF) . Departamento de Matemáticas, Universidad Simon Fraser . Archivado desde el original (PDF) el 17 de febrero de 2015.
^ Sawada, Joseph "Joe"; Wong, Dennis Chi-Him (2007). "Un algoritmo rápido para generar códigos Beckett-Gray". Notas electrónicas en matemáticas discretas . 29 : 571–577. doi :10.1016/j.endm.2007.07.091.
^ Richards, Richard Kohler (enero de 1971). "Snake-in-the-Box Codes". Escrito en Ames, Iowa, EE. UU. Diseño digital . Nueva York, EE. UU.: Wiley-Interscience , John Wiley & Sons, Inc. , págs. 206-207. ISBN0-471-71945-5. LCCN 73-147235.(12+577+1 páginas)
^ ab NZ 264738, Spedding, Norman Bruce, "Un codificador de posición", publicado el 28 de octubre de 1994 [ verificación fallida ]
^ Spedding, Norman Bruce (28 de octubre de 1994). "La siguiente es una copia de la patente provisional presentada en nombre de Industrial Research Limited el 28 de octubre de 1994: patente de Nueva Zelanda 264738" (PDF) . Industrial Research Limited. Patente de Nueva Zelanda 264738. Archivado (PDF) desde el original el 29 de octubre de 2017. Consultado el 14 de enero de 2018 .
^ Hiltgen, Alain P.; Paterson, Kenneth G.; Brandestini, Marco (septiembre de 1996). "Códigos Gray de pista única". IEEE Transactions on Information Theory . 42 (5): 1555–1561. doi :10.1109/18.532900. Zbl 857.94007.
^ Hiltgen, Alain P.; Paterson, Kenneth G. (septiembre de 2001). "Single-Track Circuit Codes" (PDF) . IEEE Transactions on Information Theory . 47 (6): 2587–2595. CiteSeerX 10.1.1.10.8218 . doi :10.1109/18.945274. Archivado (PDF) desde el original el 2018-01-15 . Consultado el 2018-01-15 .
^ Etzion, Tuvi; Schwartz, Moshe (noviembre de 1999) [1998-05-17]. "La estructura de los códigos Gray de pista única" (PDF) . IEEE Transactions on Information Theory . IT-45 (7): 2383–2396. CiteSeerX 10.1.1.14.8333 . doi :10.1109/18.796379. Archivado (PDF) desde el original el 2018-01-15 . Consultado el 2018-01-15 .Informe técnico CS0937 Archivado el 15 de diciembre de 2018 en Wayback Machine
^ Sillke, Torsten (1997) [1993-03-01]. «Códigos grises con pocas pistas (una cuestión de Marco Brandestini)». Archivado desde el original el 2017-10-29 . Consultado el 2017-10-29 .
^ ab Etzion, Tuvi; Paterson, Kenneth G. (mayo de 1996). "Códigos Gray de pista única casi óptimos" (PDF) . IEEE Transactions on Information Theory . IT-42 (3): 779–789. CiteSeerX 10.1.1.14.1527 . doi :10.1109/18.490544. Archivado (PDF) desde el original el 2016-10-30 . Consultado el 2018-04-08 .
^ Ruskey, Frank ; Weston, Mark (18 de junio de 2005). "Un estudio de los diagramas de Venn: diagramas simétricos". Encuestas dinámicas. Revista electrónica de combinatoria . doi : 10.37236/26 .
^ Williams, Gary (25 de julio de 2008). "Se busca un 'código gris de pista única' para codificar 360 grados con 9 sensores". Experts Exchange .
^ Bauer, Florian. "Codificador rotatorio de código Gray de pista única absoluta de 9 bits". Thingiverse .
↑ Krishna (11 de mayo de 2008). «Código Gray para QAM». Archivado desde el original el 29 de octubre de 2017. Consultado el 29 de octubre de 2017 .
^ Strang, Thomas; Dammann, Armin; Röckl, Matías; Plass, Simon (octubre de 2009). Uso de códigos Gray como identificadores de ubicación (PDF) . 6. GI/ITG KuVS Fachgespräch Ortsbezogene Anwendungen und Dienste (en inglés y alemán). Oberpfaffenhofen, Alemania: Instituto de Comunicaciones y Navegación, Centro Aeroespacial Alemán (DLR). CiteSeerX 10.1.1.398.9164 . Archivado (PDF) desde el original el 1 de mayo de 2015 . Consultado el 16 de diciembre de 2020. .(5/8 páginas) [10]
Thomas Strang; et al. (octubre de 2009). "Uso de códigos Gray como identificadores de ubicación" (PDF) . ResearchGate (Resumen) (en alemán e inglés). Archivado desde el original el 3 de septiembre de 2020.
^ Greferath, Marcus (2009). "Introducción a la teoría de codificación lineal en anillo". En Sala, Massimiliano; Mora, Teo; Perret, Ludovic; Sakata, Shojiro; Traverso, Carlo (eds.). Bases, codificación y criptografía de Gröbner . Springer Science & Business Media . pág. 220. ISBN978-3-540-93806-4.
^ Spaulding, Carl P. (12 de julio de 1965). Cómo utilizar codificadores de eje . Monrovia, California, EE. UU.: Datex Corporation.(85 páginas)
^ ab Wheeler, Edwin L. (1969-12-30) [1968-04-05]. Codificador analógico a digital (PDF) . Nueva York, EE. UU.: Conrac Corporation. Patente estadounidense 3487460A . Número de serie 719026 (397812). Archivado (PDF) desde el original el 2020-08-05 . Consultado el 2018-01-21 . p. 5, columna izquierda 9, filas 15-22: […] El código MOA-GILLHAM es esencialmente la combinación del código Gray discutido anteriormente y el conocido código Datex; el código Datex se divulga en la patente estadounidense 3.165.731. La disposición es tal que el código Datex define los bits para el recuento de unidades del codificador y el código Gray define los bits para cada una de las décadas de orden superior, las decenas, centenas, etc. […](11 páginas)
^ abcdef Dokter, Folkert; Steinhauer, Jürgen (18 de junio de 1973). "2.4. Codificación de números en el sistema binario". Electrónica digital. Philips Technical Library (PTL) / Macmillan Education (reimpresión de la 1.ª edición en inglés). Eindhoven, Países Bajos: The Macmillan Press Ltd. / NV Philips' Gloeilampenfabrieken . págs. 32, 39, 50–53. doi :10.1007/978-1-349-01417-0. ISBN978-1-349-01419-4.SBN 333-13360-9. Recuperado el 11-05-2020 . p. 53: […] El código Datex […] utiliza el código O'Brien II dentro de cada década y números decimales reflejados para las transiciones decimales. Para un procesamiento posterior, es necesaria la conversión del código a la notación decimal natural. Dado que el código O'Brien II forma un complemento de 9 , esto no da lugar a dificultades particulares: siempre que la palabra clave para las decenas represente un número impar, las palabras clave para las unidades decimales se dan como complementos de 9 por inversión del cuarto dígito binario. […][ enlace muerto permanente ] (270 páginas)
^ abcde Dokter, Folkert; Steinhauer, Jürgen (1975) [1969]. "2.4.4.6. Códigos escritos". Digitale Elektronik in der Meßtechnik und Datenverarbeitung: Theoretische Grundlagen und Schaltungstechnik . Philips Fachbücher (en alemán). vol. I (mejorada y ampliada 5ª ed.). Hamburgo, Alemania: Deutsche Philips GmbH . págs. 41, 48, 51, 58, 60–61. ISBN3-87145-272-6.(xii+327+3 páginas)
^ "…medición precisa del nivel de líquido – ¡A CUALQUIER DISTANCIA!". Refinador de petróleo (Anuncio). 33 (9). Gulf Publishing Company : 368. Septiembre de 1954. ISSN 0096-6517. p. 368: […] La operación completa de despacho, medición y control remoto se integra en un solo sistema unificado cuando se instala un sistema de telemetría por pulsos "Varec". […]
^ Bishup, Bernard W.; Repeta, Anthony A.; Giarrizzo, Frank C. (1968-08-13) [1963-04-03]. "Sistema de telemetría y control de supervisión con señales de telemetría normalmente continuas". Leeds and Northrup Co. US3397386A.[11]
^ "Formato de pulso del codificador". Manual de instalación y operaciones del transmisor de 4 cables modelo 1900 Micro (PDF) . Cypress, California, EE. UU.: Whessoe Varec, Inc. Enero de 1993 [1991-07-01]. págs. 04-4–04-8. 33-08461. Archivado (PDF) desde el original el 2020-05-16 . Consultado el 2020-05-16 .(38 páginas) (NB. La posición 5 para "Pulgadas" en la página 04-8 debe leerse "0111" en lugar de "1111".)
^ "2.2.3.3 Formato de datos de nivel MSP". Varec Modelo 1900 – Micro Transmisor de 4 hilos (BSAP a Protocolo de marcado/espacio (MSP)) – Notas de aplicación (PDF) . Emerson Electric . págs. 11–14. Archivado (PDF) desde el original el 2020-05-16 . Consultado el 2020-05-16 .(vi+33 páginas)
^ Phillips, Darryl (26 de julio de 2012) [1998]. «Altitud – MODEC ASCII». AirSport Avionics. Archivado desde el original el 26 de julio de 2012.
^ Stewart, K. (3 de diciembre de 2010). "Código Gray de aviación: explicación del código Gillham". Custom Computer Services (CCS). Archivado desde el original el 16 de enero de 2018. Consultado el 14 de enero de 2018 .
^ Leslie, William "Bill" HP; Russell, A. (1964). Un código decimal progresivo cíclico para la traducción simple a salidas decimales y analógicas (Informe). East Kilbride, Glasgow, Reino Unido: Laboratorio Nacional de Ingeniería . Informe NEL 129.(17 páginas)
^ Leslie, William "Bill" HP (1974). "El trabajo sobre control numérico en NEL". En Koenigsberger, Franz; Tobias, Stephen Albert (eds.). Actas de la decimocuarta conferencia internacional sobre diseño e investigación de máquinas herramienta, 12-14 de septiembre de 1973. The Macmillan Press Ltd. pp. 215-224 [215, 217]. doi :10.1007/978-1-349-01921-2_30. ISBN978-1-34901921-2. LCCN 73-16545. SBN 333-14913-0Archivado desde el original el 7 de abril de 2022. Consultado el 21 de mayo de 2020 .
^ Hoklas, Archibald (6 de septiembre de 1989) [29 de abril de 1988]. "Abtastvorrichtung zur digitalen Wegoder Winkelmessung" (PDF) (en alemán). VEB Schiffselektronik Johannes Warnke [Delaware] . Patente de la RDA DD271603A1. WP H 03 M / 315 194 8. Archivado desde el original (PDF) el 18 de enero de 2018 . Consultado el 18 de enero de 2018 – vía DEPATIS [de] .[12] [13]
^ abcdefghijk Hoklas, Archibald (2005). «Código Gray: código de distancia unitaria». Archivado desde el original el 15 de enero de 2018. Consultado el 15 de enero de 2018 .
^ ABCDE Hoklas, Archibald (2005). "Gray-Kode - Einschrittiger Abtastkode" (en alemán). Archivado desde el original el 15 de enero de 2018 . Consultado el 15 de enero de 2018 .
^ Petherick, Edward John; Hopkins, AJ (1958). Algunos dispositivos digitales desarrollados recientemente para codificar las rotaciones de ejes (Nota técnica MS21). Farnborough, Reino Unido: Royal Aircraft Establishment (RAE).
^ "Digitalizador y analógico-digital-Wandler in der Steuer-, Meß- und Regeltechnik" (PDF) . Technische Mitteilungen . Relais, elektronische Geräte, Steuerungen (en alemán). No. 13. Colonia-Niehl, Alemania: Franz Baumgartner (FraBa). Mayo de 1963. págs. 1–2. Archivado desde el original (PDF) el 21 de mayo de 2020 . Consultado el 21 de mayo de 2020 . págs. 1–2: […] Die Firma Harrison Reproduction Equipment, Farnborough/Inglaterra […] hat in jahrelanger Entwicklung in Zusammenarbeit mit der Britischen Luftwaffe und britischen Industriebetrieben den mechanischen Digitalizador […] zu einer technischen Reife gebracht, die fast allen Anforderungen […] Genügt. […] Um bei der dezimalen Entschlüsselung des verwendeten Binärcodes zu eindeutigen und bei der Übergabe von einer Dezimalstelle zur anderen in der Reihenfolge immer richtigen Ergebnissen zu kommen, wurde ein spezieller Code entwickelt, der jede Möglichkeit einer Fehlaussage durch se in Prinzip ausschließt und der außerdem durch seinen Aufbau eine relativ einfache Entschlüsselung erlaubt. El código se basa en el código Petherick. […](4 páginas)
^ ab Charnley, CJ; Bidgood, RE; Boardman, GET (octubre de 1965). "El diseño de un codificador de posición neumático" (PDF) . IFAC Proceedings Volumes . 2 (3). The College of Aeronautics, Cranfield, Bedford, Inglaterra: 75–88. doi :10.1016/S1474-6670(17)68955-9. Capítulo 1.5 . Consultado el 14 de enero de 2018 .[ enlace muerto permanente ]
^ Hollingdale, Stuart H. (19 de septiembre de 1958). "Sesión 14. Procesamiento de datos". Aplicaciones de las computadoras (artículo de conferencia). Atlas – Aplicación de las computadoras, Universidad de Nottingham, 15-19 de septiembre de 1958. Archivado desde el original el 25 de mayo de 2020. Consultado el 25 de mayo de 2020 .
^ abc O'Brien, Joseph A. (mayo de 1956) [15 de noviembre de 1955, 23 de junio de 1955]. "Códigos decimales cíclicos para convertidores analógicos a digitales". Transactions of the American Institute of Electrical Engineers, Part I: Communication and Electronics . 75 (2). Bell Telephone Laboratories, Whippany, Nueva Jersey, EE. UU.: 120–122. doi :10.1109/TCE.1956.6372498. ISSN 0097-2452. S2CID 51657314. Artículo 56-21. Archivado desde el original el 18 de mayo de 2020. Consultado el 18 de mayo de 2020 . .(3 páginas) (NB: Este documento fue preparado para su presentación en la Reunión General de Invierno de la AIEE, Nueva York, EE. UU., del 30 de enero de 1956 al 3 de febrero de 1956.)
^ abcdefghi Steinbuch, Karl W. , ed. (1962). Escrito en Karlsruhe, Alemania. Taschenbuch der Nachrichtenverarbeitung (en alemán) (1 ed.). Berlín / Gotinga / Nueva York: Springer-Verlag OHG . págs. 71–74, 97, 761–764, 770, 1080–1081. LCCN 62-14511.
^ abcdefghi Steinbuch, Karl W .; Weber, Wolfgang; Heinemann, Traute, eds. (1974) [1967]. Taschenbuch der Informatik – Band II – Struktur und Programmierung von EDV-Systemen . Taschenbuch der Nachrichtenverarbeitung (en alemán). vol. 2 (3 ed.). Berlín, Alemania: Springer Verlag . págs. 98-100. ISBN3-540-06241-6. Número de LCCN 73-80607.
^ Foss, Frederic A. (1960-12-27) [1954-12-17]. "Sistemas de control" (PDF) . International Business Machines Corp . Fig. 7, Fig. 8, Fig. 11. Patente estadounidense 2966670A . Número de serie 475945. Archivado (PDF) desde el original el 2020-06-21 . Consultado el 2020-08-05 .(14 páginas) (NB. El autor llamó a su código 2*-4-2-1 (+9-±7-±3-±1) código decimal reflejado.)
^ Foss, Frederic A. (diciembre de 1954). "El uso de un código reflejado en sistemas de control digital". IRE Transactions on Electronic Computers . EC-3 (4): 1–6. doi :10.1109/IREPGELC.1954.6499244. ISSN 2168-1740.(6 páginas)
^ Evans, David Silvester (1958). "[título desconocido]". Transacciones . 10–12. Instituto de Medición y Control: 87.(NB. El código Watts se llamó código WRD o Watts Reflected Decimal para distinguirlo de otros códigos utilizados en Hilger & Watts Ltd. )
^ Klinkowski, James J. (1967-03-14) [1964-03-23]. "Circuitos decodificadores de matriz de diodos electrónicos" (PDF) . Detroit, Michigan, EE. UU.: Burroughs Corporation . Patente estadounidense 3309695A . Número de serie 353845. Archivado (PDF) desde el original el 23 de mayo de 2020. Consultado el 23 de mayo de 2020 .(5 páginas) [15]
^ Klinkowski, James J. (31 de marzo de 1970) [22 de diciembre de 1966]. "Convertidor de señal decimal con codificación binaria" (PDF) . Detroit, Michigan, EE. UU.: Burroughs Corporation . Patente estadounidense 3504363A . Número de serie 603926. Archivado (PDF) desde el original el 23 de mayo de 2020. Consultado el 23 de mayo de 2020 .(7 páginas)
^ Tóth-Zentai, Györgyi (5 de octubre de 1979). "Algunos problemas de convertidores digitales rotacionales angulares". Periodica Polytechnica Electrical Engineering . 23 (3–4). Departamento de Tecnología Electrónica, Universidad Técnica, Budapest, Hungría: 265–270 [266] . Consultado el 23 de mayo de 2020 .[18] (6 páginas) (NB. Muestra un código Watts de 6 dígitos).
^ Savard, John JG (2018) [2006]. «Representaciones decimales». quadibloc . Archivado desde el original el 2018-07-16 . Consultado el 2018-07-16 .
^ ab Turvey, Jr., Frank P. (1958-07-29) [1956-05-17]. "Pulse-Count Coder" (PDF) . Nutley, Nueva Jersey, EE. UU.: International Telephone and Telegraph Corporation . Patente estadounidense 2845617A . Número de serie 585494. Archivado (PDF) desde el original el 23 de mayo de 2020 . Consultado el 23 de mayo de 2020 .(5 páginas)
^ ab Borucki, Lorenz; Dittmann, Joachim (1971) [julio de 1970, 1966, otoño de 1965]. "2.3 Códigos Gebräuchliche in der digitalen Meßtechnik". Escrito en Krefeld / Karlsruhe, Alemania. Digitale Meßtechnik: Eine Einführung (en alemán) (2 ed.). Berlín/Heidelberg, Alemania: Springer-Verlag . págs. 10–23 [12–14]. doi :10.1007/978-3-642-80560-8. ISBN3-540-05058-2. LCCN 75-131547. ISBN 978-3-642-80561-5 . (viii+252 páginas) 1.ª edición (NB: Al igual que Kämmerer, los autores describen un código Glixon de 6 bits y 20 ciclos).
^ ab Kämmerer, Wilhelm [en alemán] (mayo de 1969). "II.15. Struktur: Informationsdarstellung im Automaten". Escrito en Jena, Alemania. En Frühauf, Hans [en alemán] ; Kämmerer, Wilhelm; Schröder, Kurz; Winkler, Helmut (eds.). Digitale Automaten: teoría, estructura, técnica y programación . Elektronisches Rechnen und Regeln (en alemán). vol. 5 (1 ed.). Berlín, Alemania: Akademie-Verlag GmbH . pag. 173. Licencia núm. 202-100/416/69. Nro. de pedido. 4666ES 20K 3.(NB. También existe una segunda edición de 1973. Al igual que Borucki y Dittmann, pero sin nombrarlo código Glixon, el autor crea un código tetrádico de 20 ciclos a partir del código Glixon y una variante del código Glixon con bits de orden superior invertidos).
^ Paul, Matías R. (10 de agosto de 1995) [1994]. "Unterbrechungsfreier Schleifencode" [Código de bucle continuo]. 1.02 (en alemán) . Consultado el 11 de febrero de 2008 .(NB: El autor llamó a este código Schleifencode (en español: "código de bucle"). Se diferencia del código BCD de Gray solo en la codificación del estado 0 para convertirlo en un código de unidad de distancia cíclica para aplicaciones rotatorias de círculo completo. Evitar el patrón de código de todos ceros permite la autoprueba del bucle y usar las líneas de datos para una distribución de energía ininterrumpida).
^ Klar, Rainer (1 de febrero de 1970). Digitale Rechenautomaten – Eine Einführung [ Computadoras digitales – Introducción ]. Sammlung Göschen (en alemán). vol. 1241/1241a (1 ed.). Berlín, Alemania: Walter de Gruyter & Co. / GJ Göschen'sche Verlagsbuchhandlung [de] . pag. 17.ISBN3-11-083160-0. . Archiv-Nr. 7990709. Archivado desde el original el 2020-06-01 . Consultado el 2020-04-13 .(205 páginas) (NB. Una reimpresión de 2019 de la primera edición está disponible bajo el ISBN 3-11002793-3 , 978-3-11002793-8 . También existe una cuarta edición reelaborada y ampliada).
^ Klar, Rainer (1989) [1 de octubre de 1988]. Digitale Rechenautomaten – Eine Einführung in die Struktur von Computerhardware [ Computadoras digitales: una introducción a la estructura del hardware de una computadora ]. Sammlung Göschen (en alemán). vol. 2050 (cuarta edición reelaborada). Berlín, Alemania: Walter de Gruyter & Co. p. 28.ISBN3-11011700-2.(320 páginas) (NB: El autor llamó a este código Einheitsabstandscode (en español: "código de unidad de distancia"). Al intercambiar dos filas de bits e invertir una de ellas, se puede transferir al código O'Brien II, mientras que al intercambiar e invertir dos filas de bits, se puede transferir al código Petherick.)
Lectura adicional
Richards, Richard Kohler (1955). Operaciones aritméticas en ordenadores digitales (5.ª ed.). Nueva York, EE. UU.: D. Van Nostrand Co., Inc.
Richards, Richard Kohler (1967). Componentes y circuitos electrónicos digitales . D. Van Nostrand Co., Inc. págs. 490, 500–504, 510–511.
Black, Paul E. (25 de febrero de 2004). "Código Gray". NIST .
Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. (2007). "Sección 22.3. Códigos Gray". Recetas numéricas: el arte de la computación científica (3.ª ed.). Nueva York, EE. UU.: Cambridge University Press . ISBN 978-0-521-88068-8Archivado desde el original el 11-08-2011 . Consultado el 18-08-2011 .
Dewar, Megan; Stevens, Brett (29 de agosto de 2012). Ordenación de diseños de bloques: códigos Gray, ciclos universales y configuración . CMS Books in Mathematics (1.ª ed.). Nueva York, EE. UU.: Springer Science+Business Media . doi :10.1007/978-1-4614-4325-4. ISBN.978-1-46144324-7. ISSN 1613-5237.
Maxfield, Clive "Max" (2012-10-01) [2011-05-28]. "Fundamentos del código Gray". Guía de diseño . EETimes . Parte 1. Archivado desde el original el 2017-10-30 . Consultado el 2017-10-30. .Parte 2 Parte 3
Zinovik, Igor; Kroening, Daniel; Chebiryak, Yury (21 de marzo de 2008). "Cálculo de códigos Gray combinatorios binarios mediante búsqueda exhaustiva con solucionadores SAT". IEEE Transactions on Information Theory . 54 (4). IEEE : 1819–1823. doi :10.1109/TIT.2008.917695. hdl : 20.500.11850/11304 . S2CID 2854180.(5 páginas)
O'Brien, Joseph A. (junio de 1957). "Traductores de código binario-decimal de unidad de distancia". IRE Transactions on Electronic Computers . EC-6 (2): 122–123. doi :10.1109/TEC.1957.5221585. ISSN 0367-9950 . Consultado el 25 de mayo de 2020 .(2 páginas)
Barr, KG (marzo de 1981). "Un código Gray decimal: fácil de convertir para la codificación de la posición del eje" (PDF) . Wireless World . Vol. 87, núm. 1542. Facultad de Ciencias Naturales, Universidad de las Indias Occidentales . págs. 86–87. Archivado (PDF) desde el original el 28 de julio de 2020. Consultado el 28 de julio de 2020 .
Enlaces externos
Demostración de "Código Gris" por Michael Schreiber, Wolfram Demonstrations Project (con implementación de Mathematica). 2007.
Diccionario NIST de algoritmos y estructuras de datos: código Gray.
Guía del autoestopista para la computación evolutiva, pregunta 21: ¿Qué son los códigos Gray y por qué se utilizan?, incluido el código C para convertir entre binario y BRGC.
Dragos A. Harabor utiliza códigos Gray en un digitalizador 3D.
ProtoTalk.net – Comprensión de la codificación en cuadratura: cubre la codificación en cuadratura con más detalle, con un enfoque en aplicaciones robóticas.