Chinapul.com 下载 第13章如何实现减法 在你确信继电器可以连接起来以构成二进制加法器后,你可能会问:“减法器如何实现 呢?”本章将会为你解答这个问题,且提出这个问题也表明你有了一定的理解力。减法和加 法在某些方面是互为补充的,但两种计算的机制不同。加法从最右边一列向最左边一列计算 每一列的进位都加到下一列中去。减法不用进位,相反,要用到借位一一种本质上与加法 不同的机制 例如,让我们看一道典型的不断借位的减法题目: 253 176 ? 要做这道题,从最右边一列开始。首先,6比3大,所以需要从5借1,这样就变成了13减6, 结果是7。由于从5借了1,5就变成了4,4比7小,所以继续从2借1,14减7等于7。2被借1后成 为1,1减1为0,所以最后结果是77 253 176 77 如何用逻辑门来实现这看似不合常理的逻辑呢? 我们不会直接用这种方法,代替的是用一个小技巧,使不通过借位来实现减法。这会是 一个使大家都满意的好办法。详细地了解减法的完成是很有用的,因为它和用二进制编码在 计算机中存储负数的机制有很大联系 解释这样的工作,需要清楚地指明两个操作数,即减数和被减数。减数从被减数中 掉后,结果是二者之差: 被减数 差 要想不借位,首先将减数从999中减去: 999 176 823 这里用999是因为操作数是3位,如果是4位数,就用9999。把一个数从一串9中减去得到 的结果称为9的补数或补码。176的9的补数是823,反之,823的9的补数是176。这样做的好处 在于,无论减数是什么,计算9的补数永远不需要借位 在计算出减数的9的补数之后,把它加到原来的被减数上
下载 第13章 如何实现减法 在你确信继电器可以连接起来以构成二进制加法器后,你可能会问:“减法器如何实现 呢?”本章将会为你解答这个问题,且提出这个问题也表明你有了一定的理解力。减法和加 法在某些方面是互为补充的,但两种计算的机制不同。加法从最右边一列向最左边一列计算, 每一列的进位都加到下一列中去。减法不用进位,相反,要用到借位—一种本质上与加法 不同的机制。 例如,让我们看一道典型的不断借位的减法题目: 2 5 3 - 1 7 6 ? ? ? 要做这道题,从最右边一列开始。首先,6比3大,所以需要从5借1,这样就变成了1 3减6, 结果是7。由于从5借了1,5就变成了4,4比7小,所以继续从2借1,1 4减7等于7。2被借1后成 为1,1减1为0,所以最后结果是7 7: 2 5 3 -1 7 6 7 7 如何用逻辑门来实现这看似不合常理的逻辑呢? 我们不会直接用这种方法,代替的是用一个小技巧,使不通过借位来实现减法。这会是 一个使大家都满意的好办法。详细地了解减法的完成是很有用的,因为它和用二进制编码在 计算机中存储负数的机制有很大联系。 为解释这样的工作,需要清楚地指明两个操作数,即减数和被减数。减数从被减数中去 掉后,结果是二者之差: 被减数 - 减数 差 要想不借位,首先将减数从 9 9 9中减去: 9 9 9 -1 7 6 8 2 3 这里用9 9 9是因为操作数是 3位,如果是4位数,就用9 9 9 9。把一个数从一串 9中减去得到 的结果称为9的补数或补码。1 7 6的9的补数是8 2 3,反之,8 2 3的9的补数是1 7 6。这样做的好处 在于,无论减数是什么,计算 9的补数永远不需要借位。 在计算出减数的9的补数之后,把它加到原来的被减数上:
104 编码的奥秘 Chinapub coM 下载 253 1076 最后,你再加1并且减去1000 1076 这样就得到结果了。答案和以前一样,且你根本不用借位。 这是什么原理呢?原来的减法题目是 表达式加一个数再减同一个数得到的结果是一样的。所以先加上1000,再减去1000 253-176+1000-1000 这个式子等同于下面的式子: 253-176+999+1-1000 再按如下方式重新组合 253+ (999-176)+1-1000 这与前面描述过的用9的补数进行的计算是一致的。虽然用了两个减法和两个加法来代替 个减法,但是也因此省去了讨厌的借位。 但是,如果减数比被减数大怎么办呢?例如如下计算 76 253 通常情况下,你看到这个式子后可能会说:“减数比被减数大只需交换两数位置,再做减 法,然后给结果取个相反数。”于是你在脑子里交换了它们的位置,并求出了答案 77 要省去借位来做这道题和前面的例子有所不同。首先你要求出253的9的补数,即 53 746 再把该补数和原来的被减数相加 176 922
2 5 3 + 8 2 3 1 0 7 6 最后,你再加1并且减去1 0 0 0: 1 0 7 6 + 1 - 1 0 0 0 7 7 这样就得到结果了。答案和以前一样,且你根本不用借位。 这是什么原理呢?原来的减法题目是: 2 5 3-1 7 6 表达式加一个数再减同一个数得到的结果是一样的。所以先加上 1 0 0 0,再减去1 0 0 0: 2 5 3-176 + 1000-1 0 0 0 这个式子等同于下面的式子: 2 5 3-176 + 999 + 1-1 0 0 0 再按如下方式重新组合: 2 5 3 +(9 9 9 - 1 7 6)+ 1-1 0 0 0 这与前面描述过的用 9的补数进行的计算是一致的。虽然用了两个减法和两个加法来代替 一个减法,但是也因此省去了讨厌的借位。 但是,如果减数比被减数大怎么办呢?例如如下计算: 1 7 6 - 2 5 3 ? ? ? 通常情况下,你看到这个式子后可能会说:“减数比被减数大只需交换两数位置,再做减 法,然后给结果取个相反数。”于是你在脑子里交换了它们的位置,并求出了答案: 1 7 6 -2 5 3 -7 7 要省去借位来做这道题和前面的例子有所不同。首先你要求出 2 5 3的9的补数,即 9 9 9 -2 5 3 7 4 6 再把该补数和原来的被减数相加: 1 7 6 + 7 4 6 9 2 2 104 编码的奥秘 下载
Chinapub cOM 第章如何实现减法105 下载 这时候,按照上一道题的步骤,你应该对其加1再减去1000,但在本题中,这种方法不会 生效。如果你还按这种步骤做,就需要从923中减去1000,这又导致了借位 既然实际上前面已经加了999,这里再减去999 922 999 当做到这一步时,可看出结果是个负数,故需要交换两数位置,不过这样再做减法时已 不需要借位,答案如预期所料 999 同样的方法可用于二进制数减法,而且会比十进制数减法来得简单。让我们看看该如何做。 原来的减法题目是 253 当把这些数转化为二进制数时,问题变成: 11111101 10110000 ??????? 步骤1用111去减数 11111101 10110000 01001111 当计算十进制数减法时,减数是从一串9中减去,得到称为9的补数的结果。对于二进制 数减法,减数从一串1中减去,差称为1的补数。但请注意,求1的补数实际上并不需要做减法 因为1的补数中,原来的0变成1,原来的1变成0,所以,1的补数有时也称为相反数或反码 (你是否还记得第1章中反向器的作用是把0变成1,把1变成0。) 骤2把步骤1中求得的补数和被减数相加: l1111101 +01001111 101001100 骤3对结果加1: 101001100 10100110 步骤4减去100000000(256)
这时候,按照上一道题的步骤,你应该对其加 1再减去1 0 0 0,但在本题中,这种方法不会 生效。如果你还按这种步骤做,就需要从 9 2 3中减去1 0 0 0,这又导致了借位。 既然实际上前面已经加了9 9 9,这里再减去9 9 9: 9 2 2 -9 9 9 ? ? ? 当做到这一步时,可看出结果是个负数,故需要交换两数位置,不过这样再做减法时已 不需要借位,答案如预期所料: 9 2 2 -9 9 9 - 7 7 同样的方法可用于二进制数减法,而且会比十进制数减法来得简单。让我们看看该如何做。 原来的减法题目是: 2 5 3 -1 7 6 ? ? ? 当把这些数转化为二进制数时,问题变成: 11111101 -10110000 ???????? 步骤1 用11111111减去减数: 1 1 1 1 1 1 0 1 - 1 0 1 1 0 0 0 0 01 0 0 1 1 1 1 当计算十进制数减法时,减数是从一串 9中减去,得到称为 9的补数的结果。对于二进制 数减法,减数从一串1中减去,差称为1的补数。但请注意,求1的补数实际上并不需要做减法, 因为1的补数中,原来的 0变成1,原来的1变成0,所以,1的补数有时也称为相反数或反码。 (你是否还记得第11章中反向器的作用是把0变成1,把1变成0。) 步骤2 把步骤1中求得的补数和被减数相加: 1 1 1 1 1 1 0 1 + 0 1 0 0 1 1 1 1 1 0 1 0 0 1 1 0 0 步骤3 对结果加1: 1 0 1 0 0 1 1 0 0 + 1 1 0 1 0 0 1 1 0 1 步骤4 减去1 0 0 0 0 0 0 0 0(2 5 6): 第13章 如何实现减法 105 下载
106编的 下载 101001101 100000000 1001101 该结果就是十进制数77 现在把两数颠倒位置后再做一遍。在十进制中,减法题目对应于 而在二进制中,即是: 10110000 11111101 步骤1从1111减去减数。得到补数 11111101 00000010 步骤2把步骤1中的补数和被减数相加 10110000 +00000010 现在,11111112须再从结果中减掉。当减数比被减数小时,可以通过先加1再减去 100000000达到此目的。但现在这样做却会用到借位。所以,我们先用1111去步骤2 中的结果 10110010 01001101 这实际上是对步骤2中得到的结果取反。最后的结果是77,而真正的答案应该是-77 现在,已经可以改进加法机使它既能执行加法操作亦能执行减法操作。为使简便起见 这个加减法机只执行被减数大于减数的减法操作,即差为正数的操作。 该加法机的核心部件是由逻辑门集成的8位全加器 A输入 B输入 8位加法器 进位输出 和输出
1 0 1 0 0 1 1 0 1 - 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 该结果就是十进制数7 7。 现在把两数颠倒位置后再做一遍。在十进制中,减法题目对应于: 1 7 6 -2 5 3 ? ? ? 而在二进制中,即是: 1 0 1 1 0 0 0 0 - 1 1 1 1 1 1 0 1 ? ? ? ? ? ? ? ? 步骤1 从11111111中减去减数。得到补数: 1 1 1 1 1 1 1 1 - 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 步骤2 把步骤1中的补数和被减数相加: 1 0 1 1 0 0 0 0 + 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 现在, 11111111必须再从结果中减掉。当减数比被减数小时,可以通过先加 1再减去 1 0 0 0 0 0 0 0 0来达到此目的。但现在这样做却会用到借位。所以,我们先用 11111111减去步骤2 中的结果: 1 1 1 1 1 1 1 1 -1 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 这实际上是对步骤2中得到的结果取反。最后的结果是 7 7,而真正的答案应该是-7 7。 现在,已经可以改进加法机使它既能执行加法操作亦能执行减法操作。为使简便起见, 这个加/减法机只执行被减数大于减数的减法操作,即差为正数的操作。 该加法机的核心部件是由逻辑门集成的 8位全加器: 106 编码的奥秘 下载 A输入 B输入 8位加法器 和输出 进位输入 进位输出
Chinaopub.com 第章如何实法107 下载 前面讲过输入A~A及B~B,连接到开关上,用于表示8位操作数。进位输入端接地。 S。~S,连接8个灯泡,用于表示加法的和。由于和可能会是9位数,进位输出端也连了一个 控制面板如下图所示: :.0:m4.40. +0:0T:4:.4:。0 ⊙⊙ 上图中,开关被设为183(或10110111)和22(或00010110),产生的结果是205或 l100101)。用于加/减法的新的控制面板有一点儿修改,它包含了一个用于选择做加法还是做 减法的额外开关 如法、山 山 如图所示,当这个开关向下时表示选择加法运算,反之是选择减法运算。此外,只有最 右边的8个灯泡用于表示结果,第九个灯泡用来标识上溢/下溢,它指明了一个不能用8个灯泡 表示的数。当加法操作得到的和大于255(称为上溢)或减法计算中出现一个负数(下溢)时 这个灯泡就会亮。减数比被减数大时,结果就是一个负数。 这个加法机主要增加了一个求8位二进制数的补数的电路。由于一个数的补数就是取其每 位的相反数,所以这个电路看起来很简单,就是8个反向器而已 输入 该电路存在一个问题,就是它不分情况地对输入求反。我们需要一台既能做加法又能做 的机器,而此电路只有做减法时才取反。对它进行一下改进,如下图所示:
第13章 如何实现减法 107 下载 前面讲过输入 A0~A7及B0~B7连接到开关上,用于表示 8位操作数。进位输入端接地。 S0~S7连接 8个灯泡,用于表示加法的和。由于和可能会是 9位数,进位输出端也连了一个 灯泡。 控制面板如下图所示: 上图中,开关被设为 1 8 3(或 1 0 11 0 111)和 2 2(或 0 0 0 1 0 11 0),产生的结果是 2 0 5或 11 0 0 11 0 1 )。用于加/减法的新的控制面板有一点儿修改,它包含了一个用于选择做加法还是做 减法的额外开关。 如图所示,当这个开关向下时表示选择加法运算,反之是选择减法运算。此外,只有最 右边的8个灯泡用于表示结果,第九个灯泡用来标识上溢 /下溢,它指明了一个不能用 8个灯泡 表示的数。当加法操作得到的和大于 2 5 5(称为上溢)或减法计算中出现一个负数(下溢)时, 这个灯泡就会亮。减数比被减数大时,结果就是一个负数。 这个加法机主要增加了一个求 8位二进制数的补数的电路。由于一个数的补数就是取其每 一位的相反数,所以这个电路看起来很简单,就是 8个反向器而已。 该电路存在一个问题,就是它不分情况地对输入求反。我们需要一台既能做加法又能做 减法的机器,而此电路只有做减法时才取反。对它进行一下改进,如下图所示: 减法 加法 上溢 下溢 输入 输出