题目
答案
public class Solution {
// you need treat n as an unsigned value
public int reverseBits(int n) {
int rev = 0 , x= 0;
for(int i = 0;i<32&&n!=0; i++){
x= (n&1)<<(31-i);
rev|= x;
n >>= 1;
}
return rev;
}
}
解析-逐位查询
本题将二进制位颠倒 然后输出。首先传入数字 然后判断如果n为0,循环结束,先将x和1,然后n左移31位,现在第一个数为最后一个数,其他数结尾0,然后和rev相或,现在的rev中第一个数就是x最后一个数,然后让x在右移,准备从右边数的第二数放入rev中,知道循环结束即可