O(1)时间检测2的幂次

描述

用 O(1) 时间检测整数 n 是否是 2 的幂次。

样例
  • n=4,返回 true;
  • n=5,返回 false.

考察点
  • 与、或、非、异或
      • “&”
      • 两个操作数中位都为1,结果才为1,否则结果为0
      • “|”
      • 两个位只要有一个为1,那么结果就是1,否则就为0
      • “~”
      • 如果位为0,结果是1,如果位为1,结果是0
    • 异或
      • “^”
      • 两个操作数的位中,相同则结果为0,不同则结果为1
答案
public boolean checkPowerOf2(int n) {
    // write your code here
    if (n <= 0) {
        return false;
    }
    return (n & (n - 1)) == 0;
}