Java取余运算

风流意气都作罢 提交于 2020-02-27 09:32:27

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)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!