使用Python反转数字中的位

2024-09-27 23:15:48 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题涉及leetcodequestion对32位无符号整数的位进行反转

我尝试了以下代码:

class Solution:
    # @param n, an integer
    # @return an integer
    def reverseBits(self, n):
    
        result = 0
        BITMASK = 1

        for i in range(32):

            temp = n & BITMASK

            result = result | temp

            n = n >> 1
            
            result = result << 1

        return result

我尝试的策略是将数字的最后一位按位加上1,然后按位或按结果加上它。然后,数字右移1以删除最后一位,结果左移为下一位结果腾出空间。代码没有生成正确的结果。有人能帮我理解如何修复这个代码吗?谢谢


Tags: 代码anreturnparamdef符号数字整数
1条回答
网友
1楼 · 发布于 2024-09-27 23:15:48

试试这个

class Solution:
    def reverseBits(self, n: int) -> int:
        bitmask = 1
        result = 0
        
        for i in range(31):
            temp = n & bitmask
            result = result | temp
            n = n>>1
            result = result<<1

        temp = n & bitmask
        result = result | temp
        return result

最重要的是,当你的代码运行了32次之后,最后它再次改变了产生错误的结果,我们需要运行代码31次,并在and和OR的最后一步将其保持在循环之外

相关问题 更多 >

    热门问题