我正在实现一种VBScript方言,并希望同样支持VBScriptEqv
(逻辑等价(和Imp
(逻辑蕴涵(。
当Eqv
/Imp
具有数字操作数时,它们执行逐位比较。虽然我可以一点一点地模拟他们的行为,但肯定有比这更有效的方法。例如,我可以从JavaScript中这样做Eqv
,给定两个整数x和y:
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))