python bit_length()为0返回意外值

时间:2018-04-05 15:15:21

标签: python binary bit

为什么0的位长度返回0而不是1?

>>> int(0).bit_length()
0

>>> int(2).bit_length()
2
二进制中的

2是0x10,表示两位,二进制中的零没有仍然技术占用1位,因为它的十六进制表示是0x0?

2 个答案:

答案 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.