您好,我编写了一个程序来查看类里面某个位是否“打开”,但我不太确定“打开”和“关闭”意味着什么,以及位掩码如何工作。
代码如下:
def check_bit4(input):
mask = 0b1000
checker = input & mask
if checker > 0:
return("on")
else:
return("off")
谢谢!
最佳答案
计算机用位来表示整数。这是数字的二进制表示形式(即使用基数 2)。二进制中唯一的数字是 0 和 1,或者“关”和“开”。如果您不熟悉二进制,您应该阅读它,但基本上您可以这样计算二进制:
0000
0001
0010
0011
0100
0101
0110
依此类推...每一列都可以用从0开始的2^n
表示。所以数字0101 = 2^3*0+2^2*1+2 ^1*0+2^0*1 = 5
。现在,当您“位屏蔽”某些东西时,您基本上只是在查看对您有值(value)的位。在您的情况下,您只查看“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 机器上找到有关此内容的大量信息。
关于python - 位掩码在 Python 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38235892/