计算机组成 -- 加法器
基本门电路
- 基本门电路:输入都是两个单独的bit,输出是一个单独的bit
- 如果要对2个8bit的数字,计算与或非的简单逻辑(无进位),只需要连续摆放8个开关,来代表一个8bit数字
- 这样的两组开关,从左到右,上下单个的位开关之间,都统一用『与门』或者『或门』连起来
- 就能实现两个8bit数的AND运算或者OR运算
异或门 + 半加器
一bit加法
- 个位
- 输入的两位为
00
和11
,对应的输出为0
- 输入的两位为
10
和01
,对应的输出为1
- 上面两种关系都是异或门(XOR)的功能
- 异或门是一个最简单的整数加法,所需要使用的基本门电路
- 输入的两位为
- 进位
- 输入的两位为
11
时,需要向更左侧的一位进行进位,对应一个与门
- 输入的两位为
- 通过一个异或门计算出个位,通过一个与门计算出是否进位
- 把这两个门电路打包,叫作半加器(Half Adder)
全加器
- 半加器只能解决一bit加法的问题,不能解决2bit或以上的加法(因为有进位信号)
- 二进制加法的竖式,从右往左,第二列称为二位,第三列称为四位,第四列称为八位
- 全加器:两个半加器和一个或门
- 把两个半加器的进位输出,作为一个或门的输入
- 只要两次加法中任何一次需要进位,那么在二位上,就需要向左侧的四位进一位
- 一共只有三个bit相加,即使都是1,也最多只会进一位
- 把两个半加器的进位输出,作为一个或门的输入
8bit加法
- 把8个全加器串联,个位全加器的进位信号作为二位全加器的输入信号,二位全加器的进位信号作为四位全加器的输入信号
- 个位全加器只需要用到一个半加器,或者让全加器的进位输入始终是0,因为个位没有来自更右侧的进位
- 最左侧的进位信号,表示的并不是再进一位,而是表示加法是否溢出
- 该溢出信号可以输出到硬件中的其它标志位,让计算机知道计算结果是否溢出
分层思想
门电路 -> 半加器 -> 全加器 -> 加法器 -> ALU
参考资料
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.