比如8就是 6就不是,这个方法很巧妙,运用了位运算。
一个宏搞定:
#define POWEROF2(x) ((((x)-1) & (x)) == 0)
// 8的二进制:1000 7的二进制:0111 两个& 就会得到0 1000 & 0111 = 0000
// 6的二进制:0110 5的二进制:0101 0110 & 0101 = 0100
比如8就是 6就不是,这个方法很巧妙,运用了位运算。
一个宏搞定:
#define POWEROF2(x) ((((x)-1) & (x)) == 0)
// 8的二进制:1000 7的二进制:0111 两个& 就会得到0 1000 & 0111 = 0000
// 6的二进制:0110 5的二进制:0101 0110 & 0101 = 0100
1549

被折叠的 条评论
为什么被折叠?