题目
分析:
(n&1)<<num:n左移num位,将n右边的数移到左边相应位置
n = n>>1:n右移1位,将已经反转到左边的那位数去掉,即“更新n最右边的那位数”
代码实现:
Java版
public class Solution {
// you need treat n as an unsigned value
public int reverseBits(int n) {
int result = 0;
int num = 31;
while(num>=0){
result += (n&1)<<num;
n = n>>1;
num--;
}
return result;
}
}
结果:
C版
uint32_t reverseBits(uint32_t n) {
uint32_t result = 0;
int num = 31;
while(num>=0){
result += (n&1)<<num;
n = n>>1;
num--;
}
return result;
}
结果: