func bin2gray(n) { n ^ (n >> 1) } func gray2bin(num) { var bin = num while (num >>= 1) { bin ^= num } return bin } { |i| var gr = bin2gray(i) printf("%d\t%b\t%b\t%b\n", i, i, gr, gray2bin(gr)) } << ^32