“血”案…
记录下java中的取反操作符~是如何运算的.
要了解的理论
- 在Java中,所有数据的表示方式都是以补码形式来表示
- 正数:符号为0 , 原码、反码、补码相同
- 负数:符号位为1
- 补码 = 反码 + 1
实战取反流程
步骤解析 :
- 先表示出当前数值的补码
- 求出该值的原码
- 进行取反操作得到答案的原码
- 将答案原码转成补码即可
举例说明 :
~4 = -5 过程分析
-
表示出4的补码
4的补码: 00000000 00000000 00000000 00000100
因为正数的 补码=原码=反码 所以补码即原码
-
对4的原码取反
得到答案的原码 : 11111111 11111111 11111111 11111011
-
将答案原码转成补码 :
通过原码得到反码 : 10000000 00000000 00000000 00000100
补码 = 反码 + 1 :
10000000 00000000 00000000 00000101
得到值 : -5
~-3 = 2过程分析
-
表示出-3
-3的补码 : 10000000 00000000 00000000 00000011
-3的反码 = 补码-1 : 10000000 00000000 00000000 00000010
-3的原码 = 11111111 11111111 11111111 11111101
-
对-3的原码取反操作
得到答案的原码 : 00000000 00000000 00000000 00000010
因为首位是0 , 所以是正数 , 原码 = 反码 = 补码
答案是2