def reverse_bits(n, bits=8): result = 0 for _ in range(bits): result = (result << 1) | (n & 1) n >>= 1 return result print(reverse_bits(13))
Think about the binary form of 13: 00001101. Reverse the bits and convert back to decimal.
13 in 8 bits is 00001101. Reversing bits gives 10110000 which is 176 in decimal.
def reverse_bits(n, bits=4): result = 0 for _ in range(bits): result = (result << 1) | (n & 1) n >>= 1 return result print(reverse_bits(1, 4))
1 in 4 bits is 0001. Reverse bits and convert to decimal.
0001 reversed is 1000 which equals 8 in decimal.
def reverse_bits(n, bits=3): result = 0 for i in range(bits): result = (result << 1) | (n & 1) n = n >> 1 return result print(reverse_bits(5))
Check if the code runs without exceptions and what output it produces.
The code correctly reverses bits of 5 (101) in 3 bits to 101 which is 5 decimal. No error occurs.
def reverse_bits(n, bits=5): result = 0 for _ in range(bits): result = (result << 1) | (n & 1) n >>= 1 return result print(reverse_bits(19, 5))
19 in 5 bits is 10011. Reverse bits and convert to decimal.
10011 reversed is 11001 which equals 25 decimal.
Think about the binary length of 1023.
1023 in binary is 1111111111 which is 10 bits long, so 10 bits are needed to reverse it correctly.
