【题目】
难度:简单
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例 1:
输入: 1
输出: true
解释: 20 = 1
示例 2:
输入: 16
输出: true
解释: 24 = 16
示例 3:
输入: 218
输出: false
题目来源:力扣(LeetCode)
思路
如果这个数是 2 的幂次方,那么它的二进制形式有且只有一个位为1
方法1:
使用Integer.bitCount方法会统计这个数二进制形式下1的个数
方法2:
利用(n-1)&n==0
比如8的二进制 1000 (8-1)=7 二进制 0111
1000&0111=0
代码
public boolean isPowerOfTwo(int n) {
// 方法1: return n>0 && Integer.bitCount(n) == 1;
return n > 0 && ((n - 1) & n) == 0; //方法2
}