javascript - JavaScript 中的按位异或运算符

标签 javascript bit-manipulation

这是为什么:

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/

相关文章:

javascript - 使用 javascript 在字符串中搜索单词

javascript - '|' 在 JavaScript 中意味着什么?

c - 右移 float 的二进制表示 -0.0

c++ - 按位比较

javascript - 从 Worklight 获取来自 HTTP 适配器的响应

javascript - 获取div的实际宽度

javascript - 如何在不更改 html 字体大小的情况下使文本框变大?

javascript - 如何捕获在富文本编辑器 div 中输入的内容 - Quill rich editor

c++ - 将位设置为 double 并使用 g++ 的优化标志进行编译

c++ - 应用基于不同掩码的位掩码