int a = 6;
~a = ?
Java中运算都是以补码进行计算的,6的原码为 00000000 00000000 00000000 00000110,正数的补码 = 反码 = 原码
所以补码也是 00000000 00000000 00000000 00000110,然后进行取反操作变成了 11111111 11111111 11111111 11111001,
接着将得到的数值也变成补码,因为取反后符号位变成了1,所以就成了求负数的补码,负数补码 = 反码的基础上加1,反码为
10000000 00000000 00000000 00000110,补码为10000000 00000000 00000000 00000111
所以~a = -7
int a = -8
~a = ?
-8的原码为 10000000 00000000 00000000 00001000,反码为 11111111 11111111 11111111 11110111,补码为
11111111 11111111 11111111 11111000,然后对补码进行取反为 00000000 00000000 00000000 00000111,因为取反之后的数值变成了正数,所以补码也是此值
所以 ~a = 7
结论 ~n = -(n + 1)
来源:CSDN
作者:富卿尘
链接:https://blog.csdn.net/qq_36359952/article/details/104526127