力扣-190.颠倒二进制位

Idea

(n & 1) 得到当前n的最低(最右)一位,<< (31 - i) 左移 31 - i 位,也就是把最低一位逆序添加到返回值rev对应的高位,每循环一次和之前结果进行一次或运算 |=,相当于整合了每一位的结果.

AC Code

class Solution {
public:
    uint32_t reverseBits(uint32_t n) {
        uint32_t m = 0;
        for( int i = 0; i < 32 && n > 0; i++ ){
            m |= ( n & 1 ) << ( 31 - i);
            n >>= 1;
        }
        return m;
    }
};

你可能感兴趣的:(LeetCode,leetcode,C++位运算)