Leetcode.190.Reverse Bits
2019-11-19 本文已影响0人
Jimmy木
题目
给定一个无符号整数, 求2进制翻转后的结果.
Input: 00000010100101000001111010011100
Output: 00111001011110000010100101000000
// intput: 43261596 output: 964176192
思路
将整数分解为2的i次方的和, 如果含有2的i次方, 结果就增加2的(32-i-1)次方.
uint32_t reverseBits(uint32_t n) {
int res = 0;
int i = 0;
while(n > 0) {
int x = 1<<i++;
if ((n & x) == x) {
n -= x;
res += 1<<(32-i);
}
}
return res;
}
总结
位运算的运用.