我正在Javascript中为布尔逻辑编写一个分流码算法,而且我遇到了操作顺序。我允许的操作是:
and, or, implies, equals(biconditional), not, xor, nor, nand
但是,我不知道这些优先级是什么。截至目前,我有:
not>equals>implies>xor>nor>nand>or>and
这是对的吗?我可以使用任何标准,类似于数字的PEMDAS / BODMAS系统吗?
答案 0 :(得分:2)
您很难找到JavaScript运算符优先级的定义的原因是:
和&
或|
暗示→
等于(双条件)↔
不! xor⊕
也不是 nand⊼
Jeffrey D. Ullman的"Foundations of Computer Science"
逻辑运算符的相关性和优先级
我们将使用的优先顺序是
1.不(最高)
2. NAND
3. NOR
4.和
5.或
6.含义
7. BICONDITIONAL(最低)
NOT
和
NAND
XOR
OR
NOR
等效
IMPLIES
答案 1 :(得分:0)
似乎没有标准。
我有一本书(Digital design by Morris Mano),上面写着NOT>AND>OR
。这是一个被接受的意见。
关于其他人,我发现很少有意见。
This guy认为EQUIV
是最低的(Wikipedia assist)。但是this guy认为EQUIV
位于中间XOR>EQUIV>OR
(很少有引用)。
另一个不同意见是关于XOR
的地方。这里this third guy同意第二个人:)
简而言之,有两种观点:
1)NOT>AND>NAND>XOR>EQUIV>OR>NOR
(忽略NOR
)
2)NOT>AND>NAND>NOR>OR>IMPLIES>XOR>EQUIV
注意:只有NOT>AND>OR
部分才能获得学术认证。