1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 思路: 2的幂相当于二进制只有一个为1的数,4的幂也一样,2的幂一次跳一格,4跳两格
代码: /** * @param Integer $n * * @return Boolean */ function isPowerOfFour($n) { // $n & $n - 1判断二进制数是否只有一个1 // $n & 0xaaaaaaaa 判断是否只在偶数位存在1 // 0xa 是1010的16进制, 如果奇数位存在1, 则$n & 0xaaaaaaaa不会为0 return $n > 0 && ($n & $n - 1) == 0 && ($n & 0xaaaaaaaa) == 0; }
|