题目描述
颠倒给定的32位无符号整数的二进制位。
- 示例1
输入: 43261596
输出: 964176192
解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,
因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。
- 示例2
输入: 4294967293
输出: 3221225471
解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,
因此返回 3221225471,其二进制表示形式为 10101111110010110010011101101001。
使用内置函数bin()和int()
bin(n)
二进制化函数,返回一个以0b
开头的字符串格式。而通过字符串的format
方法直接返回所需要的二进制位的字符串,没有前缀修饰。
int(s, 2)
函数将数字字符串按二进制转换为整型。
def reverseBits(self, n):
num_bit = str(bin(n)[2:].zfill(32))
return int(num_bit[::-1], 2)
使用位操作符
使用>>
右移位操作符,搭配&
与操作符依此从后向前的标记当前位置的元素值。
def reverseBits(self, n):
res = 0
for i in range(32):
res = res*2 + (n >> i & 1)
return res
(最近更新:2019年04月16日)