Codice Gray
Il codice Gray è un codice numerico binario.
Questo standard prevede che una qualunque coppia di bit adiacenti (appartenenti ad una sequenza di n bit rappresentanti un valore) differisca al suo interno solamente di un bit.

Diversi dispositivi elettronici di acquisizione di posizione, gli encoder di posizione lineare o rotativa (per esempio i regolatori di volume digitali negli impianti Hi-Fi), codificano il valore digitale della posizione chiudendo o aprendo una serie di contatti elettrici o barriere ottiche. Il problema è che a causa delle tolleranze meccaniche è improbabile che due o più bit di una cifra possano commutare esattamente nello stesso istante. Viene a crearsi un periodo intermedio in cui è codificato un valore indesiderato, che può generare confusione nella successiva elaborazione.
Per questo scopo fu progettato e brevettato nel 1953 dal ricercatore Frank Gray dei laboratori Bell un apposito codice, il codice Gray.
Negli encoder che utilizzano questo codice, il passaggio da un valore al successivo o precedente comporta la commutazione di un unico circuito, eliminando ogni possibile valore equivoco.
Costruzione
Un codice Gray ad n-bit si costruisce attraverso un algoritmo ricorsivo, abbastanza semplice. Si parte dal primo bit, quello meno significativo, si mette uno 0 sopra ed un 1 sotto.
Al passo successivo, si mette una riga ad di sotto dell'1, come se fosse uno specchio, e si ricopiano le cifre invertendo l'ordine, con la riga che funge da specchio, appunto. Si termina inserendo uno 0 davanti alla sequenza costruita se questa è sopra la riga, altrimenti si aggiunge un 1. Ora siamo arrivati ad un codice con 2 bit.
Iterando i passi precedenti, si mette la riga, si specchia la sequenza e si aggiunge il bit più significativo, si costruiscono codici ad n-bit.
Esempi
Codice Gray a 2 bit 00 01 11 10
Codice Gray a 3 bit 000 001 011 010 110 111 101 100
Codice Gray a 4 bit 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000