Python 按位或非门-什么是&;什么意思?

Python 按位或非门-什么是&;什么意思?,python,bit-manipulation,bitwise-operators,nor,Python,Bit Manipulation,Bitwise Operators,Nor,我试图从昨天收到的一个答案中理解代码: 第二名: 第一: 我现在什么都懂了,除了: 两个值之间的和 还有^11111111(我知道0b是base2) 有人能解释一下这些吗?或是如何工作的? 表达式x或y可以使用和、或和而不是进行分解: x NOR y == NOT(x OR y) == NOT(x) AND NOT(y) 01100001 ^ 11111111 ------------ 10011110 因此,对于给定的值: a=0b01100001 b=0b01100010

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

第二名:
第一:

我现在什么都懂了,除了:

两个值之间的

还有
^11111111
(我知道
0b
是base
2


有人能解释一下这些吗?

是如何工作的?

表达式
x或y
可以使用
而不是
进行分解:

x NOR y == NOT(x OR y) == NOT(x) AND NOT(y)
   01100001
^  11111111
------------
   10011110
因此,对于给定的值:

a=0b01100001
b=0b01100010
a或b
将是
非(a)和非(b)
。现在想想你会怎么做一个
而不是(a)
?你只需要把这些东西翻过来就行了。什么是翻转位的方法?异或(^)
。怎么做

0 ^ 1 == 1
1 ^ 1 == 0
因此,对具有
1
的任何位进行
XOR
将翻转该位。i、 e.
NOT(somebit)==XOR somebit
。因此,在您的情况下,只需对
a
b
中的每个位进行
XOR
,使用
1
将得到
而不是

x NOR y == NOT(x OR y) == NOT(x) AND NOT(y)
   01100001
^  11111111
------------
   10011110
也就是说,我们使用
11111111
执行一个
XOR
。注意
1的位数
a中的位数相同

把它放在一起:

NOT(a) = a ^ 0b11111111
NOT(b) = b ^ 0b11111111
现在,我们得到了
a
b
而不是
s,让我们做一个
。那么,做
的方法是什么?只需按位执行
&

这很简单:

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

请包含上一个问题的链接,这样其他人就不必去寻找了。更好的是,在这个问题中包含代码。它已经解释过了,而不是每次都发布一个新的问题,请添加一条注释来解释不清楚的地方,这样我可以改进我的答案。现在,我们对同一件事有三个问题,一团乱。