O termo "código Gray" refere-se a uma progressão binária de números codificados em que os termos sucessivos diferem apenas por uma única posição de bit. Foi nomeado após Frank Gray, que criou o código Gray binário refletido usado para converter sinais analógicos em números de string binárias.
Em uma determinada sequência de inteiros de 0 a 2 ^ N - 1, expressa como uma string binária de comprimento N onde os termos consecutivos variam na posição de 1 bit, a série de inteiros pode ser percorrida invertendo um bit por vez. Isso é conhecido como a "propriedade de adjacência" de um código Gray. Algumas das aplicações práticas de um código Gray incluem resolver a torre de Hanói e baguenaudier.