The Free On-line Dictionary of Computing (30 December 2018):
Gray code
A binary sequence with the property that only one
bit changes between any two consecutive elements (the two
codes have a Hamming distance of one).
The Gray code originated when digital logic circuits were
built from vacuum tubes and electromechanical relays.
Counters generated tremendous power demands and noise spikes
when many bits changed at once. E.g. when incrementing a
register containing 11111111, the back-EMF from the relays'
collapsing magnetic fields required copious noise suppression.
Using Gray code counters, any increment or decrement changed
only one bit, regardless of the size of the number.
Gray code can also be used to convert the angular position of
a disk to digital form. A radial line of sensors reads the
code off the surface of the disk and if the disk is half-way
between two positions each sensor might read its bit from both
positions at once but since only one bit differs between the
two, the value read is guaranteed to be one of the two valid
values rather than some third (invalid) combination (a
glitch).
One possible algorithm for generating a Gray code sequence
is to toggle the lowest numbered bit that results in a new
code each time. Here is a four bit Gray code sequence
generated in this way:
0 0 0 0
0 0 0 1
0 0 1 1
0 0 1 0
0 1 1 0
0 1 1 1
0 1 0 1
0 1 0 0
1 1 0 0
1 1 0 1
1 1 1 1
1 1 1 0
1 0 1 0
1 0 1 1
1 0 0 1
1 0 0 0
The codes were patented in 1953 by Frank Gray, a Bell Labs
researcher.
(http://nist.gov/dads/HTML/graycode.html).
(2002-08-29)