美文网首页
判断一个数是否是2的幂次

判断一个数是否是2的幂次

作者: 阿狸404 | 来源:发表于2018-02-27 15:21 被阅读24次

题目:判断给定的一个数是否是2的幂次。

package com.wang.suan;
/**
 * 判断给定的数是否是2的幂次
 * @author wxe
 * @since 0.0.1
 */
public class CheckPower {

    public static void main(String[] args) {
        System.out.println(checkPowerOf2(4));
    }
    
    public static boolean checkPowerOf2(int num){
        if (num <= 0) {
            return false;
        }
        
        return (num & (num-1)) == 0;
    }

}

这么简单又高效的算法,就要归功于n & (n-1)的妙用了。
基本原理

   n&(n-1)作用:将n的二进制表示中的最低位为1的改为0,先看一个简单的例子:

  n = 10100(二进制),则(n-1) = 10011 ==》n&(n-1) = 10000

 可以看到原本最低位为1的那位变为0。

弄清楚了它的原理,那么到底能用在哪些方面呢?

  1. 求某一个数的二进制表示中1的个数
while (n >0 ) {
      count ++;
      n &= (n-1);
}
  1. 判断一个数是否是2的幂
n > 0 && ((n & (n - 1)) == 0 )

相关文章

  • 算法小技巧

    判断某个数是否为2的幂

  • 快速判断x的幂——x进制法 2020-07-27(未允禁转)

    快速判断x的幂——x进制法 1.快速判断一个数是否为2的幂 思路:如果一个数是2的幂,那么它的二进制数一定只含有一...

  • 判断一个数是否是2的幂次

    题目:判断给定的一个数是否是2的幂次。 这么简单又高效的算法,就要归功于n & (n-1)的妙用了。基本原理: 弄...

  • 231-2的幂

    给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 这道题很巧妙,如果一个数字是 2 的幂次方的话,那么它的...

  • 判断一个数是否是2的n次幂

    解题思路 1:如何得到2的n次幂,2*2*2 2:将传入的数据进行“循环除以2”直到该数据=2那么该数据就是2的次幂

  • LeetCode 231. Power of Two

    题意:判断一个整数是否为2的次幂。解题:是2的次幂的整数为:1、2、4、8、16...其二进制表示都是1000.....

  • 位运算小算法

    判断一个数是不是2的N次幂(能被2整除)swift篇 按照二进制中只有一个1的时候才是2的N次幂,例如000000...

  • 位运算的一些技巧

    判断一个数是不是2的整数次幂 对于2的整数次幂,2进制的形式的一个特点是只有一个1。我第一次遇到这个问题是在一个公...

  • LeetCode刷题 231. 2的幂

    231. 2的幂 题目 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例1: 示例 2: 示例 3:...

  • LeetCode 231 .2的幂(Power of Two)

    231. 2的幂 给定一个整数,编写一个函数来判断它是否是 2 的幂次方。 示例 1: 示例 2: 示例 3: P...

网友评论

      本文标题:判断一个数是否是2的幂次

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