题目:
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)
Follow up:
If this function is called many times, how would you optimize it?
思路:
不知道 Follow up 怎么处理。
思路即是 n取出最低位,然后向右移。result 向左移,然后加上n的最低位。
Code:
public int reverseBits(int n) {
int result=0, temp=0;
for(int i = 0; i<32;i++){
temp = n&1;
n >>= 1;
result = (result<<1) + temp;
}
return result;
}
备注:
位移符号的优先级 比较低,不可以直接用:
result = result<<1 + temp;
要用:
result = (result<<1) + temp;