这道题是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 来判断。

本文介绍了一种使用位运算判断一个整数是否为2的幂次方的方法。通过检查整数n及其减1后的值进行按位与操作,若结果为0且n大于0,则该数为2的幂次方。提供了LeetCode第231题的解题思路及代码实现。
1290

被折叠的 条评论
为什么被折叠?



