专栏漫画算法笔记之判断一个数是否为2的整数次幂

342 阅读1分钟

分析

如果一个整数是2的整数次幂,那么当它转化成二进制时,只有最高位是1,其他位都是0。

2的整数次幂一旦减1,它的二进制数字就全部变成了1

,这时候如果用原数值(2的整数次幂)和它减1的结果进行按位与运算,也就是n &(n1)

0和1按位与运算的结果是0,所以凡是2的整数次幂和它本身减1的结果进行与运算,结果都必定是0。反之,如果一个整数不是2的整数次幂,结果一定不是0.

那么很简单,对于一个整数n,只需要计算n&(n1)的结果是不是0。这个方法的时间复杂度只有O(1)

代码实现

完整代码

gist.github.com/furuiyang07…