Every day a leetcode
题目来源:190. 颠倒二进制位
解法1:位运算
要颠倒给定的 32 位无符号整数的二进制位。
初始化ans=0,从高位到低位遍历n的每一位,将n的最低位加到ans上,然后将ans左移一位,将n右移一位,执行这样的操作32次。
如何将n的最低位加到ans上?
ans += (n & 1)
代码:
uint32_t reverseBits(uint32_t n) {
uint32_t ans=0;
for(int i=0;i<32;i++)
{
ans<<=1;
ans+=(n & 1);
n>>=1;
}
return ans;
}
结果: