python中整数的长度_Python中正整数的位长度

本文介绍了在Python中获取正整数位长度的几种方法,包括使用内置的int.bit_length()方法,以及针对不同Python版本的自定义实现。内容涉及到二进制表示、位运算以及效率比较。
摘要由CSDN通过智能技术生成

1 = 0b1 -> 1

5 = 0b101 -> 3

10 = 0b1010 -> 4

100 = 0b1100100 -> 7

1000 = 0b1111101000 -> 10

如何获取整数的位长度,即在python中表示正整数所需的位数?

int.bit_length():返回用二进制表示整数所需的位数,不包括符号和前导零。docs.python.org/2/library/…

@其中一个是popcount(设置位的数目)。

在python 2.7+中,有一个int.bit_length()方法:

>>> a = 100

>>> a.bit_length()

7

>>> len(bin(1000))-2

10

>>> len(bin(100))-2

7

>>> len(bin(10))-2

4

注:对于负数无效,可能需要减去3而不是2。

但这不适用于负数(与日志版本相反,它也不会在负数上失败)

你说得对@killiands,我加了个便条

如果你关心的是负数,那就做len(bin(abs(n)))-2。

更重要的是,这对0来说是失败的。

另一种方法是做len("{:b}".format(x)),以避免不得不做减法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值