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>
我正在尝试翻转 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>