原理: 二进制表示2的幂次方数中只有一个1,后面跟的是n个0; 因此问题可以转化为判断1后面是否跟了n个0。 将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与运算上(&)减去1后的数字,结果为零。 代码: n&(n-1) == 0结果即为是否为2的幂次方的结果 def func(n): return n&(n-1) == 0 运行结果如下: