JavaScript按位非';我不能产生同样的结果
我试图在JavaScript中翻转数字的二进制位。根据这些文档(),按位NOT运算符(~)应该完成这项工作。他们有一个例子,5产生10。但当我自己尝试时,~5产生-6 控制台日志(~5)/-6JavaScript按位非';我不能产生同样的结果,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
我做错了什么?如果在网站()上向下滚动一点,您会发现以下信息(正如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。”