JavaScript 按位非 ~ 不会产生相同的结果

JavaScript bitwise NOT ~ doesn't produce same result

我正在尝试翻转 JavaScript 中数字的二进制位。根据这些文档 (https://www.w3schools.com/js/js_bitwise.asp),按位非运算符 (~) 应该可以完成这项工作。他们有一个例子,其中 ~ 5 产生 10。但是当我自己尝试时,~5 产生 -6。

console.log(~5) // -6

我做错了什么?

如果您在网站 (https://www.w3schools.com) 上向下滚动一点,您会找到以下信息(正如 axiac 已经写的那样):

The examples above uses 4 bits unsigned binary numbers. Because of this ~ 5 returns 10.

Since JavaScript uses 32 bits signed integers, it will not return 10. It will return -6.

00000000000000000000000000000101 (5)

11111111111111111111111111111010 (~5 = -6)

A signed integer uses the leftmost bit as the minus sign.

所以你没有做错什么


var x = 5;
document.getElementById("output").innerHTML=~5;
<div id="output"></div>