颠倒二进制位

问题描述(来源于LeetCode)

颠倒给定的 32 位有符号整数的二进制位。
示例 1:
输入:n = 43261596
输出:964176192
解释:

整数 二进制
43261596 00000010100101000001111010011100
964176192 00111001011110000010100101000000

代码实现

1
2
3
4
5
6
7
class Solution:
def reverseBits(self, n: int) -> int:
res=0
for i in range(32):
res =(res<<1)|(n&1)
n>>=1
return res

复杂度分析

  • 时间复杂度O(n)O(n)
  • 空间复杂度O(1)O(1)