题目:
给定一个整数,写一个函数来确定它是否是2的幂。
Given an integer, write a function to determine if it is a power of two.
Input: 1 Output: true
Input: 16 Output: true
Input: 218 Output: false
方法一:
逐次除以2,看商是否为1,直到数为1
方法二:
由于2的幂有个特性:二进制表达中,只有最高位为1,其他位都为0,并且对一个数n,n-1为n的二进制表达中去掉最右边的1,因此如果n&n-1为0,则表示数为2的幂
class Solution {
public boolean isPowerOfTwo(int n) {
return n>0 && (n&(n-1))==0;
}
}