二进制补码方法 - 生成-(x + 1).
例如,当JavaScript遇到Tilde时,他使用这种方法:
~5 = -(5+1) = -6.
Run Code Online (Sandbox Code Playgroud)
很好 - 让我们更深入.
现在让我们来谈谈Two's补充方法.
5 = 0000 0101
Flip = 1111 1010
add one = 1111 1011
Run Code Online (Sandbox Code Playgroud)
所以1111 1011是-5.
怎么样 ?
再次:翻转:
0000 0100
Run Code Online (Sandbox Code Playgroud)
添加一个:
0000 0101
Run Code Online (Sandbox Code Playgroud)
它就是这样-5.
那么这又如何解决 ~5=-6?
这-6是从哪里来的?
我a=255=>1111 1111在否定之后有一个int
,即~a=10000 0000=>-64
不是它0000 0000=>0
基本上想要~255 to 0用8位二进制格式,即
1111 1111 to 0000 0000没有使它为负.