Reverse bits of a given 32 bits unsigned integer. Example 1: Input: 00000010100101000001111010011100 Output: 00111001011110000010100101000000
Reversing a binary number is almost the same as reversing a decimal number. Let’s go over first how to reverse a decimal number.
As shown above, the logic is straightforward: we would keep getting the rightmost digit with
input%10 and append it to the output.
output = output*10 + input % 10 input /= 10
When it comes to bits, the logic is the same, and we only need to switch the base from
2, which is like:
output = output*2 + input % 2 input /= 2
Notably, with bit operations, we could improve its efficiency. Besides, since there might be leading zeros, we’d also have to reverse these zeros by setting the iteration to
class Solution: def reverseBits(self, n: int) -> int: res = 0 for _ in range(32): res = (res<<1) | (n&1) n>>=1 return res