题目描述
颠倒给定的 32 位无符号整数的二进制位。
示例
输入: 00000010100101000001111010011100
输出: 00111001011110000010100101000000
解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,
因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。
思路
位运算。
(1)将结果左移1位,空出最低位
(2)将结果与n最后一位相加
(3)将n右移1位,更新最后一位
一共32位,则32次移动。
代码
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
int count = 32;
int res = 0;
while (count--){
res = res << 1;
res = res | (n & 0x1);
n = n >> 1;
}
return res;
}
};