我正在寻找确定二进制值占用的字符数的方法。
例如,如果我的值二进制值为4,20和60,我会得到以下结果:
bin(4), 0b100 = 3
bin(20), 0b10100 = 5
bin(60), 0b111100 = 6
答案 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