判断一个数是不是2的指数幂

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq447995687/article/details/84941120

求一个数是不是2的指数幂

2^0=1,2^1=2,2^2=4,2^3=8

1的二进制为1
2的二进制为10
4的二进制为100
8的二进制为1000
发现只有最高位为1其余位为0,如果将其减一的话那么最高位为0其余位则为1,两者相与的结果则必定为0
结论:如果 a&(a-1) == 0 则a必定是2的指数幂

Integer a = 7;
System.out.println((a & (a - 1)) == 0);

Integer b = 8;
System.out.println((b & (b - 1)) == 0);
--------------------------
false
true

猜你喜欢

转载自blog.csdn.net/qq447995687/article/details/84941120