和戴着面具并没有给出准确的结果

时间:2017-04-28 13:52:38

标签: python

我有一串二进制值IR =' 101010100011000000000011111111'我试图通过使用掩码执行AND来获得最左边的6位

rowIndex

但输出应该是' 0b101010000000000000000000000000'。 IR和掩码的二进制看起来很好但是一旦它们以整数格式进行AND运算,值就会发生变化。我不知道它为什么这样做。有谁知道如何获得准确的结果?

1 个答案:

答案 0 :(得分:1)

您拥有的价值是准确的结果。 63<<26的位数多于IR,因此IR将填充0以执行&

>>> len(bin(63<<26)) - 2
32
>>> len(bin(713818367)) - 2
30

您应该使用24进行左移以获得该结果:

>>> 713818367 & 63<<24
704643072
>>> bin(_)
'0b101010000000000000000000000000'