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