Termenul "cod greu" se referă la o evoluție binară a numerelor codificate, în care termenii succesivi diferă doar printr-o singură poziție bit. A fost numit după Frank Gray, care a inventat codul gri pentru a converti semnalele analogice în numere binare de șir.
Într-o secvență dată de întregi de la 0 la 2 ^ N - 1, exprimată ca un șir binar de lungime N unde termenii consecutivi variază în funcție de poziția de 1 biți, seria de întregi poate fi traversată prin inversarea unui singur bit la un moment dat. Aceasta este denumită "proprietatea de adjudecare" a unui cod Grey. Unele dintre aplicațiile practice ale unui cod gri includ rezolvarea turnului din Hanoi și baguenaudier.