我试图从昨天收到的答案中理解代码:
第二:如何制作一个按位或非门
第一个:如何在 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
并b
with即可1
获得NOT
:
01100001
^ 11111111
------------
10011110
也就是说,我们做一个XOR
with 11111111
。请注意,数量1's
与 中的位数相同a
。
把它放在一起:
NOT(a) = a ^ 0b11111111
NOT(b) = b ^ 0b11111111
现在,我们得到了and的NOT
s ,让我们做一个. 那么,有什么办法呢?只做一点点。a
b
AND
AND
&
这很简单:
NOT(a) AND NOT(b) == (a ^ 0b11111111) & (b ^ 0b11111111)