大家好,又见面了,我是你们的朋友全栈君。
int a = 6;
~a = ?
Java中运算都是以补码进行计算的,6的原码为 00000000 00000000 00000000 00000110,正数的补码 = 反码 = 原码
所以补码也是 00000000 00000000 00000000 00000110,然后进行取反操作变成了 11111111 11111111 11111111 11111001,
计算机是以补码进行计算的,我们最终看到的是原码。
所以将得到的数值变成原码,首先因为取反后符号位变成了1,补码等于反码+1,所以反码为 11111111 11111111 11111111 11111000,原码为 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)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141741.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...