def reverse_bits(n: int, width: int = 32) -> int:
# Convert to binary, reverse the string, convert back to int
b = f"{n:0{width}b}"
return int(b[::-1], 2)
def bits(n: int, width: int = 32) -> str:
# use format() and grouping for readability
b = f"{n:0{width}b}"
# group into 8-bit chunks
return " ".join(b[i:i+8] for i in range(0, width, 8))
a = 19
b = 3
ra = reverse_bits(a)
rb = reverse_bits(b)
print("Original 19:", bits(a))
print("Reversed 19:", bits(ra))
print()
print("Original 3: ", bits(b))
print("Reversed 3: ", bits(rb))
"""
run:
Original 19: 00000000 00000000 00000000 00010011
Reversed 19: 11001000 00000000 00000000 00000000
Original 3: 00000000 00000000 00000000 00000011
Reversed 3: 11000000 00000000 00000000 00000000
"""