如何判断一个正整数是不是2的整数次幂

Posted 阳光照不到的王国

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断一个正整数是不是2的整数次幂相关的知识,希望对你有一定的参考价值。

先上程序,使用Java语言实现:

package com.wbl;

/**
 * 判断一个正整数是否是2的整数次幂
 */
public class Demo0821 {
    /**
     * 通过将number和number-1进行与运算,如果结果==0则number为2的整数次幂,否则不是
     * @param number 要判断的数值
     * @return true or false
     */
    public static boolean isCheck(int number) {
        return (number & (number - 1)) == 0;
    }

    public static void main(String[] args) {
        System.out.println(isCheck(8));
        System.out.println(isCheck(100));

    }
}

计算机中的移位运算

字节是存储数据的基本单位。

位是存储数据的最小单位。一个Byte等于8bit。

内存中存放的都是二进制,可以表示为很多的小格子,每一个小格子都表示一个bit为,要么是0要么是1。

例如数字1在内存中可以表示为

00000001

数字2在内存中表示为

00000010

数字3表示为

00000011

数字4表示为

00000100

.

.

.

依次类推2的8次幂256的表示为

10000000

 由此可以推出,将一个数m左移n位后的结果为

位与运算的规则:当两个二进制位同时为1时,结果为1,其它都为0。

数字mm的二进制m-1的二进制

m&(m-1)

20000 00100000 00010
40000 01000000 00110
60000 01100000 01011
80000 10000000 01110
...

综上所述,可以得出要想判断m是否为2的整数次幂的判断方式可以采用m&(m-1) 的结果是否为0。

感谢阅读,如有疑问可以留言交流!

以上是关于如何判断一个正整数是不是2的整数次幂的主要内容,如果未能解决你的问题,请参考以下文章

面试官:判断一个数是否为2的整数次幂

如何利用一条简单语句判断一个整数是否为2的整数次幂

判断一个数是不是是 4 的整数次幂

2的整数次幂 面试算法

2的整数次幂

231. Power of Two 342. Power of Four -- 判断是否为24的整数次幂