您好我写了一个程序,看看课堂上是否有“开”,但我不太确定“开”和“关”是什么意思,以及位掩码是如何工作的。
以下是代码:
def check_bit4(input):
mask = 0b1000
checker = input & mask
if checker > 0:
return("on")
else:
return("off")
谢谢!
答案 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计算机上找到有关此内容的大量信息。