遇到一个问题,要反转无符号整数的位。尝试了不同的方法。但是,我对逐位运算符的工作原理并不十分熟悉。有人可以指出这里的根本错误吗?
unsigned int reverse(unsigned int A)
{
unsigned int c=0;
int a=0;
while(a < 32)
{
c = c << 1;
c = c | ( A & (1 << a) );
a++;
}
return c;
答案 0 :(得分:0)
在两种情况下你都向左移动1并获得相同的结果。尝试使用10000 ...(32位)并将其向右移动而不是1&lt;&lt;一个