为什么没有XAND运营商?

时间:2014-03-01 19:34:17

标签: assembly language-agnostic operators logic

我想知道为什么没有XAND运营商? Wikipedia当然没有提到一个。我在this question找到了一些评论,但似乎存在广泛的分歧。我会认为XAND总是导致错误,除了假XAND错误,但是第二个想到这可能是错误的。

4 个答案:

答案 0 :(得分:6)

维基百科提到NOR,它与你称之为XAND的真值表完全相同,可能更直观的名称。 XOR中的“独占”意味着我们排除了两个输入均为true的情况。 “排他性”一词没有多大意义,因为对于一个输入组合,AND只有true,那么你会排除什么?

答案 1 :(得分:3)

我们现有的二进制操作是因为大量软件和硬件设计人员认为它们很有用。在他们有一个名字之前明确定义了他们:有人做了一个AND,因为他们需要一个二元操作,这样只有当A和B都是1时“A(操作)B”才是1,并且他们将这个操作命名为“AND”。

您的问题让我感到震惊的是,您没有为XAND提供案例,也没有明确定义它。从本质上讲,你提出了两个问题:

  • 是否有一个名为XAND的明确定义的二进制操作?
  • 假设确实有一个定义明确的XAND,它的真值表是什么?

6502,PowerPC,MIPS,AVR32或x86 / amd64指令集都没有“xand”,但它们都具有AND,OR,XOR和NOT原子操作。我所知道的具有二进制操作的语言都没有原子(如在语义上不可分割的)XAND操作。因此,第二个问题是无法回答的。关于XAND应该是什么没有达成共识,因为没有人愿意定义它让其他人使用它。

幸运的是,用我们已经拥有的四个操作来表达任何二进制操作相当容易。正如你所正确指出的那样,我们甚至可以至少摆脱异或;但我们不这样做,因为一大批人认为将其作为原子操作是有用的。

答案 2 :(得分:2)

好吧,让我们看看。在OR中我们有3个案例,其结果是1.在XOR中我们排除其中一个 -

  1. 0 xor 0 = 0
  2. 0 xor 1 = 1
  3. 1 xor 0 = 1
  4. 1 xor 1 = 0 - 被排除的案例。
  5. 在AND中我们有3个案例,结果为0.在XAND中我们排除了其中一个

    1. 0 x和0 = 1 - 排除的案例
    2. 0 x和1 = 0
    3. 1 x和0 = 0
    4. 1 xand 1 = 1
    5. 正如您所看到的,这实际上是XOR + NOT(也称为XNOR)操作。

      这些行动的代数符号是:

      OR:A + B

      AND:A.B

      XOR:A⊕B(U + 2295 CIRCLED PLUS)

      XAND:A⊙B(U + 2299 CIRCLED DOT)

答案 3 :(得分:0)

传统的名称是XNOR,它可以在TTL和CMOS芯片中找到。维基文章

wiki xnor

二进制操作的替代名称用于旧计算机,如CDC 3000系列,Univac 1100系列,.......使用RSLT表示结果操作数,使用OPR1和OPR2表示操作数:

selective set => RSLT = OPR1或OPR2

选择性补体=> RSLT = OPR1 XOR OPR2

选择性复制=> RSLT = OPR1和OPR2

selective clear => RSLT =(不是OPR1)和OPR2

选择性替代? RSLT =((不是OPR1)和RSLT)或(OPR1和OPR2)