关于运算符:什么是XAND和XOR

What are XAND and XOR

什么是XAND和XOR?也有一个XNot


XOR是互斥或的缩写。它是一个逻辑二进制运算符,要求两个操作数之一为true,但不是两个都为真。

因此这些陈述是正确的:

1
2
TRUE XOR FALSE
FALSE XOR TRUE

这些语句是错误的:

1
2
FALSE XOR FALSE
TRUE XOR TRUE

实际上并没有所谓的" exclusive and"(或XAND),因为从理论上讲,它与XOR具有完全相同的要求。因为NOT是一元运算符,它会否定其单个操作数(基本上只是将布尔值翻转为相反的值),因此也没有XNOT,因此它不支持任何排他性概念。


伙计们,别吓others别人(嘿!开个玩笑),但这真的是等价和同义词的问题:

首先:

" XAND"在逻辑上不存在," XNAND"也不在逻辑上,但是" XAND"通常是由一个勤奋好学的人想到的,但却使初学者很困惑。(哇!)。从这样的思想出发,如果存在一个XOR(异或),则存在一个" XAND"("异" AND)逻辑是合理的。合理的建议是" IAND"("包含" AND),也不会使用或识别。因此:

1
 XNOR <=> !XOR <=> EQV

所有这一切都描述了一个唯一的运算符,称为等价运算符(<=>,EQV)这样:

1
2
3
4
5
6
A  |  B  | A <=> B | A XAND B | A XNOR B | A !XOR B | ((NOT(A) AND B)AND(A AND NOT(B)))
---------------------------------------------------------------------------------------
T  |  T  |    T    |     T    |     T    |     T    |                T    
T  |  F  |    F    |     F    |     F    |     F    |                F    
F  |  T  |    F    |     F    |     F    |     F    |                F    
F  |  F  |    T    |     T    |     T    |     T    |                T

最后一个注释:仅当基本运算符不是一元时,才可能使用'X'前缀。因此,XNOR <=> NOT XOR <= / => X NOR。

和平。


XOR是"异或"。这意味着"被异或的两个项目之一是正确的,但不是两个都正确。"

1
2
3
4
TRUE XOR TRUE : FALSE
TRUE XOR FALSE : TRUE
FALSE XOR TRUE : TRUE
FALSE XOR FALSE: FALSE

维基百科的异或文章

我没有听说过的XAND。


在查尔斯·皮佐德(Charles Petzold)写的《密码》一书中,他说有6个大门。有"与"逻辑门,"或"门,"或非"门,"与非"门和"异或"门。他还提到第六个门,简称为"巧合门",并暗示它并不经常使用。他说,它的输出与XOR门相反,因为当XOR门具有两个等式或两个等式时,其输出为" false",而XOR门的输出为true的唯一方法是:等式的一侧为真,另一侧为假,哪一个都无关紧要。巧合与此正好相反,因为如果同时出现一个巧合,而另一个巧合则为假(与哪个无关紧要),那么在这两种情况下,巧合门的输出均为"假"。巧合门使其输出为" true"的方式是双方均为false或true。如果两者均为假,则巧合门将评估为真。如果两者都为真,那么在这种情况下,巧合门也将输出"真"。

因此,在XOR门输出" false"的情况下,巧合门将输出" true"。并且在XOR门将输出" true"的情况下,巧合门将输出" false"。


嗯..我知道XOR(异或)以及NAND和NOR。这些是逻辑门,具有其软件类似物。

从本质上讲,它们的行为如下:

仅当两个参数之一为true时,XOR才为true,但两个参数都不为真。

1
2
3
4
F XOR F = F
F XOR T = T
T XOR F = T
T XOR T = F

只要两个参数都不为真,则NAND为真。

1
2
3
4
F NAND F = T
F NAND T = T
T NAND F = T
T NAND T = F

仅当两个参数都不为真时,NOR才为真。

1
2
3
4
F NOR F = T
F NOR T = F
T NOR F = F
T NOR T = F

有一个简单的参数可以使用已经出现的真值表来查看二进制逻辑门的来源。

有六个表示可交换运算,其中op b == b op a。每个二进制运算符都有一个定义它的关联的三列真值表。可以为所有运算符的定义表固定前两列。

考虑第三列。它是四个二进制数字的序列。有十六种组合,但是可交换性的约束有效地从真值表中删除了一行,因此只有八种。因为所有的真相或错误都不是有用的门,所以又敲了两个。这些是熟悉的or,and,xor以及它们的取反。


没有Xand或Xnot之类的东西。有Nand,与and

相反

1
2
3
4
5
6
7
8
9
10
TRUE and TRUE   : TRUE
TRUE and FALSE  : FALSE
FALSE and TRUE  : FALSE
FALSE and FALSE : FALSE


TRUE nand TRUE   : FALSE
TRUE nand FALSE  : TRUE
FALSE nand TRUE  : TRUE
FALSE nand FALSE : TRUE


此外,由于我只是在处理它,如果您正在寻找"等价门"或"巧合门"作为XAND,那么您真正拥有的只是"等式"。

考虑一下,从上方进行异或:

1
2
3
4
F XOR F = F
F XOR T = T
T XOR F = T
T XOR T = F

我们希望XAND为:

1
2
3
4
F XAND F = T
F XAND T = F
T XAND F = F
T XAND T = T

这不完全一样吗?

1
2
3
4
F == F = T
F == T = F
T == F = F
T == T = T


在大多数情况下,您不会在编程中找到Xand,Xor或nand Logical运算符,但不要担心在大多数情况下您可以使用其他运算符对其进行仿真。

由于您未指定任何特定语言。我也不会做任何特定的语言。对于我的示例,我们将使用以下变量。

A = 3
B = 5
C = 7

对于代码,我将其放在代码标签中以使其更容易查看我所做的事情,我还将按照逻辑说明整个过程,以显示最终结果。

NAND

也称为Not And,可以使用Not运算符(通常表示为!)轻松地进行模拟。

您可以执行以下操作

if(!((A>B) && (B<C)))

if (!(F&&T))
if(!(F))
If(T)

在上面的示例中,这是正确的,因为双方都不正确。从而给我们理想的结果
Nand

NOR

也称为Not OR,就像NAND一样,我们可以使用not运算符对其进行仿真。
if(!((A>B) || (B<C)))

if (!(F||T))
if(!(T))
if(F)

这将再次为我们带来理想的结果
Nor

异或

异或或异或仅在一个为TRUE而另一个为FALSE时才为真。

If (!(A > C && B > A) && (A > C || B > A) )

If (!(F && T) && (F || T) )
If (!(F) && (T) )
If (T && T )
If (T)

因此,这是一个仅适用于1或另一个为true的示例,我将说明如果两个均为true,则它将为false。

If ( !(A < C && B > A) && (A < C || B > A) )

If ( !(T && T) && (T ||T) )
If ( !(T) && (T) )
If ( F && T )
If (F)

而且都是假的

If (!(A > C && B < A) && (A > C || B < A) )

If (!(F && F) && (F || F) )
If (!(F) && (F) )
If (T && F )
If (F)

和图片来帮助
XOR

XAND

最后是我们的"与",仅当双方均为假或双方均为真时,此方法才返回true。当然,您可以将其称为非XOR(NXOR)

均为真
If ( (A < C && B > A) || !(A < C || B > A) )

If ((T&&T) || !(T||T))
IF (T || !T)
If (T || F)
IF (T)

都是错误的
If ( (A > C && B < A) || !(A > C || B < A) )

If ( (F && F) || !(F ||F))
If ( F || !F)
If ( F || T)
If (T)

最后一个为1,另一个为false。
If ((A > C && B > A) || !(A > C || B > A) )

If ((F && T) || ! (F || T) )
If (F||!(T))
If (F||F)
If (F)

或者如果您想走NXOR路线...

If (!(!(A > C && B > A) && (A > C || B > A)))

If (!(!(F && T) && (F || T)) )
If (!(!(F) && (T)) )
If (!(T && T) )
If (!(T))
If (F)

enter


Wiki上的真相表阐明了http://en.wikipedia.org/wiki/Logic_gate
没有XAND,这就是合法性问题的第1部分的结尾。
[重点是没有它你总是可以做的。]

我个人将XNOT(也不存在)误认为是NAND和NOR,从理论上讲,这是使所有其他门链接所需的唯一操作

我相信造成混淆的原因是您可以使用NAND或NOR(创建其他所有内容[但不需要一起使用]),因此可以认为NAND和NOR在一起是一回事,留下了剩余的未使用名称XNOT,这就是我错误地称呼XNOT的意思,这意味着它是NAND或NOR。

我想人们也可能在快速讨论中错误地尝试像我使用XNOT一样使用XAND,指的是"一个单一的门(以各种方式复制)使所有其他门"成为现实。


XOR(不是同时也不是不是)B'0110'是反逻辑
IFF(如果且仅当)为B'1001'的(双)。


您正在寻找的是:
https://zh.wikipedia.org/wiki/XNOR_gate

这是逻辑表:

1
2
3
4
5
A B   XOR XNOR
0 0   0   1
0 1   1   0
1 0   1   0
1 1   0   1

XNOR有时称为XAND。


众所周知,XOR定义是奇校验功能。
对于两个输入:

A XOR B =(A AND NOT B)或(B AND NOT A)

XOR的补码为XNOR

A XNOR B =(A AND B)或(NOT AND NOT B)

此后,定义为

的常规两输入XAND

A XAND B = A AND NOT B

补码是XNAND:

A XNAND B = B或非A

此XAND定义的一个很好的结果是,任何双输入二进制函数都可以使用不超过一个的逻辑函数或门来简洁地表示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
            +---+---+---+---+
   If A is: | 1 | 0 | 1 | 0 |
  and B is: | 1 | 1 | 0 | 0 |
            +---+---+---+---+
    Then:        yields:    
+-----------+---+---+---+---+
| FALSE     | 0 | 0 | 0 | 0 |
| A NOR B   | 0 | 0 | 0 | 1 |
| A XAND B  | 0 | 0 | 1 | 0 |
| NOT B     | 0 | 0 | 1 | 1 |
| B XAND A  | 0 | 1 | 0 | 0 |
| NOT A     | 0 | 1 | 0 | 1 |
| A XOR B   | 0 | 1 | 1 | 0 |
| A NAND B  | 0 | 1 | 1 | 1 |
| A AND B   | 1 | 0 | 0 | 0 |
| A XNOR B  | 1 | 0 | 0 | 1 |
| A         | 1 | 0 | 1 | 0 |
| B XNAND A | 1 | 0 | 1 | 1 |
| B         | 1 | 1 | 0 | 0 |
| A XNAND B | 1 | 1 | 0 | 1 |
| A OR B    | 1 | 1 | 1 | 0 |
| TRUE      | 1 | 1 | 1 | 1 |
+-----------+---+---+---+---+

请注意,XAND和XNAND缺乏自反性。

如果我们添加编号的"异与"对应于它们对应的最小项,则此XNAND定义是可扩展的。然后,XAND必须具有ceil(lg(n))或更多输入,未使用的msb均为零。除非在其他类型的上下文中使用,否则通常的XAND类型均不带数字。

各种XAND或XNAND门可用于解码。

XOR也可以扩展为任意数量的位。如果1的数量为奇数,则结果为1;如果为偶数,则结果为0。如果对XOR的任何输入或输出位进行补码,则该功能将变为XNOR,反之亦然。

我没有看到XNOT的定义,我将提出一个定义:

让它与高阻抗(Z,无信号或可能为空值的布尔类型Object)相关。

1
2
3
4
0xnot 0 = Z
0xnot 1 = Z
1xnot 0 = 1
1xnot 1 = 0


看看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
x   y      A    B   C   D   E   F   G   H   I   J   K   L   M   N

?·   ?·      T    ?·   T   ?·   T   ?·   T   ?·   T   ?·   T   ?·   T   ?·
?·   T      ?·    T   T   ?·   ?·   T   T   ?·   ?·   T   T   ?·   ?·   T
T   ?·      ?·    ?·   ?·   T   T   T   T   ?·   ?·   ?·   ?·   T   T   T
T   T      ?·    ?·   ?·   ?·   ?·   ?·   ?·   T   T   T   T   T   T   T

A) !(x OR y)    
B) !(x) AND y  
C) !(x)
D) x AND !(y)  
E) !(y)
F) x XOR y  
G) !(x AND y)  
H) x AND y  
I) !(x XOR y)  
J) y    
K) !(x) OR y    
L) x    
M) x OR !(y)    
N) x OR y

首先是逻辑,然后是名称,可能是在以前的命名中使用的模式。

因此0 0 = 0; 0 1 = 1; 1 0 = 1; 1 1 = 1-由于某种原因,这称为OR。

然后0-0 = 0; 0-1 = 1; 1-0 = 1; 1-1 = 0-看起来像OR,除了...让我们称之为XOR。

也为0 * 0 = 0; 0 * 1 = 0; 1 * 0 = 0; 1 * 1 = 1-由于某种原因,这称为AND。

然后0?0 = 0; 0?1 = 0; 1?0 = 0; 1?1 = 0-看起来像AND,除了...我们称之为XAND。


XOR的行为类似于Austin解释的那样,作为异或,是A或B,但不能同时为两者,并且都不产生false。

由于真值表由4种组合组成,因此两个输入有16种可能的逻辑运算符,因此有16种可能的方式来排列两个布尔参数和相应的输出。

根据维基百科的文章,它们都有自己的名字。


OMG,确实存在XAND门。我父亲正在上技术课,并且有一个XAND门。人们说OR和AND都是完全相反的,因此他们将其扩展为异或逻辑:

XOR: One or another, but not both.

Xand: One and another, but not both.

这是不正确的。如果要从XOR更改为XAND,则必须翻转" AND"和" OR"的每个实例:

XOR: One or another, but not both.

XAND: One and another, but not one.

因此,当且仅当两个输入相等时(无论输入是0/0还是1/1),XAND才为true