位掩码如何在Python中工作?

时间:2016-07-07 00:26:58

标签: python

您好我写了一个程序,看看课堂上是否有“开”,但我不太确定“开”和“关”是什么意思,以及位掩码是如何工作的。

以下是代码:

def check_bit4(input):
    mask = 0b1000
    checker = input & mask
    if checker > 0:
        return("on")
    else:
        return("off")

谢谢!

1 个答案:

答案 0 :(得分:1)

计算机用位表示整数。这是数字的二进制表示(即使用基数2)。二进制中唯一的数字是0和1,或“关闭”和“打开”。如果你不熟悉二进制文件,你应该阅读它,但基本上你用二进制数来计算:

0000
0001
0010
0011
0100
0101
0110

依此类推......每列可以用2^n表示,从0开始。所以数字0101 = 2^3*0+2^2*1+2^1*0+2^0*1 = 5。现在,当你“掩盖”某些东西时,你基本上只是在看着你的价值点。在您的情况下,您只看“2^3”位。通过简单地将每个位与掩码中的相应位相乘,可以轻松完成此操作。这对许多事情都很有用。有时我们为每个位分配含义并告诉它是打开还是关闭非常重要。

在你的例子中。如果我们通过13,这将发生:

13 means 1101 in computer speak
1101 mask with 1000.  Work on each bit individually:
1 * 1 = 1
1 * 0 = 0
0 * 0 = 0
1 * 0 = 0
checker = 1000 which means 8.
8 > 0 so return on.

使用5返回false的示例:

5 means 0101 in computer speak
0101 mask with 1000.  Work on each bit individually:
0 * 1 = 0
1 * 0 = 0
0 * 0 = 0
1 * 0 = 0
checker = 0000 which means 0.
0 is not > 0 so return off.

希望这会有所帮助。您应该能够在Google计算机上找到有关此内容的大量信息。