我有一串二进制值IR =' 101010100011000000000011111111'我试图通过使用掩码执行AND来获得最左边的6位
rowIndex
但输出应该是' 0b101010000000000000000000000000'。 IR和掩码的二进制看起来很好但是一旦它们以整数格式进行AND运算,值就会发生变化。我不知道它为什么这样做。有谁知道如何获得准确的结果?
答案 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'