二的幂次方判断——使用位运算-来源于lowbit操作

 

解法:位运算的使用

这里需要就是了解位运算的使用了 lowbit函数

x & -x
这种算法其实是利用了计算机的补码性质。计算机为了表示负数,将对应的正数二进制全部取反再加一。

lowbit是为了获取一个数的二进制中最低位的1对应的值,比如lowbit(10(10)) = 10(2),因为10的二进制表达是1010。

在这个基础上,如果这个数是二的幂次方的话,其二进制就只有一个1,因此使用这个操作后得到的值就是本身,所以就很简单就能判断。

 

代码实现:

class Solution {

public:

    bool isPowerOfTwo(int n) {

       if(n>0&&(n&-n)==n)

       return true;

       else

       return false;

    }

};

posted on 2024-04-27 14:04  不是小朋友L  阅读(3)  评论(0编辑  收藏  举报

导航