原码和补码

为什么要引入补码?

通俗来讲,在计算机中使用原码进行计算,不好用。

使用补码的优势:

先以原码表示法,来体验一下。

二进制原码表示法

假设有 3 位 bit ,则能表示的所有状态为共有 8 中:

000 用来表示 0

把其余 0 开头的用来表示正数:

把 1 开头的用来表示负数:

缺点之一:是 000100 都用来表示十进制数 0,其中 100 即负态的零。

  000   (表示 +0)
+ 100   (表示 -0)
------
  100 (表示 -0)

缺点之二,是计算结果不正确。

  010   (表示 +2)
+ 101   (表示 -1)
------
  111 (表示 -3)

二进制补码表示法

0 和正数的表示不变

000 用来表示 0

把其余 0 开头的用来表示正数:

负数的表示需要做出一些改变,改变的核心有两点:

  1. 消除负态零
  2. 保证计算结果正确

把 1 开头的用来表示负数:

由于把 1 开头的 4 中状态,分别用来表示 -1 ~ -4,负态零的问题得到了解决。

关于计算结果是否正确,如下:

  010   (表示 +2)
+ 101   (表示 -3)
------
  111 (表示 -1)

可以看到计算结果正确。

如何快速的计算补码表示的十进制数

101 可以拆分为 100001,把它们加起来就能得到它所表示的十进制数,即 -4 + 1 = -3