Fix edge case with negative input (#8529)

This commit is contained in:
Oliver 2021-09-22 13:45:26 -04:00 committed by GitHub
parent 09e3843b24
commit b72f2c50af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 1 deletions

View File

@ -6,7 +6,7 @@ def truncate_to_significant_bits(input_x: int, num_significant_bits: int) -> int
"""
x = abs(input_x)
if num_significant_bits > x.bit_length():
return x
return input_x
lower = x.bit_length() - num_significant_bits
mask = (1 << (x.bit_length())) - 1 - ((1 << lower) - 1)
if input_x < 0:

View File

@ -17,6 +17,8 @@ class TestSignificantBits(unittest.TestCase):
assert truncate_to_significant_bits(a, 0) == 0b0
a = 0b1000000111
assert truncate_to_significant_bits(a, 500) == a
a = -0b1000000111
assert truncate_to_significant_bits(a, 500) == a
a = 0b10101
assert truncate_to_significant_bits(a, 5) == a
a = 0b10101