leetcode算法--位运算

题目

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。
来源:力扣(LeetCode)

class Solution {
public:
    bool isPowerOfTwo(int n) {
        if(n <= 0) return false;
        if((n&n-1)==0) return true;
        else return false;
    }
};

注意:将十进制数看成二进制数会极大的简化运算难度,合理利用位运算

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。

class Solution {
public:
    int hammingWeight(uint32_t n) {
        long long num = 1;
        int count = 0;
        while(n >= num) {
            if(n & num) count ++;
            num = num << 1;
        }
        return count;
    }
};

利用移位运算和与运算可以获得1的个数

你可能感兴趣的:(C++算法,算法,leetcode,职场和发展)