给定32位无符号整数的反转位.
例如,给定输入43261596(以二进制表示为
00000010100101000001111010011100),返回964176192(代表in
二进制为00111001011110000010100101000000).
这不起作用
def reverseBits(self, n):
return int(bin(n)[:1:-1], 2)
解决方法:
你的问题是假设Python的bin产生一个32位对齐的输出.它没有;它输出可能的最小位数. Python 3的int类型具有无限数量的位,即使在Python 2中,如果int溢出int的边界(与C的int的限制无关),int也会自动提升为long.
如果您希望它像特定宽度一样,最简单的方法是使用具有更多控件的格式化工具(这也将简化切片操作).
例如,通过格式化为固定的32个字符宽,用零填充,您将获得所需的结果:
>>> int('{:032b}'.format(43261596)[::-1], 2)
964176192
标签:python
来源: https://codeday.me/bug/20190724/1521633.html