Roy*_*mir 9 javascript bit-manipulation
二进制补码方法 - 生成-(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是从哪里来的?
Ale*_*øld 16
首先,您需要意识到这~是按位翻转运算符,它与否定运算符不同-.~只执行按位翻转,但是否定运算符-按位翻转并添加一个(对于整数).
正如你所解释的那样,如果你想从一个正数n来-n使用二补码方法,你按位翻转/不是n并加上1.~n只是按位而不是意味着~n=-n-1.
例如:
5 = 0000 0101
Flipped (~5) = 1111 1010
Run Code Online (Sandbox Code Playgroud)
那么,哪个数字1111 1010代表什么?由于第一个数字是1,我们知道它是负值.要找到哪个值,请执行
-(flip(1111 1010) + 1) =
-(0000 0101 + 1)
-(0000 0110) =
-6
Run Code Online (Sandbox Code Playgroud)
~5 = -(5 + 1) = -6
到现在为止还挺好.然而,~不是二者的补充,它是二元反演算子.
5 = 0000 0101
flip : 1111 1010
Run Code Online (Sandbox Code Playgroud)
这是-6
那清楚了吗?
| 归档时间: |
|
| 查看次数: |
10586 次 |
| 最近记录: |