A Gray code is an ordered encoding of numbers in which consecutive codewords differ in a single digit by 1. The term Gray code is often used to refer to a "reflected" code, or more specifically still, the binary reflected Gray code.
To convert a binary number to its corresponding binary reflected Gray
code, start at the right with the digit
(the
th,
or last, digit). If
is 1, replace
by
;
otherwise, leave it unchanged. Then proceed to
. Continue up to the first digit
, which is kept the same since
is assumed to be a 0. The resulting
number
is the reflected
binary Gray code.
To convert a binary reflected Gray code to a binary number,
start again with the
th
digit, and compute
If is 1, replace
by
;
otherwise, leave it unchanged. Next compute
and so on. The resulting number is the binary
number corresponding to the initial binary reflected Gray code.
The code is called reflected because it can be generated in the following manner. Take the Gray code 0, 1. Write it forwards, then backwards: 0, 1, 1, 0. Then prepend 0s to the first half and 1s to the second half: 00, 01, 11, 10. Continuing, write 00, 01, 11, 10, 10, 11, 01, 00 to obtain: 000, 001, 011, 010, 110, 111, 101, 100, ... (OEIS A014550). Each iteration therefore doubles the number of codes.
The plots above show the binary representation of the first 255 (top figure) and first 511 (bottom figure) Gray codes. The Gray codes corresponding to the first few nonnegative integers are given in the following table.
| 0 | 0 | 20 | 11110 | 40 | 111100 |
| 1 | 1 | 21 | 11111 | 41 | 111101 |
| 2 | 11 | 22 | 11101 | 42 | 111111 |
| 3 | 10 | 23 | 11100 | 43 | 111110 |
| 4 | 110 | 24 | 10100 | 44 | 111010 |
| 5 | 111 | 25 | 10101 | 45 | 111011 |
| 6 | 101 | 26 | 10111 | 46 | 111001 |
| 7 | 100 | 27 | 10110 | 47 | 111000 |
| 8 | 1100 | 28 | 10010 | 48 | 101000 |
| 9 | 1101 | 29 | 10011 | 49 | 101001 |
| 10 | 1111 | 30 | 10001 | 50 | 101011 |
| 11 | 1110 | 31 | 10000 | 51 | 101010 |
| 12 | 1010 | 32 | 110000 | 52 | 101110 |
| 13 | 1011 | 33 | 110001 | 53 | 101111 |
| 14 | 1001 | 34 | 110011 | 54 | 101101 |
| 15 | 1000 | 35 | 110010 | 55 | 101100 |
| 16 | 11000 | 36 | 110110 | 56 | 100100 |
| 17 | 11001 | 37 | 110111 | 57 | 100101 |
| 18 | 11011 | 38 | 110101 | 58 | 100111 |
| 19 | 11010 | 39 | 110100 | 59 | 100110 |
The binary reflected Gray code is closely related to the solutions of the tower of Hanoi and baguenaudier, as well as to Hamiltonian cycles of hypercube graphs (including direction reversals; Skiena 1990, p. 149).
A single-track Gray code has the additional property that its coordinate columns are cyclic shifts of one another. Dzoba (2026)
constructed such codes of optimal period for every odd prime
, using an AI-generated construction and proof.