给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

示例 1:

输入: 1
输出: true
解释: 20 = 1

示例 2:

输入: 16
输出: true
解释: 24 = 16

示这题是考察数学的问题了。用位运算可以快速解决完问题。2的幂的二进制形式永远是 10 100 1000 10000的形式出现的,而通过二进制中与的特性可以得知 10 & 01 = 00,100 & 011 =000

那么就可以通过n与n-1的与运算,便捷得得到答案。

代码如下:

class Solution {
public boolean isPowerOfTwo(int n) {
return n>0 && (n&n-1)==0;
}
}
05-21 11:06