思路:提示中输入是一个长度为32多二进制字符串,因此循环32次,每次循环中把输入的最后一位放到一个新的二进制字符串中。方法是取0作为新的二进制字符串temp,先把temp向左移动一位,然后把输入n的最后一位放到temp的最后一位(其实就是通过或运算使temp的最后一位变成n的最后一位),再把n向右移一位。代码:
public class Solution {
// you need treat n as an unsigned value
public int reverseBits(int n) {
int temp = 0;
for (int i = 0; i < 32; i++) {
temp <<= 1;//左移一位
temp |= (n & 1);//把n的最后一位放到temp的最后一位。
n >>= 1; //n右移一位。
}
return temp;
}
}