这道题是LeetCode里的第231道题。
题目描述:
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例 1:
输入: 1 输出: true 解释: 20 = 1示例 2:
输入: 16 输出: true 解释: 24 = 16示例 3:
输入: 218 输出: false
位运算,2 的幂次方的二进制为 1000...000,减去 1 之后变为 111...111。然后取并就行了。
解题代码:
class Solution {
public boolean isPowerOfTwo(int n) {
if(n <= 0 || (n & n-1) != 0)return false;
return true;
}
};
提交结果:
个人总结:
也可以 (n & -n) == n 或是 (1<<30) % n == 0 来判断。