按位NOR门 - 什么做&意思?

时间:2013-10-06 13:28:18

标签: python bit-manipulation bitwise-operators nor

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

第二名: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

有人可以解释这些吗?

1 个答案:

答案 0 :(得分:1)

NOR如何运作?

可以使用x NOR yANDOR来破解表达式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。因此,在您的情况下,只需XORa的每个位b1 NOT,即可获得 01100001 ^ 11111111 ------------ 10011110

XOR

也就是说,我们使用11111111进行1's。请注意a的数量与NOT(a) = a ^ 0b11111111 NOT(b) = b ^ 0b11111111 中的位数相同。

把它放在一起:

NOT

现在,我们获得了ab的{​​{1}},让我们做AND。那么,AND的方法是什么?只需按位&

这很简单:

NOT(a) AND NOT(b) == (a ^ 0b11111111) & (b ^ 0b11111111)