二进制值的Python字符长度
我正在寻找一种方法来确定二进制值占用的字符数 例如,如果我的值二进制值为4、20和60,我将得到以下结果:二进制值的Python字符长度,python,math,binary,Python,Math,Binary,我正在寻找一种方法来确定二进制值占用的字符数 例如,如果我的值二进制值为4、20和60,我将得到以下结果: bin(4), 0b100 = 3 bin(20), 0b10100 = 5 bin(60), 0b111100 = 6 当2b-1时,正整数n有b位≤ N≤ 2b-1。因此,表示整数n所需的位数为: 由于前面有0b,所以需要在前面提到的公式中添加2 因此,这将是: floor(log n) + 3 在python中,您可以使用math模块,如下所示: math.floor(mat
bin(4), 0b100 = 3
bin(20), 0b10100 = 5
bin(60), 0b111100 = 6
当2b-1时,正整数n有b位≤ N≤ 2b-1。因此,表示整数n所需的位数为:
由于前面有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
作为一种更具Python风格的方法,您还可以使用它返回表示整数对象所需的位数。因此,要获得所需字符数,可以将其添加为2:
int.bit_length() + 2
此外,在最新版本中,
x.bit_length()
。如果需要更大输入的正确结果,则使用floor(log(n,2))+1
不是一个好主意。例如,对于562949953421311
,它在我的机器上给出了错误的结果(正确答案是49
,但在我的机器上,该公式给出了50
)。在最近的Python版本中,您可以使用log2
,这比log(n,2)
要精确一些,但是当bit\u length
方法可用时,就没有意义了。@markdickinstonk供编辑。是的,那是因为计算浮点数时受到限制。但一开始我以为OP是在寻找一种数学方法,实际上我错过了bit\u length
函数。bit\u length
是一种方法,应该调用它
int.bit_length() + 2
a = 20
a.bit_length()
>> 5