首页 文章

为什么Javascript将数字视为二进制补码

提问于
浏览
3

以下是为什么 ~5 等于 -6 来自here的解释:

5 = 0000 0101翻转(~5)= 1111 1010那么,1111 1010代表哪个数字?由于第一个数字是1,我们知道它是负值 . 要找到哪个值,请执行 - (flip(1111 1010)1)= - (0000 0101 1) - (0000 0110)= -6

我想知道为什么Javascript将 ~5 的结果视为二进制补码形式的数字?

我的困惑源于这样一个事实:如果我在控制台中编写 0b11111010 ,它的评估值为250,而不是-6

1 回答

  • 5

    因为这就是Javascript如何表示二进制中的负数 . Docs

    所有位运算符的操作数都以二进制补码格式转换为带符号的32位整数 . 二进制补码格式意味着数字的负对应(例如5对-5)是所有数字的位被反转(按位数而不是数字,a.k.a . 的数字补码)加1 .

相关问题