/**
* <p>Title: isCompletePower</p>
* <p>Description: 判断一个数是否是2的整数次幂
* 判断原理:
* 2的整数次幂,都是以1开头,其余其余位为0的形式
* 例如:8的二进制形式为:1 0 0 0
* 这样的一个数进行-1后,所得数的各位都会和原数的各位成反码
* 例如:7的二进制形式位:0 1 1 1
* 所以将8和7进行按位与运算,所得结果为0(按位与都是1才会得1)
*
* 注:
* 此方法会将0和1也算作2的整数次幂,调用此方法时需要注意
* </p>
* @param num
* @return
*/
public static boolean isCompletePower(int num){
int bitAnd = num & (num - 1);
return bitAnd == 0;
}
运行0-99:
0: true
1: true
2: true
3: false
4: true
5: false
6: false
7: false
8: true
9: false
10: false
11: false
12: false
13: false
14: false
15: false
16: true
17: false
18: false
19: false
20: false
21: false
22: false
23: false
24: false
25: false
26: false
27: false
28: false
29: false
30: false
31: false
32: true
33: false
34: false
35: false
36: false
37: false
38: false
39: false
40: false
41: false
42: false
43: false
44: false
45: false
46: false
47: false
48: false
49: false
50: false
51: false
52: false
53: false
54: false
55: false
56: false
57: false
58: false
59: false
60: false
61: false
62: false
63: false
64: true
65: false
66: false
67: false
68: false
69: false
70: false
71: false
72: false
73: false
74: false
75: false
76: false
77: false
78: false
79: false
80: false
81: false
82: false
83: false
84: false
85: false
86: false
87: false
88: false
89: false
90: false
91: false
92: false
93: false
94: false
95: false
96: false
97: false
98: false
99: false
参考