首先要知道在java中没有无符号位的,第一个是属于符号位0代表正,1代表负
一.我们要先得到的原码,正数的原码就是反码和补码,计算机计算的时候是使用补码的
二.然后进行运算,然后我们看的是原码,所以我们需要转成原码,负数的补码转成反码需要-1
反码转成原码需要取反但是符号位不动
如果是负数转的时候从原码开始转反码符号位不动其他位取反,就得到了反码,但是计算机需要的是补码,反码转补码+1在参与运算
~8= 00000000 00000000 00000000 00001000 8的原码
00000000 00000000 00000000 00001000 8的补码
11111111 11111111 11111111 11110111 8的取反的补码
11111111 11111111 11111111 11110110 8的取反的反码
10000000 00000000 00000000 00001001 8的原码
~-4=10000000 00000000 00000000 00000100 原码
11111111 11111111 11111111 11111011 反码
11111111 11111111 11111111 11111100 补码
00000000 00000000 00000000 00000011 取反
00000000 00000000 00000000 00000011原码
~4= 00000000 00000000 00000000 00000100 4的源码
00000000 00000000 00000000 00000100 4的补码
11111111 11111111 11111111 11111011 4取反的补码
11111111 11111111 11111111 11111010 反码
10000000 00000000 00000000 00000101 4取反原码