-2
的补充是100000 ... 01
-2
的补充是1000000 ... 10
-2 >>> 1
根据>>>
定义左侧移位0
应该是01000......1
,为什么变成0111111..11
?
答案 0 :(得分:10)
为了生成2
(即-2
表示)的两个补码表示,您从2
的表示开始,翻转其所有位,并将1
添加到结果中:
00000000000000000000000000000010 -- This is 2
11111111111111111111111111111101 -- This the inverse of 2
11111111111111111111111111111110 -- This is the inverse of 2, plus 1
-2
的二进制表示形式为11111111111111111111111111111110
(demo)。
将其向右移动一个没有符号扩展的产生
01111111111111111111111111111111
这正是你得到的结果。