我正试图从昨天收到的答案中理解代码:
第二名:How to make a bitwise NOR gate
第1名:How to do a bitwise NOR Gate in Python (editing python maths to work for me)
a=0b01100001
b=0b01100010
bin((a ^ 0b11111111) & (b ^ 0b11111111))
我现在明白了一切,除了:
两个值之间的&
和^ 11111111
(我知道0b
是基础2
)
有人可以解释这些吗?
答案 0 :(得分:1)
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}}取为1
将会翻转该位。即NOT(somebit) == a XOR somebit
。因此,在您的情况下,只需XOR
中a
的每个位b
和1
NOT
,即可获得 01100001
^ 11111111
------------
10011110
:
XOR
也就是说,我们使用11111111
进行1's
。请注意a
的数量与NOT(a) = a ^ 0b11111111
NOT(b) = b ^ 0b11111111
中的位数相同。
把它放在一起:
NOT
现在,我们获得了a
和b
的{{1}},让我们做AND
。那么,AND
的方法是什么?只需按位&
。
这很简单:
NOT(a) AND NOT(b) == (a ^ 0b11111111) & (b ^ 0b11111111)