Javascript波浪号和二的补码

标签 javascript bit-manipulation

Two's complement method - 生成 -(x + 1)

例如,当 JavaScript 遇到波浪号时,他使用这种方法:

~5 = -(5+1) = -6.

好 - 让我们更深入。

现在让我们谈谈二进制补码方法。

5        = 0000 0101
Flip     = 1111 1010
add one  = 1111 1011

所以 1111 1011-5

如何?

再次:翻转:

0000 0100 

加一个:

0000 0101

所以它是 -5

那么 ~5=-6 如何解决?

这个 -6 来自哪里?

最佳答案

首先你要明白~是按位翻转运算符,它和取反运算符-是不一样的。 ~ 只进行按位翻转,但取反运算符 - 进行按位翻转并加一(对于整数)。

正如您所解释的,如果您想使用双补法从正数 n-n,您可以按位翻转/非 n 并加 1 . ~n 只是按位表示 ~n=-n-1

例如:

5               = 0000 0101
Flipped (~5)    = 1111 1010

那么,1111 1010 代表哪个数字呢?由于第一个数字是 1,我们知道它是一个负值。要找到哪个值,请执行

-(flip(1111 1010) + 1) =
-(0000 0101 + 1)
-(0000 0110) =
-6

关于Javascript波浪号和二的补码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12337360/

相关文章:

javascript - 使用 $.get 调用文件时 socket.io 事件不起作用

javascript - 在视频上方设置过滤器

algorithm - 从每个间隔中找到 1 个数字,使得所有的 OR 等于 X

java - 将 4 个整数包装在 64 位长中 - java 按位

C 位操作逻辑(bitAnd)

javascript - 分割忽略正则表达式的一部分

javascript - Angular Js - 打印具有特定键的数组

javascript - Google Picker => 如何下载文件

bit-manipulation - APL中的按位运算?

java - 从 Int 中获取 n 个最低有效位