当前位置: 代码迷 >> 综合 >> Java取余运算
  详细解决方案

Java取余运算

热度:38   发布时间:2024-01-26 17:30:45.0

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)