2的整数次幂右 2,4,8,16,32....
他们的二进制数可表示为:
2 | 0010 |
4 | 0100 |
8 | 1000 |
16 | 1,0000 |
32 | 10,0000 |
他们的二进制数减一可表示为:
2 | 0001 |
4 | 0011 |
8 | 0111 |
16 | 0,1111 |
32 | 01,1111 |
所以只要判断一个数x与x-1的与是否等于0,就可以判断它是否时2的整数次幂
bool isPowerof2(int x) {
return (x&(x - 1)) == 0;
}
2的整数次幂右 2,4,8,16,32....
他们的二进制数可表示为:
2 | 0010 |
4 | 0100 |
8 | 1000 |
16 | 1,0000 |
32 | 10,0000 |
他们的二进制数减一可表示为:
2 | 0001 |
4 | 0011 |
8 | 0111 |
16 | 0,1111 |
32 | 01,1111 |
所以只要判断一个数x与x-1的与是否等于0,就可以判断它是否时2的整数次幂
bool isPowerof2(int x) {
return (x&(x - 1)) == 0;
}