-1

我一直在研究这个位明智的门。

a=0b01100001
b=0b01100010

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

>>>0b10011100

所以我想知道你将如何调整它以适用于 nand gate 和任何其他实例。

>>> bin((a ~ 0b11111111)& (b ~ 0b11111111))
SyntaxError: invalid syntax

>>> bin((a ^ 0b11111111) ~ (b ^ 0b11111111))
SyntaxError: invalid syntax

例如,不起作用。

4

1 回答 1

2

你应该从这里开始:https ://wiki.python.org/moin/BitwiseOperators

  • x << y
    返回 x ,其中位向左移动了 y 位(右侧的新位为零)。这与将 x 乘以 2**y 相同。
  • x >> y
    返回 x,其中的位向右移动了 y 位。这与 //'ing x by 2**y 相同。
  • x & y
    执行“按位与”。如果 x AND y 的对应位为 1,则输出的每一位为 1,否则为 0。
  • x | y
    执行“按位或”。如果 x AND y 的对应位为 0,则输出的每一位为 0,否则为 1。
  • ~ x
    返回 x 的补数 - 通过将每个 1 转换为 0 并将每个 0 转换为 1 得到的数字。这与 -x - 1 相同。
  • x ^ y
    执行“按位异或”。如果 y 中的该位为 0,则输出的每个位与 x 中的相应位相同,如果 y 中的该位为 1,则它是 x 中该位的补码。

根据维基百科:

函数 NAND(a1, a2, ..., an) 在逻辑上等价于 NOT(a1 AND a2 AND ... AND an)。

因此,为了对操作数abPython 进行按位 NAND 操作:

~(a & b)

您可以将其放入函数中:

bnand = lambda a, b: ~(a & b)

相应的非按位 NAND 将是:

not (a and b)

所以请确保不要混淆andand &(以及notand ~);此外,逻辑运算符是小写的。

PS另外,请确保您阅读此内容:Python:无符号 32 位按位算术

于 2013-10-06T17:28:27.943 回答