判断是否为2的次幂

192 阅读1分钟
int a = 3;
int num = a & (a - 1);
if (a>0 && num == 0) {
    // 2的次幂
}else{
    //
}
十进制二进制
00
210
4100
81000

只要是2的次幂,就肯定只有一位是1,减1之后,相当于取反了

这2个数与操作之后肯定为0