Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).
思路:首先将n转为32个比特位,定义一个32位的int数组来保存对应的比特位。然后在将n转换为对应的比特位的同时,将翻转后的比特位存入int数组。然后再遍历翻转后的数组,将比特位转换为对应的整形数字即可。
具体代码如下:
uint32_t reverseBits(uint32_t n) {
int a[32] = {0};
for (int i=0;i< 32 ;++i)//将n转为比特位
{
if (n & 1)
a[31-i] =1;//将比特位翻转后存入数组
n = n>>1;
}
int temp=0,sum=0;
for (int i=0;i< 32 ;++i)//将比特位转换为整数
{
if (a[i])
{
temp = (1<<i);
sum+=temp;
}
}
return sum;
}