0722更新
初始化一个res = 0由于要左右颠倒
所以n的最低位的结果 即为输出的最高位
因此,我们每次通过将n&1获取n的最低位
将这个结果加给res 让res左移,即可将n的低位移至自己的高位
循环32次即可
class Solution:
def reverseBits(self, n: int) -> int:
res = 0
for _ in range(32):
res = res << 1
res += (n & 1)
n = n >> 1
return res
'''
下面这种方法是投机取巧的方法
this_str = bin(n)[2:]
while len(this_str) < 32:#len('00000010100101000001111010011100'):
this_str = '0' + this_str
#print(this_str)
res_str = this_str[::-1]
return int(res_str, 2)'''
位运算需要加强学习
class Solution:
def reverseBits(self, n: int) -> int:
thisval = 0
index = 31
while n != 0:
temp = n & 1
temp = temp << index
index -= 1
thisval += temp
n = n >> 1
return thisval
class Solution:
def reverseBits(self, n: int) -> int:
n = bin(n)[2:].zfill(32)
print(n)
inputstr = str(n)
#inputstr = inputstr[::-1]
res = 0
index = 0
for letter in inputstr:
if letter == '1':
res += 2**index
index += 1
return res