首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS:为什么~10 (二进制,~1010) = -11 (二进制,-1011)?

JS:为什么~10 (二进制,~1010) = -11 (二进制,-1011)?
EN

Stack Overflow用户
提问于 2014-08-01 00:13:45
回答 1查看 433关注 0票数 0

在Javascript中,如果对十进制整数10执行按位不操作的操作:

代码语言:javascript
复制
~10

我期望它按位计算,而不是在二进制整数上计算,如下所示:

代码语言:javascript
复制
~1010 = 0101

换句话说,我期望十进制整数5。相反,这个运算给我-11。(在您的控制台中尝试)

代码语言:javascript
复制
~10 = -11

如果我通过将-11和~10看作二进制整数字符串来更显式地检查这一点,那么:

代码语言:javascript
复制
parseInt(~10,10).toString(2)
"-1011"

parseInt(-11,10).toString(2)
"-1011"

一致的。但我不明白。有人能解释一下为什么吗?我猜这和标志有关。

编辑:我发现了这个问题发布后,它也帮助我更好地理解这一现象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-01 00:16:29

Javascript中的按位运算符将这个数字处理为32位。所以10是

代码语言:javascript
复制
00000000 00000000 00000000 00001010

当你倒置它的时候,结果是:

代码语言:javascript
复制
11111111 11111111 11111111 11110101

当解释为32位有符号的数字时,是-11 (如果你不明白为什么,可以在二补上阅读维基百科的条目)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25070962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档