给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。
示例 1:
输入: 16
输出: true
示例 2:
输入: 5
输出: false
进阶:
你能不使用循环或者递归来完成本题吗?
思路:循环肯定无脑的,但是循环的话就浪费了这道题了,我们需要采用一些骚方法,首先我们知道4的幂一定是2的幂,所以我们要先判断这个数是不是2的幂,之后我们让这个数和10101010101010101010101010101010相与,看是否等于本身即可。
class Solution {
public boolean isPowerOfFour(int num) {
if(num<=0 || (num&(num-1))!=0)
return false;
return (num&(0x55555555))==num;
}
}