逻辑运算符优先于NAND,NOR,XNOR

时间:2011-11-17 13:22:11

标签: operators logic operator-precedence

我在网上搜索过,但我找不到解决这个问题的方法。

运营商NANDNORXNOR的逻辑优先级是什么?

我的意思是,以表达式

为例
A AND B NAND C

应首先评估哪个运营商?
显然,NAND可以翻译为NOT-ANDNORNOT-ORXNORNOT-XOR),但

(A AND B) NAND C != A AND (B NAND C) = A AND NOT(B AND C)

根据我的研究,这样的表达式没有明确的优先级,所以我认为最简单的解决方案是根据运算符在表达式中出现的顺序来评估运算符,但我可能错了。

有什么建议吗?

5 个答案:

答案 0 :(得分:3)

这实际上取决于您的precedence rules。如果没有顺序(没有优先规则或具有相同重要性的所有内容),则应该从左到右解决。 Here是C ++的一个例子。

答案 1 :(得分:1)

如果表达式的写法与问题中提到的方式类似(中间没有括号),则应按写入顺序解决。这是唯一正确的方法。 例如。如果其书面行A NOR B XOR C,则仅表示(A NOR B) XOR C

答案 2 :(得分:1)

运算符优先级必须由一种语言定义,而你在这里所拥有的内容似乎并不是一种形式语言,在这种情况下,通常假设它是从左到右阅读时进行评估。

但是,您可以使用与verilog相同的运算符优先级,或者查看wikipedia,它具有通常用于逻辑运算符的小表优先级

答案 3 :(得分:0)

我认为这可能是特定于语言的,所有运算符必须具有由特定实现定义或暗示的优先顺序。

Here是另一个网站对此的评论。

答案 4 :(得分:0)

布尔运算符在传统算术中具有类似性,因此决定优先级规则应该是什么的一种方法是遵循常规算法的规则,例如, AND类似于乘法,而OR类似于加法,因此AND应优先于OR。如果查看C或C ++等语言的运算符优先级表,您会发现这些语言和其他相关语言确实如此。