num2gray 整数をグレイ符号に変換する
unsigned num2gray(unsigned num);
num 整数
整数に対応するグレイ符号
unsigned num2gray(unsigned num) { unsigned mask; int flag; flag = 0; for (mask = 1 << (sizeof(unsigned) - 1); mask != 0; mask >>= 1) { if (flag) num ^= mask; if (num & mask) flag = !flag; } return num; }
整数に対応するグレイ符号を求めるには、上位のビットから順に 見ていき、1のビットが現れたらつぎのビットを反転させる。反 転したビットがまた1なら、そのつぎのビットは反転しない。