2.判断一个数是否为2的整数次幂

1.题目: 一个整数, 如何判断它是不是2的整数次幂
例如: 4是2的整数次幂, 16是2的整数次幂, 18不是2的整数次幂, 那么如何用算法来实现呢?
2.方法 (1)暴力法

  1. public static boolean powerOfTwo(int num) {
  2. // 1.定义一个中间变量
  3. int temp = 1;
  4. // 2.让temp每次*2, 然后temp == num
  5. while (temp <= num) {
  6. if (temp == num) {
  7. return true;
  8. }
  9. temp = temp<<1; // 这里相当于*2
  10. }
  11. return false;
  12. }
  13. // 测试
  14. public static void main(String[] args) {
  15. System.out.println(ThePowerOfTwo.powerOfTwo(128));
  16. }
  1. (2)巧解法<br />思路: 8的二进制是1000B, (8-1)的二进制是111B, 如果让8的二进制和(8-1)的二进制进行按位与操作, 则结果是0;
  1. return (num&num-1) == 0;