循环位C ++

Looping over bits c++

遇到了一个反转无符号整数位的问题。尝试了不同的方法。但是,我不太熟悉按位运算符的工作原理。有人可以指出这里的根本错误吗?

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;

你在这两种情况下都向左移动 1 并得到相同的结果。尝试使用 10000...(32 位)并将其右移而不是 1 << a