在JavaScript中模拟VBScript中的Eqv和Imp



我正在实现一种VBScript方言,并希望同样支持VBScriptEqv(逻辑等价(和Imp(逻辑蕴涵(。

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

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

这样,对于Integer,我需要将其应用于每32位。有没有一种方法可以通过JavaScript中的一些& | ^运算符来实现这一点?

从它们的位表中,Eqv看起来是";而不是xor";和CCD_ 8〃;而不是a或b";

a = 0b0011
b = 0b0101
console.log(( ~(a^b) ).toString(2))
console.log(( ~a|b   ).toString(2))

最新更新