2.判断一个数是否为2的整数次幂
1.题目: 一个整数, 如何判断它是不是2的整数次幂
例如: 4是2的整数次幂, 16是2的整数次幂, 18不是2的整数次幂, 那么如何用算法来实现呢?
2.方法 (1)暴力法
public static boolean powerOfTwo(int num) {// 1.定义一个中间变量int temp = 1;// 2.让temp每次*2, 然后temp == numwhile (temp <= num) {if (temp == num) {return true;}temp = temp<<1; // 这里相当于*2}return false;}// 测试public static void main(String[] args) {System.out.println(ThePowerOfTwo.powerOfTwo(128));}
(2)巧解法<br />思路: 8的二进制是1000B, (8-1)的二进制是111B, 如果让8的二进制和(8-1)的二进制进行按位与操作, 则结果是0;
return (num&num-1) == 0;
