【问题标题】:bitwise NOR Gate - what does & mean? [duplicate]按位或非门 - & 是什么意思? [复制]
【发布时间】:2013-10-06 13:28:17
【问题描述】:

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

第二名:How to make a bitwise NOR gate
第一名: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

有人可以解释一下吗?

【问题讨论】:

  • 请附上上一个问题的链接,这样大家就不用去找了。
  • 更好 - 在这个问题中包含代码。
  • 请不要每次都发布新问题,而是添加评论以解释不清楚的地方,以便我改进答案。现在,我们对同一件事有 3 个问题,一团糟。

标签: python bit-manipulation bitwise-operators nor


【解决方案1】:

NOR 的工作原理是什么?

表达式x NOR y 可以使用ANDORNOT 来分解:

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

因此,使用1 获取任何位的XOR 将翻转该位。即NOT(somebit) == a XOR somebit。因此,在您的情况下,只需将ab 中的每个位取一个XOR1 即可获得NOT

   01100001
^  11111111
------------
   10011110

也就是说,我们用11111111 做一个XOR。注意1's的个数和a的位数一样。

放在一起:

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

现在,我们得到了abNOTs,让我们做一个AND。那么,AND 的方法是什么?只需按位执行&

这很简单:

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

【讨论】:

    猜你喜欢
    • 2011-09-17
    • 2012-04-01
    • 1970-01-01
    • 2019-09-12
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 2015-07-15
    相关资源
    最近更新 更多