源码,反码和补码的形式

以下三种码都是二进制码

  • **源码:**符号位+真值的绝对值。符号位0表示正数,1表示负数。
  • **反码:**正数时,反码=源码;负数时,反码=源码的符号位不变,其余位按位取反
  • **补码:**正数时,补码=源码;负数时,补码=反码+1

计算机为什么用补码保存数字

因为用补码可以使用加法器完成加法和减法运算。
下面这张表格可以辅助理解,这里用三位二进制来分析:

三位二进制数 源码表示的数字 反码表示的数字 补码表示的数字
000 +0 +0 +0
001 +1 +1 +1
010 +2 +2 +2
011 +3 +3 +3
100 -0 -3 -4
101 -1 -2 -3
110 -2 -1 -2
111 -3 -0 -1

从上表可得,做加法时,使用反码时可以直接用二进制按位进行加法运算获得结果