首先说明一下,正数的原码、反码和补码都是一样的,即原码=反码=补码
所以接下来我们主要说负数的原码、反码和补码之间的关系
1.原码
原码就是符号位加上真值的绝对值,即用第一位(最高位)表示符号,其余位表示值。比如:
1的原码 00000000000000000000000000000001
5的原码 00000000000000000000000000000101
-1的原码 10000000000000000000000000000001
2.反码(对负数)
反码等于原码符号位不变,其余位取反(即0变1,1变0)
-3 原码 10000000000000000000000000000011
反码 11111111111111111111111111111100
-21 原码 10000000000000000000000000010101
反码 11111111111111111111111111101010
3.补码(对负数)
补码=反码+1
-3 原码 10000000000000000000000000000011
反码 11111111111111111111111111111100
补码 11111111111111111111111111111101
-21 原码 10000000000000000000000000010101
反码 11111111111111111111111111101010
补码 11111111111111111111111111101011
4.运算
计算机在进行计算时,是补码之间进行运算,最终以原码表示结果。
如2 +(-5)= -3的运算
2的原码 00000000000000000000000000000010
反码 00000000000000000000000000000010
补码 00000000000000000000000000000010
-5的原码 10000000000000000000000000000101
反码 11111111111111111111111111111010
补码 11111111111111111111111111111011
2+(-5)的运算(补码之间)
00000000000000000000000000000010 (2的补码)
11111111111111111111111111111011 (-5的补码)
结果 11111111111111111111111111111101 (2-5的补码形式)
11111111111111111111111111111100 (2-5的补码-1得到反码)
10000000000000000000000000000011 (2-5的反码符号位不变,其余位取反得到原码)
10000000000000000000000000000011 等于-3(原码表示的就是最终运算结果)