unsigned binary_to_gray (unsigned num) {
return num ^ (num >> 1);
}
unsigned gray_to_binary (unsigned num) {
/* note: assumes num is no more than 32-bits in length */
num ^= (num >> 16);
num ^= (num >> 8);
num ^= (num >> 4);
num ^= (num >> 2);
num ^= (num >> 1);
return num ;
}