根据维基百科,按位与运算符的优先级高于按位或。然而 Wolfram 说它们是等价的。以下两个表达式等价吗?
C & A | B
C & (A | B)
我的想法是一样的,因为我相信 |和 & 具有相同的优先级,因此我们只从左到右计算。
理论上,任何语言或逻辑系统都可以决定其运算符的优先级。然而,在我熟悉的所有语言中,按位(和逻辑,就此而言)AND 的优先级高于 OR。
鉴于&和|是基本运算符,最重要的是,(a & b) | c = d 并不意味着 a & (b | c) =d,似乎任何真正的语言都不太可能不定义它们的相对优先级。
如果您给 Wolfram Alpha '|' '&' 会将其转换为按位函数,如 BitAnd(x,y) 和 BitOr(x,y)。二元运算符的表达式是二义性的,但它可以变成不二义性的函数。
示例:
1 & 2 | 3
将变为 BitOr[BitAnd[1,2],3]
,并且只有一种方法来评估这些函数。正如上述评论者指出的,Alpha 将 & 放在 | 上方优先。
链接:http://www.wolframalpha.com/input/?i=1+%26+2+%7C+3
有趣的是,翻译二元运算符“|”的功能并且 '&' 似乎是 未记录,因为它没有出现在任何标准 Wolfram 操作符指南中。
参考1:https://reference.wolfram.com/language/tutorial/OperatorInputForms.html
参考2:http://reference.wolfram.com/language/guide/BitwiseOperations.html
其他语言的按位运算符的一些示例,高->低
参考资料: