231. 2的幂

231. 2的幂

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

示例 1:

  输入: 1
  输出: true
  解释: 20 = 1
示例 2:

  输入: 16
  输出: true
  解释: 24 = 16
示例 3:

  输入: 218
  输出: false

 

检测是否为 2 的幂:

我们通过 x & (-x) 保留了最右边的 1,并将其他位设置为 0 若 x 为 2 的幂,则它的二进制表示中只包含一个 1,则有 x & (-x) = x。

若 x 不是 2 的幂,则在二进制表示中存在其他 1,因此 x & (-x) != x。

因此判断是否为 2 的幂的关键是:判断 x & (-x) == x。

代码:

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

 

posted @ 2020-08-25 00:21  图神经网络  阅读(86)  评论(0编辑  收藏  举报
Live2D