加法器的基本操作

基本单元
  • 与门(AND)

    • 全1为1,有0为0
  • 或门(OR)

    • 全0为0,有1为1
  • 非门(NOT)

    • 为1则0,为0则1
  • 异或门(XOR)

    • 两个输入端,相同为0,不同为1
  • 与非门(NADD)

    • 全1为0,有0为1
  • 或非门(NOR)

    • 全0为1,有1为0。刚好与与非门的总结规律相反
异或门和半加器(Half Adder)
  • 定义

    • 异或门就是一个最简单的整数加法,所需要使用的基本门电路,本来在代码逻辑里,只有与或非
    • 硬件层面多一个异或是方便进行加法运算,通过一个异或门计算出个位,通过一个与门计算出是否进位
    • 把两个门电路打包,给它取一个名字,就叫作半加器
    • 半加器可以解决个位加法问题
  • 公式:

    • 异或门: ((not A) and B) or (A and (not B))
  • 例子

    复制代码
     ((not 01) and 10) or (01 and (not 10))
       = (10 and 10) or (01 and 01)
       = 10 | 01
       = 11
    
    01 + 10 = 11
全加器(Full Adder)
半加器的局限
  • 半加器可以解决个位加法问题,但是如果放到二上来说,就不够用了
  • 二进制的加法,所以如果从右往左数,第二列不是十位,而称之为"二位",对应的再往左,就应该分别是四位、八位
  • 二位用一个半加器不能计算完成的原因也很简单
    • 因为二位除了一个加数和被加数之外,还需要加上来自个位的进位信号,一共需要三个数进行相加,才能得到结果
全加器的实现
  • 用两个半加器和一个或门,就能组成一个全加器

  • 第一个半加器,用和个位的加法一样的方式,得到是否进位X和对应的二个数相加后的结果Y,这样两个输出

  • 然后,把这个加和后的结果Y,和个位相加后输出的进位信息U,再连接到一个半加器上,就会再拿到一个是否进位的信息V和对应的加和后的结果W

  • 把两个半机器的进位输出,作为一个或门的输入连接起来,只要两次加法中任何一次需要进位,那么二位上,就会向左侧的四位进一位

  • 因为一共只有三个bit相加,即使3bit都是,也最多进一位

相关推荐
东风破1379 小时前
DM8达梦共享存储集群DSC搭建步骤
数据库·学习·dm达梦数据库
雪碧聊技术9 小时前
当数据库字段数大于Java实体类属性数时,MyBatis还能映射成功吗?一文详解
数据库·自动映射·mybatis映射机制·java实体类·宽容映射机制
Jetev9 小时前
如何确定SQL字段是否为空_使用IS NULL与IS NOT NULL
jvm·数据库·python
m0_7020365310 小时前
mysql如何处理不走索引的OR查询_使用UNION ALL优化重写
jvm·数据库·python
庞轩px10 小时前
第七篇:Spring扩展点——如何优雅地介入Bean的创建流程
java·后端·spring·bean·aware·扩展点
代钦塔拉10 小时前
Qt4 vs Qt5 带参数信号槽的连接方式详解
开发语言·数据库·qt
2401_8463395610 小时前
MySQL在云环境如何选择存储类型_SSD与高性能云盘配置建议
jvm·数据库·python
2601_9577808411 小时前
GPT-5.5 深度解析:2026年4月OpenAI旗舰模型的技术跨越与商业决策指南
大数据·人工智能·python·gpt·openai
zhaoyong22211 小时前
SQL如何统计每个用户的首次行为时间_MIN聚合与分组
jvm·数据库·python
一只积极向上的小咸鱼11 小时前
嵌套 Git 仓库 / gitlink / submodule 问题总结
大数据·git·elasticsearch