为什么0的位长度返回0而不是1?
>>> int(0).bit_length()
0
>>> int(2).bit_length()
2
二进制中的2是0x10,表示两位,二进制中的零没有仍然技术占用1位,因为它的十六进制表示是0x0?
答案 0 :(得分:2)
Python文档陈述
更确切地说,如果x非零,则x.bit_length()是唯一的 正整数k使得2 **(k-1)<= abs(x)<1。 2 **亩。同样地, 当abs(x)小到足以具有正确的圆对数时, 然后k = 1 + int(log(abs(x),2)) 如果x为零,那么x.bit_length() 返回0。
https://docs.python.org/3/library/stdtypes.html#int.bit_length
答案 1 :(得分:0)
请阅读有关https://docs.python.org/3/library/stdtypes.html的文档 这是解释。 这就是函数的工作原理。如果你发送它0,它将输出0
如果x为零,则x.bit_length()返回0.