题目描述
【leetcode】190. 颠倒二进制位( Reverse Bits )
颠倒给定的 32 位无符号整数的二进制位。
进阶:
如果多次调用这个函数,你将如何优化你的算法?
第一次解答
思路:
通过位运算反向输入变量的每一位,将每一位0、1放到新申请一个变量中
test case:
00000010100101000001111010011100
11111111111111111111111111111101
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t result = 0U;
for(int i=0; i<32; ++i){
// 第1版代码:
// if(n & (1U<<i)){
// result |= (1U<<(31-i));
// }
// 精简版代码,去掉if:
result |= (((n>>i)&1U) << (31-i));
}
return result;
}
};
结果: