python:用于查找表示数字所需位数的位技巧

时间:2015-12-28 14:45:46

标签: python bit-manipulation bit

在python中,我想计算表示无符号数所需的位数。例如:

2 --> 2 bits
3 --> 2 bits
10 --> 4 bits

我只是按照以下len( bin( n ) ) - 2

计算它

还有其他更好的计算方法吗?纯粹使用位操作,以便我也可以在其他语言上使用它?

2 个答案:

答案 0 :(得分:2)

最简单的方法是使用int类型的.bit_length()方法:

>>> for n in (2, 10):
...     print(n.bit_length())
... 
2
4

如果您想自己动手,可以使用以下功能:

def bit_length(n):
    bits = 0
    while n:
        bits += 1
        n >>= 1
    return bits

答案 1 :(得分:2)

如果你真的想做一点,那么

count=0
while(n!=0):
 n=n>>1
 count+=1