我们观察2的整数幂 换成二进制都有一个规律 如下:
2 -> 0000 0010 4 -> 0000 0100 8 -> 0000 1000
2-1= 1 -> 0001 4-1=3 -> 0011 8-1=7 -> 0111
这时我们 用 n & (n -1) 会发现结果都为0 故此我们的代码就出来了:
n & (n - 1) == 0 :如果为true的话 就表示为整数幂 否则不是
我们观察2的整数幂 换成二进制都有一个规律 如下:
2 -> 0000 0010 4 -> 0000 0100 8 -> 0000 1000
2-1= 1 -> 0001 4-1=3 -> 0011 8-1=7 -> 0111
这时我们 用 n & (n -1) 会发现结果都为0 故此我们的代码就出来了:
n & (n - 1) == 0 :如果为true的话 就表示为整数幂 否则不是