//给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
//
// 整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x
//
//
//
// 示例 1:
//
//
//输入:n = 16
//输出:true
//
//
// 示例 2:
//
//
//输入:n = 5
//输出:false
//
//
// 示例 3:
//
//
//输入:n = 1
//输出:true
//
//
//
//
// 提示:
//
//
// -231 <= n <= 231 - 1
//
//
//
//
// 进阶:
//
//
// 你能不使用循环或者递归来完成本题吗?
//
// Related Topics 位运算
// 👍 190 👎 0
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public boolean isPowerOfFour(int n) {
return n > 0 && (n & -n) == n && (n & 0xaaaaaaaa) == 0;
}
}
//leetcode submit region end(Prohibit modification and deletion)
在上题2的幂的基础上,要判断唯一的1是否出现在奇数位上,用一个奇数位全是0的掩码做与运算即可:
mask=(10101010101010101010101010101010)2
还有一种方法是,判断n % 3 == 1
是否成立。若是2的倍数而不是4的倍数时,n % 3 == 2
。