题目
颠倒给定的 32 位无符号整数的二进制位。
分析
依次判断每一位数字是0还是1,再设置到结果的对应位置上。
一个技巧是为0时不用专门设置,因为本来就是0。所以只需要设置为1的情况。另外和1<<i相与判断第i位是否为1时,需要判断是否不等于0。而不是大于0,因为也有可能是负数。
public class Solution {
// you need treat n as an unsigned value
public int reverseBits(int n) {
int ans = 0;
for (int i = 0; i <= 31; i++) {
if (((1 << i) & n) != 0) {
ans |= 1 << (31 - i);
}
}
return ans;
}
}