int a = 3; int num = a & (a - 1); if (a>0 && num == 0) { // 2的次幂 }else{ // } 复制代码
十进制 | 二进制 |
0 | 0 |
2 | 10 |
4 | 100 |
8 | 1000 |
只要是2的次幂,就肯定只有一位是1,减1之后,相当于取反了
这2个数与操作之后肯定为0
int a = 3; int num = a & (a - 1); if (a>0 && num == 0) { // 2的次幂 }else{ // } 复制代码
十进制 | 二进制 |
0 | 0 |
2 | 10 |
4 | 100 |
8 | 1000 |
只要是2的次幂,就肯定只有一位是1,减1之后,相当于取反了
这2个数与操作之后肯定为0