导航
导航
文章目录
  1. 题目
  2. 翻译
    1. 位运算法
    2. 计数法

LeetCode-231.Power of Two

题目

Given an integer, write a function to determine if it is a power of two.

翻译

给出一个整数,编写函数确定它是否是2的幂。

利用2的幂的性质,即二进制表示中,只有最高位是1。

位运算法

1
2
3
4
5
public class Solution {
public boolean isPowerOfTwo(int n) {
return n > 0 && ((n & (n - 1)) == 0);
}
}

计数法

1
2
3
4
5
6
7
8
9
10
11
public class Solution {
public boolean isPowerOfTwo(int n) {
int numOf1 = 0;
while (n > 0) {
if ((n & 1) == 1)
numOf1++;
n >>= 1;
}
return numOf1 == 1;
}
}

参考:
http://www.2cto.com/kf/201507/415383.html
http://www.bubuko.com/infodetail-953320.html