在二进制码中,为了区分正负数,采用最高位是符号位的方法来区分,(符号-绝对值 编码系统)

  • 正数的符号位为0
  • 负数的符号位为1

剩下的就是这个数的绝对值,可以采用原码、反码、补码3种形式来表示绝对值部分。

原码

原码最简单,也最好理解。原码就是绝对值的二进制数形式:

  • +7的8位二进制原码是00000111
  • -7的8位二进制原码是10000111

但对于二进制运算而言,原码的运算不够方便,当两个数相加时,先要判断这两个数的符号是否相同,符号不同的话,还要判断哪一个数的绝对值更大。所以在计算机中,通常都是采用补码形式。

补码

正整数的补码与原码形式相同,例如+7的8位二进制补码是00000111;

而负整数的补码则可以求其反码
👉将这个负整数的绝对值求反,连同符号位1一起表示(符号位不变)。

反码再在末位加1就得到了补码。

例如-7的8位二进制补码:将-7的绝对值7求反加1得1111001,连同符号位1一起就是11111001。 +13和-13的8位二进制补码:

  • +13d=00001101
  • -13d=11110011

补码的作用:

比如,一个小孩,很小的。他只认识 100 个数,也不会做减法。
那么,减一,就可以告诉他,用加 99 代替:
  36 - 1 = 35
  36 + 99 = (1) 35
忽略进位,结果不是一样的吗?
99、-1,互为补数。补码,也就是二进制的补数。

  • 255(1111 1111),就是-1 的补码;
  • 254(1111 1110),就是-2 的补码;

总结补码的作用:

  1. 0的表示唯一
  2. 符号位可作为数值加入运算
  3. 补码运算的结果仍然为补码 ( 要转为原码:符号位不动,数值位求反+1)