这是为什么:
console.log("1100" ^ "0001")
=> 1101 // as expected
console.log("1100" ^ "1001")
=> 1957 // ???
请解释。谢谢。
最佳答案
这些数字被解释为十进制数。
尝试:
console.log(parseInt("1100", 2) ^ parseInt("1001", 2))
当然答案 (0101) 是以十进制 (5) 打印的。
JavaScript 标记语法支持十进制、八进制和十六进制数字,但不支持二进制。因此:
console.log(0xC0 ^ 0x09)
顺便说一句,第一个成功了,因为 1100(十进制)在与 1 异或之后是 1101(十进制)。
关于javascript - JavaScript 中的按位异或运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9956484/