位运算:n & 1
睡不醒的鲤鱼 2021-05-15 每日一题 LeetCode
题目
颠倒给定的 32 位无符号整数的二进制位。
解析
通过右移和与运算,获取 n 每一位的值,将其拼接到结果中。
代码
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t ans = 0;
for (int i = 0; i < 32; i++) {
ans = (ans << 1) | (n & 1);
n >>= 1;
}
return ans;
}
};
1
2
3
4
5
6
7
8
9
10
11
func reverseBits(num uint32) uint32 {
var ans uint32
for i := 0; i < 32; i++ {
ans = ans<<1 | num&1
num >>= 1
}
return ans
}
1
2
3
4
5
6
7
8