JavaScript中的Bitwise XOR运算符

时间:2012-03-31 13:57:18

标签: javascript bit-manipulation

为什么:

console.log("1100" ^ "0001")
=> 1101 // as expected

console.log("1100" ^ "1001")
=> 1957 // ???

请解释一下。感谢。

1 个答案:

答案 0 :(得分:11)

这些数字被解释为十进制数字。

尝试:

console.log(parseInt("1100", 2) ^ parseInt("1001", 2))

当然答案(0101)以十进制(5)打印。

JavaScript令牌语法支持十进制,八进制和十六进制数字,但不支持二进制数字。因此:

console.log(0xC0 ^ 0x09)

第一个工作,顺便说一下,因为1100(十进制)是xor之后的1101(十进制)和1。