zoukankan      html  css  js  c++  java
  • 硬件03:二进制减法器

    在减法中没有进位,而有借位,这是一种完全不同的机制。

    要完成的减法器控制面板如下:

    当总开关向下的时候代表执行减法,开关代表数据,灯泡带结果,如果最左边的第9个灯泡发光代表结果是负数。

    消除借位

    借位很复杂,但是我们可以避免出现借位。

    以十进制为例,如计算253-176,可以将计算简化为:
    $$
    253+(999-176)+1-1000
    $$
    这样就不会产生任何的借位了。

    如果是减数大于被减数的情况,如176-253,可以将计算结果简化为:
    $$
    (999-253)+176-999
    $$
    这里的最后一步922-999本质上也没有出现借位,只是结果是负数而已。

    二进制的减法的技巧与十进制的相同。

    完成减法

    在简化计算方法中一个常见的运算是用全1的二进制数减去减数,结果相当于对减数每位都取反。取反可以简单的给每个位加上一个反向器来解决,但是新的机器要求既能做加法又能做减法,所以需要一个灵活切换的机制,下列电路可以实现:

    在这个电路中,取反的信号会被传递到每一个异或门中,然后输出。当取反的信号是0,输入是01100001,那么输出就不变,还是01100001,因为0和任何数异或结果都是那个数。如果取反的信号是1,那么输出则会被反置为10011110.

    这个电路可以被简化为如下符号,它被称为求补器:

    再进一步,就可以组成新的能做减法的机器:

    这个电路是由一个8位二进制加法器和一个异或门连接起来的,SUB信号代表加减法转换开关,当SUB为0时代表加法,为1代表减法。在减法中,首先通过求补电路将减数取反,而且进位输入1使得结果加1,如果加1后产生进位,此时说明A-B等于正数,不产生下溢。

    上面这个部件还不能表示结果是负数,只能在正数时出现正确结果,因为如果是负数的话,还需要在输出端再经过一次取反才行。

  • 相关阅读:
    bugku细心地大象
    【学术篇】一些水的不行的dp
    【笔记篇】莫队算法(一)
    【学术篇】luogu1351 [NOIP2014提高组] 联合权值
    【学术篇】网络流24题——方格取数加强版
    【学术篇】SDOI2009 SuperGCD
    【学术篇】网络流24题——方格取数问题
    【模板篇】A* 寻路算法
    【模板篇】k短路 SDOI2010 魔法猪学院
    【学术篇】SDOI2009 最优图像
  • 原文地址:https://www.cnblogs.com/yinyunmoyi/p/12724849.html
Copyright © 2011-2022 走看看