ZhouChuang's Blog ZhouChuang's Blog
首页
  • 常用命令
  • 日常总结
  • Prometheus
  • 基础
  • 常用库
专题
  • 「编码」
更多
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Zhou Chuang

为学日益 为道日损
首页
  • 常用命令
  • 日常总结
  • Prometheus
  • 基础
  • 常用库
专题
  • 「编码」
更多
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 编码-读书笔记

    • 逻辑门和加法器
      • 1. 逻辑门
        • 1.1 与门
        • 1.2 或门
        • 1.3 非门
        • 1.4 或非门
        • 1.5 与非门
        • 1.6 异或门
        • 1.7 同或门
        • 1.8 小总结
      • 2. 加法器
        • 2.1 半加器
        • 2.2 全加器
        • 2.3 八位二进制加法器
    • 如何实现减法
  • 基础
  • 编码-读书笔记
ZhouChuang
2025-02-09
目录

逻辑门和加法器

本文内容是《编码:隐匿在计算机软硬件背后的语言》的第11、12章的内容的总结。主要讲述了利用电磁继电器实现逻辑门,以及通过逻辑门实现一个8位加法器。

# 1. 逻辑门

乔治·布尔(George Boole)是19世纪英国数学家和逻辑学家,他提出了一种新的数学逻辑体系,被称为布尔代数(Boolean Algebra)。布尔代数为计算机科学和数字电路设计奠定了基础,而逻辑门则是基于布尔代数构建的物理实现。

# 1.1 与门

image-20250209230922208

真值表:

image-20250209231146974

输入都为1,输出才为1。

# 1.2 或门

image-20250209231628989

真值表:

image-20250209231700837

只要输入有个1,输出就为1。

# 1.3 非门

image-20250209231829104

真值表:

image-20250209232046166

输入和输出相反。

# 1.4 或非门

image-20250209232202105

真值表:

image-20250209232303265

或非门和或门恰好相反。

# 1.5 与非门

image-20250209232516584

真值表:

image-20250209232556793

与非门和与门恰好相反。

# 1.6 异或门

image-20250209232732241

真值表:

image-20250209232809951

异或门的输入和输出与二进制的加法相似。

# 1.7 同或门

image-20250209233025151

真值表:

image-20250209233053846

同或门:只有两个输入相同时,输出才为1。正好和异或门相反。

# 1.8 小总结

image-20250209233219170

# 2. 加法器

加法是算术运算中最基本的运算,如果想搭建一台计算机,那么首先就要造出可以计算两个数的和的器件。如果可以制造出加法器,同样我们就可以利用加法来实现减法、乘法和除法...

下面是二进制的加法表:

image-20250211221758913

我们可以将二进制相加拆分为两个数位,一个叫做加法位(sum bit),另一个叫做进位位(carry bit)。

image-20250211221950910

二进制的进位和与门的结果是一致的,可以用与门解决进位问题。

image-20250211222137592

加法位和异或门的结果是一致的,可以用异或门解决加法位的问题。

# 2.1 半加器

image-20250211222305882
image-20250211222337828

为了简化,可以采用如下方式表达:

image-20250211222441314

这个符号被称为半加器。由于半加器没有做到的是将前一次的加法可能产生的进位纳入下一次计算。所以被称为半加器。

例如:假设我们要将如下的两个二进制数相加:

image-20250211222537723

我们只能将半加器用于最右列的一列相加。对于从右面算起的第二列,由于进位位的存在,实际上需要将三个二进制数相加,而随后的每一列的加法都是这样。

# 2.2 全加器

为了将三个二进制数进行加法运算,我们需要将两个半加器和一个或门做如下连接:

image-20250211222736601

首先从最左边的第一个半加器的输入A和输入B开始,其输出是一个加和及相应的进位。这个和必须与前一列的进位输入相加,然后再把他们输入到第二个半加器中。第二个半加器的输出和是最后的结果。两个半加器的进位又被输入到一个或门中。

👆上面的图可以用下面的符号表示,它被称为全加器(Full Adder):

image-20250211223004801

以下表格总结了全加法器所有可能的输入组合以及对应的输出结果:

image-20250211223046887

# 2.3 八位二进制加法器

下面我们设想利用全加器做一个八位二进制加法器。

二进制加法器控制面板

当把两个二进制数相加时,第一列的处理方式与其他列有所不同。因为后面的几列可能有包括前面加法的进位,而第一列没有。所以全加器的进位输入端时接地的,这表示第一列的进位输入是一个0。第一列二进制数相加后可能会产生一个进位,这个进位输出是下一列加法的输入。

image-20250211223247932

对于接下来全加器和灯泡,可以按照如下方法来连接。

image-20250211223309538

第一个全加器的进位输出就是第二个全加器的进位输入。随后的每列二进制数都是以同样的方式连接。每一列的进位输出都是下一列的进位输入。

最后的第八个灯泡和最后一对开关将以下方式连接到全加器上。

最后一位

这里的最后一个进位输出被连接到了第9个灯泡上。

用另一种方式来看这8个全加器的连接,每个全加器的进位输出都作为下一个全加器的进位输入。

image-20250211223530770

下面是两种表示这个8位二进制加法器的方式:

8位二进制加法器-1
8位二进制加法器-2

既然已经实现了8位二进制数加法器,不难想到实现一个16位二进制加法器的方法:

16进制加法器

笔记

这种加法器的总体速度等于数字的位数乘以全加器器件的速度,这被称为行波进位(ripple carry,或脉冲进位)。更快的加法器运用了一个被称为“前置进位”的电路来提高运算速度。

#计算机组成原理#数字电路
上次更新: 2025/05/06, 13:52:56
如何实现减法

如何实现减法→

最近更新
01
find 命令介绍
05-06
02
交换分区的配置
04-09
03
top 命令介绍
04-08
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Zhou Chuang 版权所有| 鲁ICP备2021031629号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式