例として,グレイコードの 10100101は, どのようにバイナリコードに変換されるのかを示す.
まず,赤線で示すように,最上位ビットはグレイコードとバイナリーコードで 常に同じである. さらに,それ以外のビットについては,青線で示すように, 該当するグレイコードのビットと,ひとつ上位のバイナリコードのビットの 排他的論理和によって算出できる. 排他的論理和は(0,1)(1,0)の時に1となり,(0,0)(1,1)の時に0となる. C言語では「^」である.
このように計算すると,グレイコードの 10100101は, バイナリコードの 11000110となることがわかる. つまり,グレイコードの165(10100101)は, バイナリコードの198(11000110)に相当する.
以上で述べた,グレイコード→バイナリコードの変換ルーチンは 数行のC言語で書けるので,ビット演算の練習も兼ねて自分で書いて欲しい. ただし,実験が遅れている班は,(本来は望ましくはないが) 以下の変換テーブルを用いても良い.
static unsigned char gray2binary[]={ 0, 1, 3, 2, 7, 6, 4, 5, 15, 14, 12, 13, 8, 9, 11, 10, 31, 30, 28, 29, 24, 25, 27, 26, 16, 17, 19, 18, 23, 22, 20, 21, 63, 62, 60, 61, 56, 57, 59, 58, 48, 49, 51, 50, 55, 54, 52, 53, 32, 33, 35, 34, 39, 38, 36, 37, 47, 46, 44, 45, 40, 41, 43, 42, 127,126,124,125,120,121,123,122,112,113,115,114,119,118,116,117, 96, 97, 99, 98,103,102,100,101,111,110,108,109,104,105,107,106, 64, 65, 67, 66, 71, 70, 68, 69, 79, 78, 76, 77, 72, 73, 75, 74, 95, 94, 92, 93, 88, 89, 91, 90, 80, 81, 83, 82, 87, 86, 84, 85, 255,254,252,253,248,249,251,250,240,241,243,242,247,246,244,245, 224,225,227,226,231,230,228,229,239,238,236,237,232,233,235,234, 192,193,195,194,199,198,196,197,207,206,204,205,200,201,203,202, 223,222,220,221,216,217,219,218,208,209,211,210,215,214,212,213, 128,129,131,130,135,134,132,133,143,142,140,141,136,137,139,138, 159,158,156,157,152,153,155,154,144,145,147,146,151,150,148,149, 191,190,188,189,184,185,187,186,176,177,179,178,183,182,180,181, 160,161,163,162,167,166,164,165,175,174,172,173,168,169,171,170};