from
The Free On-line Dictionary of Computing (8 July 2008)
Gray code
<hardware> 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)