-7

我试图从昨天收到的答案中理解代码:

第二:如何制作一个按位或非门
第一个:如何在 Python 中做一个按位或非门(编辑 python 数学为我工作)

a=0b01100001
b=0b01100010

bin((a ^ 0b11111111) & (b ^ 0b11111111))

我现在明白了一切,除了:

&两个值之间的

^ 11111111 (我知道那0b是基础2

有人可以解释这些吗?

4

1 回答 1

1

如何NOR运作?

表达式x NOR y可以使用ANDOR和来分解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每个位放入abwith即可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)
于 2013-10-06T13:37:43.820 回答