最后更新于
最后更新于
给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x
示例 1:
示例 2:
示例 3:
提示:
-231 <= n <= 231 - 1
进阶:
你能不使用循环或者递归来完成本题吗?
也是用位运算的思路解题.
如果是2的幂, 则二进制角度下, n只能有1位1. 且又要是4的幂, 4的二进制是100, 4的平方的二进制是10000. 因此1一定要出现在奇数位上. 因此我们可以创建一个mask, 偶数位为1, 奇数位为0, 这样n与这个mask相与时, 如果n是4的幂, 则结果一定为0.
由于n是一个32位的整数, mask就可以记为:
因此先判断是否只有一个1, 在判读1是否在奇数位上. 代码为:
如果n是4的幂, 则一定也是2的幂. 因此可以先判断是否是2的幂, 判断的方法参考.