Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100),
return 964176192 (represented in binary as00111001011110000010100101000000).
把一个无符号int数字,按二进制位反转过来
通过移位操作,一位一位来处理。目的是反转,所以先处理最右位。最右位(末端)一个一个地往result的左边推
public class ReverseBits {
public static void main(String args[]) {
System.out.print(solution(43261596));
}
// &:当两边操作数的位同时为1时,结果为1,否则为0。如1100&1010=1000
// 按位反转一个int
private static int solution(int input) {
int result = 0;
for (int i = 0; i < 32; i++) { // 一共32位
if (((input >> i) & 1) == 1) { // 如果移位后最右位为1
int j = 31 - i; // 判断当前是第几位,并换算成反转后的位数
result |= 1 << j; // 得知是反转后第几位,存入结果result中
}
}
return result;
}
}
输出:
964176192