为什么使用补码?

存放signed类型的存储单元中,最左边第一位表示符号位,为0表示是正数,为1表示是负数。

计算机用补码的形式在存放整数的值。

正数的补码就是该二进制数本身,负数的补码要操作三步:

  1. 先取得该数的绝对值的二进制形式
  2. 再将第1步的值按位取反
  3. 最后将第2步的值加1

补码的发明是为了表示带符号数(整型)。

例如,假如 3 表示为 00000011,负数 -3 表示为 10000011,那么它们相加 3 - 3 结果是 10000110,不等于 00000000,就奇怪了。
那么补码的出现,负数 -3 的二进制除了最左边第一位的其他位按位取反得到 11111100,在 +1 得到 11111101。那么 3 - 3 相加就是 100000000,左边第一位溢出,自动舍弃就剩下 00000000了。

原文地址:https://www.cnblogs.com/xrszff/p/11681046.html