Fix _bit_length for 0 and negative numbers

This commit is contained in:
Andrew Noyes 2019-01-22 10:09:58 -08:00
parent 5a6f82a75b
commit 4bca5dad73

View File

@ -309,7 +309,9 @@ def _reduce_children(child_values):
if sys.version_info < (2, 7): if sys.version_info < (2, 7):
def _bit_length(x): def _bit_length(x):
return len(bin(x)) - 2 s = bin(x) # binary representation: bin(-37) --> '-0b100101'
s = s.lstrip('-0b') # remove leading zeros and minus sign
return len(s)
else: else:
def _bit_length(x): def _bit_length(x):
return x.bit_length() return x.bit_length()