Binary Code 转换为Gray Code。
如:
Binary Code :1011 要转换成Gray Code
1011 = 1(照写第一位), 1(第一位与第二位异或 1^0 = 1), 1(第二位异或第三位, 0^1=1), 0 (1^1 =0) = 1110
其实就等于 (1011 >> 1) ^ 1011 = 1110
void gray(int n)
{
int temp = n;
cout << (temp>>1)^n << endl;
}输出的即为n的格雷码;
还可以使用递归:
/*采用递归的方式*/
void Gra(int n,int &result,int leftshift)
{
bitset<32> bitvec(n);
if (n == 0 || n == 1)
{
result |= n<<leftshift;
return;
}
result |= (bitvec[0] ^ bitvec[1]) << leftshift;
Gra(n>>1,result,++leftshift);
}result存储结果,leftshift给出移位的位数

本文深入探讨了BinaryCode转换为GrayCode的过程,并通过两种方法进行了详细解释:一种是位移运算与异或操作相结合的方法,另一种则是递归算法实现。文中还提供了关键代码示例,帮助读者更好地理解并应用这一转换技术。

1425

被折叠的 条评论
为什么被折叠?



