题目描述:
颠倒给定的 32 位无符号整数的二进制位。
示例:
输入: 43261596
输出: 964176192
解释: 43261596 的二进制表示形式为 00000010100101000001111010011100 ,
返回 964176192,其二进制表示形式为 00111001011110000010100101000000 。
解题思路:
本题使用了位运算获取二进制,保存到数组刚好是逆序。将其再转换为10进制就OK了。
AC代码:
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint64_t res=0;
vector<int> a;
for (int i = 0; i < 32; i++)
if (((1 << i)&n) != 0)
a.push_back(1);
else
a.push_back(0);
for (int i = 0; i <32; i++)
{
res = ((res + a[i]) * 2);
}
return res/2;
}
};