我试图从昨天收到的答案中理解代码:
第二:如何制作一个按位或非门
第一个:如何在 Python 中做一个按位或非门(编辑 python 数学为我工作)
a=0b01100001
b=0b01100010
bin((a ^ 0b11111111) & (b ^ 0b11111111))
我现在明白了一切,除了:
&两个值之间的
和^ 11111111 (我知道那0b是基础2)
有人可以解释这些吗?
我试图从昨天收到的答案中理解代码:
第二:如何制作一个按位或非门
第一个:如何在 Python 中做一个按位或非门(编辑 python 数学为我工作)
a=0b01100001
b=0b01100010
bin((a ^ 0b11111111) & (b ^ 0b11111111))
我现在明白了一切,除了:
&两个值之间的
和^ 11111111 (我知道那0b是基础2)
有人可以解释这些吗?
如何NOR运作?
表达式x NOR y可以使用AND、OR和来分解NOT:
x NOR y == NOT(x OR y) == NOT(x) AND NOT(y)
因此,对于您给定的值:
a=0b01100001
b=0b01100010
a NOR b将是NOT(a) AND NOT(b)。现在想想你会怎么做NOT(a)?你只需要翻转位。翻转位的方法是什么?一个XOR(^)。如何?
0 ^ 1 == 1
1 ^ 1 == 0
因此,使用XOR任何位1都会翻转该位。即NOT(somebit) == a XOR somebit。因此,在您的情况下,只需将XOR每个位放入a并bwith即可1获得NOT:
01100001
^ 11111111
------------
10011110
也就是说,我们做一个XORwith 11111111。请注意,数量1's与 中的位数相同a。
把它放在一起:
NOT(a) = a ^ 0b11111111
NOT(b) = b ^ 0b11111111
现在,我们得到了and的NOTs ,让我们做一个. 那么,有什么办法呢?只做一点点。abANDAND&
这很简单:
NOT(a) AND NOT(b) == (a ^ 0b11111111) & (b ^ 0b11111111)