Back

2.5 二进制数的反码和补码

2.5.1 求二进制数的反码

◇ 改变数中的每一位以得到反码.

二进制数的反码可以通过把所有的 1 变为 0 及把所有的 0 变为 1 而得到,如下所示:

digtal2.5.1.png

利用数字电路求二进制数反码的最简单方法是使用并行反相器(“非"电路),如图2.1所示,用以变换8位二进制数.

digtal2.5.1b.png

2.5.2 求二进制数的补码

◇ 反码加 1 就可以得到补码.

二进制数的补码是通过在反码的最低有效位(LSB)上加1而获得的. $$ 补码=反码+1 $$

◇ 改变最低有效1左边的全部位求得补码.

求二进制数补码的另一种替代方法如下所示:

  1. 从右边的最低有效位开始,写下它们实际的位,包括第一个 1.
  2. 剩下的位求反码.

使用反相器和加法器可以实现二进制负数的补码,如图2.2所示.该图说明了怎样把一个8位数转换为它的补码;首先每一个位取反(取得反码),然后使用加法器电路把反码加1. digtal2.5.2.png $$ 图2.2~~~ 获得二进制负数补码的例子 $$ 为了把反码或者补码变回二进制原码(非补码),可以应用和前面描述的一样的过程.为了从反码回到二进制数原码,可以反转所有的位.为了从补码回到二进制数原码,可以先取得补码的反码,然后在最低有效位上加 1.

Licensed under CC BY-NC-SA 4.0