【发布时间】:2022-07-19 03:52:44
【问题描述】:
例如,在 4 年前提出的一个反转位函数问题的答案中:
[reverse_Bits 函数] https://stackoverflow.com/a/50596723/19574301
代码:
def reverse_Bits(n, no_of_bits):
result = 0
for i in range(no_of_bits):
result <<= 1
result |= n & 1
n >>= 1
return result
我完全不明白如何思考这个问题。
您将实际数字 (n) 乘以 1 以检查右侧的第一个位。然后你右移这个数字加一,所以当你检查第二位是否为 0和再次,这适用于所有位。所以基本上你是添加如果实际 (?) 位中有 1,则结果为 1。在你身边左移结果,所以我了解您正在尝试将位放入正确的索引中,如果有的话,您添加它...我在这里迷路了。
我的意思是,我知道代码可以工作并且我知道如何工作,但是如果没有这个参考,我无法从零开始做,因为我不知道你是如何实现对算法的每一步的思考。
我不知道我是否解释了我的问题,或者它只是一团糟,但希望有人能帮助我!
标签: bit-manipulation bitwise-operators bit bit-shift bitmask