Given an integer, write a function to determine if it is a power of two.
译:给定一个整数,写一个能判断是否为2的次方的方法。
实现
public class Solution {
public boolean isPowerOfTwo(int n) {
return (n > 0) && ((n & (n - 1)) == 0);
}
}
1
2
3
4
5
问题分析
一般遇到次方这种题都差不多是跟位运算相关的,写出几个2的次方数,例如:1、2、4、8、16,转换为二进制为:1、10、100、1000、10000,其实想过判断当前有多少位0或1,如果除第一位以外都是0可以得出结论,但想想一旦碰上循环的操作这时间空间复杂度都是嗷嗷的涨,所以还是老老实实别偷懒。-1后除了第一位别的就是1,两者相与则为000000000000…..