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

分析

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

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

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

0和1按位与运算的结果是0,因此凡是2的整数次幂和它自己减1的结果进行与运算,结果都一定是0。反之,若是一个整数不是2的整数次幂,结果必定不是0.cdn

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

代码实现

完整代码

gist.github.com/furuiyang07…get

相关文章
相关标签/搜索