integer gray_encode(integer n) { n ^ (n >> 1); } integer gray_decode(integer n) { integer p; p = n; while (n >>= 1) { p ^= n; } p; }