美文网首页
判断一个数为2的整数次幂

判断一个数为2的整数次幂

作者: CXY_XZL | 来源:发表于2021-05-16 20:46 被阅读0次

    方法一

    解题思路:一个数为2的整数次幂,那么它必将被2整除
    代码如下:

    public static boolean isPowerOf2(){
      int temp = 1;
      while(temp<=num){
        if(temp == num){
            return true;
        }
        temp = temp * 2;
      }
      return false;
    }
    
    public static void main(String[] args){
      System.out.println(isPowerOf2(32));
      System.out.println(isPowerOf2(33));
    }
    

    以上算法时间复杂度为O(logn),但还有更好的办法,如下:


    方法二

    解题思路:8为2的整数次幂,转换为二进制为1000,在二进制的基础上减一后结果是111,而1000 & 111 在位运算中结果为0,总结如下表:

    示例.png

    代码如下:

    public static boolean isPowerOf2(int num){
      return (num&num-1) == 0;
    }
    

    补充:此方法时间复杂度为O(1)

    相关文章

      网友评论

          本文标题:判断一个数为2的整数次幂

          本文链接:https://www.haomeiwen.com/subject/qibrjltx.html