0 表示 正 1 表示 负
原码 = 符号位+绝对值
[+1]原码 = 0000 0001 [-1]原码 = 1000 0001
正数的反码等于原码 负数在原码的基础上,符号位不变,其余为取反
[+1]原码 = 0000 0001 …… [+1]反码 = 0000 0001 [-1]原码 = 1000 0001 …… [-1]反码 = 1111 1110
正数的补码等于原码 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1]原码 = 0000 0001 …… [+1]反码 = 0000 0001……[+1]补码 = 0000 0001
[-1]原码 = 1000 0001 …… [-1]反码 = 1111 1110…… [-1]补码 = 1111 1111
在java中int占32位,如下是计算中展示的机器码。
0 = 00000000000000000000000000000000 1 = 00000000000000000000000000000001 3 = 00000000000000000000000000000011 7 = 00000000000000000000000000000111 -1 = 11111111111111111111111111111111 -3 = 11111111111111111111111111111101 -7 = 11111111111111111111111111111001正数=原码=反码=补码 比如-3的机器码是11111111111111111111111111111101
【-3】原码=10000000000000000000000000000011 【-3】反码=11111111111111111111111111111100 【-3】补码=11111111111111111111111111111101
所以我们在程序看到的【-3】的机器码是11111111111111111111111111111101 = 补码