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なら、そのつぎのビットは反転しない。