求一个数是不是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