我们把这两个数颠倒位置后再做一遍。在十进制中,减法题目对应于:
$$
\frac { - 2 5 3 } { 3 7 3 }
$$
而用二进制表示为:
$$
\frac { - 1 1 1 1 1 0 } { ? ? ? 2 ? 2 ? 2 }
$$
第一步用11111111减去减数,得到对1的补数:
$$
\frac { - 1 1 1 1 1 1 0 1 } { 0 0 0 0 0 1 0 }
$$
第二步,将减数对1的补数与被减数相加:
$$
\frac { 1 0 1 1 0 0 0 0 } { 1 0 1 1 0 0 1 0 }
$$
现在我们要用某种方法在结果中减去11111111。当减数小于被减数的时候,我们将结果加1再减100000000来完成计算。但是你无法在不借位的情况下做到这一点。所以,我们先用11111111减去所得结果:
$$
\frac { - 1 0 1 1 0 0 1 0 } { 0 1 0 0 1 1 0 1 }
$$
这里又一次用到了将各位取反来求得结果的方法,但是这个结果是77,而真正的答案应该是-77。
到这里,我们已经有了足够的条件来改造上一章所搭建的加法器,并让它像实现加法一样来实现减法运算。为了不让问题太复杂,这个新的加/减法器只执行在减数小于被减数的减法操作,即结果为正数的操作。
该加法器的核心是由逻辑门集成的8位全加器。
编码—隐匿在计算机软硬件背后的语言
152