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根本不是一个“论坛”。