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

    二进制加法器

    二进制加法要解决的两个问题是,加法本位和进位,相加的操作和十进制加法非常类似。

    加法器的控制面板如下图:

    两排开关代表两个8位二进制数,一排灯泡代表加法的结果,亮代表1,不亮代表0,有9个灯泡代表相加结果可能是9位的二进制数。

    相加的规律

    进位的规律如下:

    这个结果和与门的输出结果是一样的。

    加法本位的规律如下:

    或门除了右下角的数字以外都符合结果,而与非门除了左上角的数字以外都符合结果,将相同的输入连接到或门和与非门,然后将输出再连接到与门,就能得到想要的结果:

    这个电路还有个专门的名称:异或门,简称XOR,用下列符号表示:

    半加器和全加器

    将异或门和与门连在一起计算A和B的和:

    也可以采用下列符号表示:

    这个符号被称为半加器,它描述了加法的规律,但是没有做到将进位结果纳入下一次计算。

    当计算1111+1111时,只有最右边的两个1可以用半加器来相加,当计算到倒数第二位的时候,此时实际上是三个二进制数的相加,所以此时需要做两次加法,需要将两个半加器和一个或门连接起来:

    上面的图也可以简化成一个符号:

    它被称为全加器。

    完成加法

    对比加法器的控制面板,现在可以连接电路了:

    对于最右侧的两个开关和一个灯泡,应该这样连接:

    这里的特殊之处在于最右侧不存在最开始的进位,所以在全加器的进位端接地,如果加和输出为1,那么灯泡亮,同时产生进位输出。

    对于接下来的灯泡和开关,应该这样连接:

    此时就计入了进位输入,同时产生进位输出。

    对于最后一对开关和两个灯泡应该这样连接:

    至此电路就连接完毕了。

    用下列符号代表8位二进制加法器:

    一旦有了这个单元,就可以轻松构造任何位数的二进制加法器,如16位二进制加法器:

    这种加法器有一个特点,一对数字相加的结果再次参与下一对数字的计算,以此类推,加法器的总体速度等于数字的位数乘以全加器器件的速度,这被称为行波进位,更快的加法器运用了一种被称为前置进位的电路。

    搭建一个行波进位的加法器需要144个晶体管,如果是前置进位则需要更多晶体管,但是电路会变得很小。

  • 相关阅读:
    list()
    Python 数据类型转换
    设计模式 — 代理模式(静态代理、动态代理、Cglib代理) 转载
    java线程池实现原理
    HashMap深度解析(转载) jdk1.7
    Java Serializable 序列化和反序列化 (转载)
    Java遍历HashMap并修改(remove)(转载)
    Java中的break,continue关于标签的用法(转载)
    遍历List过程中删除操作报java.util.ConcurrentModificationException错误
    java Date时间的各种转换方式和Mysql存时间类型字段的分析
  • 原文地址:https://www.cnblogs.com/yinyunmoyi/p/12724763.html
Copyright © 2011-2022 走看看