【LeetCode】C++ :简单题 - 位运算 231. 2的幂

231. 2的幂

难度简单276

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

示例 1:

输入: 1
输出: true
解释: 20 = 1

示例 2:

输入: 16
输出: true
解释: 24 = 16

示例 3:

输入: 218
输出: false
 
class Solution {
public:
    bool isPowerOfTwo(int n) {
        if(n == 0){
            return false;
        }
        long x = n; //如果x = INT_MIN, x-1会产生溢出,转为位数更多的long 则不会检查溢出
        return (x & (x-1)) == 0;
    }
};
class Solution {
public:
    bool isPowerOfTwo(int n) {
        if(n == 0){
            return false;
        }
        long x = n; //如果x = INT_MIN, x-1会产生溢出,转为位数更多的long 则不会检查溢出
        return (x & (-x)) == x;
    }
};

 如何获取二进制中最右边的1:  x & ( -x )

如何将二进制中最右边的1 设置为 0:x & (x - 1) 

在这里插入图片描述

在这里插入图片描述

盗图了,抱歉 呜呜~ 

猜你喜欢

转载自blog.csdn.net/weixin_44566432/article/details/113755235