采用字符串的方式,每次检查n的最后一位并添加到字符串中,随后n右移1位,最后根据字符串的情况按位权累加
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
string num = "";
uint32_t res = 0;
while (n != 0)
{
// 移位前后不相等 说明最后一位是1
if (n >> 1 << 1 != n)
num += '1';
else
num += '0';
n >>= 1;
}
// 长度不足就补0
while (num.length() < 32)
num += '0';
// 如果没变化就是直接返回
if (num == to_string(n))
return n;
for (int i = num.length() - 1, j = 0; i >= 0; i--,j++)
{
if (num[i] == '1')
res += pow(2, j);
}
return res;
}
};