问题:给你一个正整数,如何判断他是不是2的整数次幂?
2 4 8 16 32 …
/**
* 2*n?
*/
@Test
public void test4() {
System.out.println(isPowerOf2(256));
System.out.println(isPowerOf2(255));
System.out.println(isPowerOf22(256));
System.out.println(isPowerOf22(255));
}
/**
* 判断是不是2的整数密
*
* @param num num
* @return result
*/
public static boolean isPowerOf2(int num) {
int temp = 1;
while (temp <= num) {
if (temp == num) {
return true;
}
temp = temp << 2;
}
return false;
}
/**
* 判断是不是2的整数密
*
* @param num num
* @return result
*/
public static boolean isPowerOf22(int num) {
return (num & num-1) == 0;
}