python最低有效6位整数

时间:2017-11-22 10:45:59

标签: python bit-shift

我正在尝试找到16位整数的最低6位。假设我的整数是139 / 0x008B。

>>> "{0:b}".format(139)
'10001011'

所以最不重要的6位是:

'001011'
>>> int('001011', 2)
11

然而,我认为我可以使用>>运营商,但这并没有给我我的期望:

>>> 139 >> 6
2

有人可以解释这两者之间的区别吗?

2 个答案:

答案 0 :(得分:1)

移位用于重新定位位,而不是用于隔离它们。这称为“屏蔽”,在您的情况下,您需要一个“和”与您的号码相关的位掩码。这是通过Python中的& -operator完成的。它与逻辑“和” - 操作符根本不同,所以不要混淆它们!

>>> bin(139 & 0b111111)
'0b1011'

答案 1 :(得分:0)

我想你可能想要使用逐位'和'运算符(&)而不是右移运算符(>>)。

请尝试以下操作:139 & 0b111111

这应该给你6个最低有效位。