Math 布尔代数中的'1 XOR 1'或'1'是不明确的吗?

Math 布尔代数中的'1 XOR 1'或'1'是不明确的吗?,math,boolean-logic,Math,Boolean Logic,使用布尔代数(不是一种特定的语言实现),我们能毫不含糊地计算1^1+1(或1xor 1或1)吗 我可以得出两个评估: [I]: (1 ^ 1) + 1 = 0 + 1 = 1 [II]: 1 ^ (1 + 1) = 1 ^ 1 = 0 也许有一些规定的操作顺序,或者从左到右的计算顺序?或者这不是在布尔代数中定义的吗?我不认为逻辑运算符有一个公认的优先顺序。计算将完全特定于一种语言。例如,在c#中,按位运算符的计算方法是: 及 异或 或 但对于另一种语言来说,这可能是不同的。如果优先级相同

使用布尔代数(不是一种特定的语言实现),我们能毫不含糊地计算
1^1+1
(或
1xor 1或1
)吗

我可以得出两个评估:

 [I]:  (1 ^ 1) + 1 = 0 + 1 = 1
[II]:  1 ^ (1 + 1) = 1 ^ 1 = 0

也许有一些规定的操作顺序,或者从左到右的计算顺序?或者这不是在布尔代数中定义的吗?

我不认为逻辑运算符有一个公认的优先顺序。计算将完全特定于一种语言。

例如,在c#中,按位运算符的计算方法是:

  • 异或

  • 但对于另一种语言来说,这可能是不同的。如果优先级相同,则从左到右执行操作。没有逻辑异或运算符,但您可以使用NOT EQUAL(!=)。

    大多数语言都会使用异或或;有经验的编码人员无论如何都会加上括号,以明确目的

    更多的现代语言进行所谓的快速或短路求值,因此
    0&?
    总是
    0
    ,所以
    不会被求值;与
    1+?
    相同,我们可以使用它来尝试计算表达式
    1xor 1或1

    现在:

    • XOR
      是从
      派生出来的,因此
      A XOR B=(-A和B)或(-B和A)
    • 关联性告诉我们,
      A或(B或C)=(A或B)或C
    • 结合性还告诉我们A和(B和C)=(A和B)和C
    因此,考虑对评估顺序的任何一种可能的解释:

      (1 XOR 1) OR 1                       1 XOR (1 OR 1)
    
    尽管我们没有定义从左到右的“评估顺序”,但我们只需要这些规则就可以证明这两种可能的解释是不等价的:

    = (¬1 AND 1) OR (¬1 AND 1) OR 1      = (¬1 AND (1 OR 1)) OR (¬(1 OR 1) AND 1)
    = (0 AND 1) OR (0 AND 1) OR 1        = (0 AND 1) OR (0 AND 1)
    = 0 OR 0 OR 1                        = 0 OR 0
    = 1                                  = 0
    
    除非我忘记了一些至关重要的公理,否则我已经确认,您需要更多的上下文来计算给定的表达式

    (当然,还要检查表达式
    A或XOR B或C
    A
    B
    C
    当然要复杂得多!但是如果表达式对于所有三个输入中的一个值都不明确,那么为什么还要检查其他值呢?)

    此上下文通常在特定于语言的求值顺序规则中提供。C型语言(Richie开始不喜欢的东西);相比之下,数学惯例中没有其他公理可以应用,并且存在歧义


    因此,基本上,由于我们忽略了特定于语言的规则,您可能会选择
    [I]

    这取决于语言的语法。阿克罗伊:不管怎样,这都是一个很好的问题。稍微整理一下。你的答案根本没有提到布尔代数。问题是明确地要求语言不可知的规则。@TomalakGeretkal:这不是一个数学论坛。如果这是一个纯粹的数学问题,那么它将不得不被问到。我假设这个问题与一般的编程有关。然而,由于对运算符的优先级没有一致的意见,我以c#为例,不管这个问题是不是关于这个主题,它还是关于布尔代数的。这并不意味着它对编程没有任何影响,但有人指出,语言不可知论的答案正在寻找中。因此,关于C#规则的答案并不恰当。同样值得注意的是,SO根本不是一个“论坛”。