问题:
Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).
解答:不存在溢出问题,传入变量逐位左移(为何不能右移见Number of 1 Bits),结果和相应位为1的数进行与操作即可。
代码如下:(通过OJ)
public class Solution {
public int reverseBits(int n) {
int m = 0;
for(int i=0;i<32 && n!=0;i++){
if((n & 0x80000000) != 0)
m |= (1 << i);
n <<= 1;
}
return m;
}
}