Leetcode

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;
}

总结

位运算的运用.

上一篇下一篇

猜你喜欢

热点阅读