一、Description
Reverse bits of a given 32 bits unsigned integer.
Example:
Input:43261596
Output:964176192
Explanation:43261596 represented in binary as 00000010100101000001111010011100,return 964176192 represented in binary as 00111001011110000010100101000000.
题目大意:
将一个整数的二进制形式逆序变成一个新的二进制数,输出这个新二进制数的整数形式。
二、Analyzation
对于一个数n,每次判断它的末位是否为1,如果为1,就将result末位置1,然后result左移一位,n的末位判断完毕再将n右移一位并开始新的一轮循环。即相当于将n的二进制位数按照从低位到高位不断地让result接收。
三、Accepted code
public int reverseBits(int n) {
if(n == 0)
return 0;
int result = 0;
for(int i = 0;i < 32;i++){
result = result << 1; //将result左移一位
if((n & 1) == 1) //如果n & 1 为1,result++
result++;
n = n >> 1; //将n右移一位
}
return result;
}