Skip to main content
 首页 » 编程设计

python之如何制作按位或非门

2025年05月04日15zdz8207

我正在尝试理解 an answer I received earlier today 中的代码:

a=0b01100001 
b=0b01100010 
 
bin((a ^ 0b11111111) & (b ^ 0b11111111)) 

这是我的理解:

  • bin 表示结果将是二进制形式。
  • a 是通过门的进程
  • 0b 表示 base 2 形式

有人能解释一下其余的吗?我对 11111111 感到困惑。 & 是和门(混淆了为什么这将两者分开)。您将如何更改它以适用于任何其他门,例如XOR、NAND 还是……?

请您参考如下方法:

a ^ 0b11111111      #exclusive or's each bit in a with 1, inverting each bit 
 
>>> a=0b01100001 
>>> bin(a ^ 0b11111111) 
'0b10011110'  
 
>>> bin((a ^ 0b11111111) & (b ^ 0b11111111)) 
'0b10011100' 

这与使用 ~ 运算符不同,因为 ~ 返回负二进制结果。

>>> bin(~a & ~b) 
'-0b1100100 

原因是 ~ 运算符反转了用于表示数字的所有位,包括通常不显示的前导 0,从而导致 2 的补码负结果。通过使用 ^ 和 8 位二进制掩码,只有前 8 位被反转。