思想:
定义变量ans保存反转之后的二进制数,默认是全0。变量mask是1,若mask与n相与为真,则n的二进制形式最后一位为1,此时ans需要和1或,使得当前为二进制为1,反之ans不变即为0。n不断左移(左移的目的是去除最后一位二进制数),直到结束。
class Solution:
# @param n, an integer
# @return an integer
def reverseBits(self, n):
ans = 0
mask = 1
for _ in range(32):
ans <<= 1
if mask & n:
ans |= 1
n >>= 1
return ans
之前我的想法是将n转换成二进制表示,然后再反转。但这是确实是麻烦了许多。以上是大佬的想法,值得好好学习!!!
本文介绍了一种高效反转32位整数二进制表示的方法。通过位运算,逐位检查并反转输入整数的二进制位,最终得到反转后的二进制数。此方法避免了转换为字符串的复杂过程,提高了算法效率。
1231

被折叠的 条评论
为什么被折叠?



