为什么在将真值表评估为二进制数时进行bithift?

时间:2015-06-16 21:10:15

标签: binary truthtable

this question中的最后一个答案显示二进制真值表可以表示为二进制数:

0 0 0  | 1
0 0 1  | 1
0 1 0  | 0
0 1 1  | 0
1 0 0  | 1
1 0 1  | 0 
1 1 0  | 1
1 1 1  | 0

可以由01010011表示。

也可以使用此编号评估表中的条目。

def evaluate(f, x):
    return (f & (1<<x)) != 0

f = int('01010011',2)

>>> evaluate(f,int('100',2))
True
>>> evaluate(f,int('101',2))
False

我的问题是关于答案提供的evaluate功能。为什么我们必须将这些位移一个?

1 个答案:

答案 0 :(得分:1)

你倒退了。它是由x点左移的二进制数1。

这应该是有道理的。如果您要查看表格中的第4个位置(由f表示),则必须检查f & 10000!=0

你是对的,换一个是非常随意的,没有意义。