2011-11-17 41 views
5

我搜索了网页,但是我找不到解决此问题的方法。逻辑运算符优先于NAND,NOR,XNOR

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

我的意思是,考虑到如实施例哪个操作员应首先计算的表达式

A AND B NAND C 


显然NAND可以翻译为NOT-AND(如NORNOT-ORXNORNOT-XOR),但

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

根据我的研究,有没有这样的表达式定义的优先级,所以我觉得最简单的解决方法是根据它们在表达式中出现的顺序来评估操作员,但我可能是错的。

有什么建议吗?

回答

3

一张小桌子优先这实际上取决于你的precedence rules。如果没有秩序(没有优先规则或者同样重要的东西),它应该从左到右解决。 Here是C++的一个例子。

1

如果表达式的写法与问题中提及的方式相同(中间没有括号),则应按照它们写入的顺序来解决。这是做到这一点的唯一正确方法。 例如。如果其书面线A NOR B XOR C,它只是意味着(A NOR B) XOR C

0

运算符优先级必须由语言来定义,似乎你这里有什么不成为一个正式的语言,在这种情况下,它经常假设被评估为你从左至右阅读。

虽然,你可以使用相同的运算符优先级的verilog,或看wikipedia其中有常用的逻辑运算符

0

我想这可能是语言特定的,所有操作符必须具有由特定实现定义或暗示的优先顺序。其他网站不得不说的是,

0

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