Here we summarise the properties and algorithms of the Gray code. Descriptions are given of the Gray code definition, algorithms and circuits for generating the code and for conversion between binary and Gray code, for incrementing, counting, and adding Gray code words. Some interesting applications of the code are also treated. Java implementations of the algorithms in this paper are available...