在 JavaScript 中从 VBScript 模拟 Eqv 和 Imp

Simulate Eqv and Imp from VBScript in JavaScript

我正在实现 VBScript 方言并希望同样支持 VBScript Eqv (logical equivalence) and Imp(逻辑含义)。

Eqv/Imp有数字操作数时,它们执行按位比较。虽然我可以一点一点地模拟他们的行为,但肯定有比这更有效的方法。例如,给定两个整数 xy:[=19,我可以像这样从 JavaScript 做 Eqv =]

let bit1 = x & 1 == 0 ? (y & 1 == 0 ? 1 : 0) : y & 1 == 0 ? 0 : 1;
let r = bit1 | otherBits;

这样,对于整数,我需要为每 32 位应用一次。有没有办法只用 JavaScript 中的一些 & | ^ 运算符来做到这一点?

从他们的位表来看,Eqv 似乎是“非异或”,Imp “不是 a 或 b”

a = 0b0011
b = 0b0101

console.log(( ~(a^b) ).toString(2))
console.log(( ~a|b   ).toString(2))