Python-左移和右移长数字会产生意想不到的结果



我有以下

a = 340282366920938463463374607431768211455
b = 127
print(a >> b)

它的值为1,但我不知道为什么。有什么建议吗?我做得对吗?结果是意料之中的吗?

具体来说,问题是:

Shift A, right by B, where:
A = 340282366920938463463374607431768211455
B = 127

这是预期的结果。340282366920938463463747431768211455是一系列128’1的位。如果你把它右移127位,其中127个"1"被删除,只剩下"1"。

如果你想看到它的作用,可以尝试使用python的bin()函数,例如

a = 340282366920938463463374607431768211455
b = 127
print(bin(a)) // '0b1111.....'
print(len(bin(a))) // 130 (including '0b', so its actually 128)
print(bin(a >> b)) // '0b1'

最新更新