Power of Four
Given an integer (signed 32 bits), write a function to checkt whether it is a power of 4.
给你一个整数(有符号的32位),写一个方法检查它是不是4的次方
Example:
Given num = 16, return true;
Given num = 5, return false.
Difficulty
Easy
思路
1.4的次方肯定是一个大于0的整数
2.任何一个4的次方,转换成二进制,以每四位进行分割,那么第1位或者第3位一定为1,但是不能同时为1
如: 1024 -> 0100 0000 0000
16 -> 0001 0000
实现
1.判断给的数是一个大于0的整数
num > 0
2.任何一个4的次方,转换成二进制,以每四位进行分割,那么第1位或者第3位一定为1,但是不能同时为1
(num & 0x55555555) != 0 && (num & (num - 1)) == 0
code
public class Solution {
public boolean isPowerOfFour(int num) {
return num > 0 && (num&(num-1)) == 0 && (num & 0x55555555) != 0;
}
}