二进制值的Python字符长度

时间:2016-02-13 16:37:52

标签: python math binary

我正在寻找确定二进制值占用的字符数的方法。

例如,如果我的值二进制值为4,20和60,我会得到以下结果:

bin(4), 0b100 = 3

bin(20), 0b10100 = 5

bin(60), 0b111100 = 6

2 个答案:

答案 0 :(得分:3)

a = 20
a.bit_length()
>> 5

答案 1 :(得分:2)

当2 b-1 ≤n≤2 b - 1时,正整数 n 具有 b 位那么表示整数 n 所需的位数是:

floor(log n)+1 # note that base of log is 2

由于你领先0b,你需要在上述公式中添加2。

所以它会是:

floor(log n) + 3

在python中,您可以使用math模块,如下所示:

math.floor(math.log(n, 2)) + 3

示例:

>>> math.floor(math.log(10, 2)) + 3
6.0
>>> 
>>> len(bin(10))
6
>>> math.floor(math.log(77, 2)) + 3
9.0
>>> len(bin(77))
9

作为更强大的 Pythonic 方式,您还可以使用int.bit_length来返回表示整数对象所需的位数。因此,要获取需要字符的数量,您可以使用2:

添加它
int.bit_length() + 2