Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript按位非';我不能产生同样的结果_Javascript_Bitwise Operators - Fatal编程技术网

JavaScript按位非';我不能产生同样的结果

JavaScript按位非';我不能产生同样的结果,javascript,bitwise-operators,Javascript,Bitwise Operators,我试图在JavaScript中翻转数字的二进制位。根据这些文档(),按位NOT运算符(~)应该完成这项工作。他们有一个例子,5产生10。但当我自己尝试时,~5产生-6 控制台日志(~5)/-6 我做错了什么?如果在网站()上向下滚动一点,您会发现以下信息(正如axiac所写): 上面的示例使用4位无符号二进制数。因为 这个~5返回10 由于JavaScript使用32位有符号整数,因此它不会返回10。 它将返回-6 000000000000000000000000101(5) 111111111

我试图在JavaScript中翻转数字的二进制位。根据这些文档(),按位NOT运算符(~)应该完成这项工作。他们有一个例子,5产生10。但当我自己尝试时,~5产生-6

控制台日志(~5)/-6


我做错了什么?

如果在网站()上向下滚动一点,您会发现以下信息(正如axiac所写):

上面的示例使用4位无符号二进制数。因为 这个~5返回10

由于JavaScript使用32位有符号整数,因此它不会返回10。 它将返回-6

000000000000000000000000101(5)

11111111111111111010(~5=-6)

有符号整数使用最左边的位作为减号

所以你没有做错任何事。


var x=5;
document.getElementById(“输出”).innerHTML=~5

~5
实际上是
-6
。您得到了正确的答案。您所指的示例使用4位无符号数字。在使用32位或64位有符号数字的现实世界中,
~5
-6
,您可以从同一页上的其他示例中看到这一点。然而,由于页面没有提到它使用的是4位无符号数字,这是一种误导。为了找到更好的教程,有很多问题可以证明w3schools是低质量信息的来源。我喜欢甚至有一个黄色的大框,上面写着:“因为这个~5返回10。”