对于正数 先按位取反(包括符号位) ,再求补
对于负数 先求补码 (负数的补码取反+1) ,再按位取反(包括符号位)
(1)
~-3 = ?
-3取反
32位int
10000000000000000000000000000011 java中的 -3
先求补码 (负数的补码,符号位为1,其余各位是对原码取反再+1)
11111111111111111111111111111101
再按位取反(包括符号位)
00000000000000000000000000000010 2
(2)
~3取反
00000000000000000000000000000011 java中的 3
11111111111111111111111111111100 先按位取反(包括符号位)
再求补(负数的补码,符号位为1,其余各位是对原码取反,然后再+1)
10000000000000000000000000000100
10000000000000000000000000000100 -4
总结:
原数+1,符号位取反
对于负数 先求补码 (负数的补码取反+1) ,再按位取反(包括符号位)
(1)
~-3 = ?
-3取反
32位int
10000000000000000000000000000011 java中的 -3
先求补码 (负数的补码,符号位为1,其余各位是对原码取反再+1)
11111111111111111111111111111101
再按位取反(包括符号位)
00000000000000000000000000000010 2
(2)
~3取反
00000000000000000000000000000011 java中的 3
11111111111111111111111111111100 先按位取反(包括符号位)
再求补(负数的补码,符号位为1,其余各位是对原码取反,然后再+1)
10000000000000000000000000000100
10000000000000000000000000000100 -4
总结:
原数+1,符号位取反