Python教程

【python】判断一个数是否是2的幂次方

本文主要是介绍【python】判断一个数是否是2的幂次方,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一个数是否是2的幂次方,比较常用的是递归和移位运算进行判断。

1. 递归算法的思想很简单,就是不断的模上2去判断。

2. 如果一个数是2的幂,那么它的二进制表示中就只有一位1,例如:10000,1000,100等等。所以如果对数字1进行移位操作,总会在移到某个位的时候和这个数相等。这就是移位判断的思想。

def twopower(n):
    res = 1
    while res < n:
        res = res << 1
    if res == n:
        return True
    else:
        return False

3. 因为二进制表示的2的幂次方数中只有一个1,后面跟的是n个0; 因此问题可以转化为判断1后面是否跟了n个0。如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与上(&)减去1后的数字,结果为零。

def twopart(n):
    return n&(n-1) == 0

 扩展:

判断是不是4的幂次方?:【参考上面方法2】判断移动的位数是不是偶数(是否%2 == 0)

判断是不是8的幂次方?:判断移动位数会否%3 == 0

这篇关于【python】判断一个数是否是2的幂次方的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!