概述

用了这么久计算机, 都知道计算机有一个核心部件叫 CPU, 而 CPU中有一个小部件叫做全加器. 它是用来做什么的呢? 看名字就知道了, 做加法运算用的. 那么如何实现一个全加器呢?

你以为这又是一篇计算机内部原理的文章? 不, 放开那个女孩, 和我一起走进中学物理的课堂.

问题

先把问题抛出来, 我们的全加器大概就长这样.

输入端放进来两个数字, 然后输出端返回两个数字的和.

抛开全加器不说, 首要问题是: 用什么来标识输入和输出的数字呢?

输入输出

当然了, 输出输出端都是导线, 要通过电流来表示. 那就使用电的特征咯.

方案一

简单粗暴, 使用电压. 数字1表示为1V, 数字10就是10V.

但是, 这个时候如果来了一个数字是10万呢? 整个10万 V 的电压, 别闹, 那还怎么抱在手里愉快的玩耍, 难道你不想玩手游了?

方案二

既然电压太高不可取. 人体的安全电压是36V, 也就是只要电压不高于36V 就可以了. 我们可以用一根导线来表示十进制的一位, 这样就可以将电压控制在0-9V 之间了. 嗯, 安全.

但是, 电压是不稳定的. 但是可以规定 8.6-9.5V=9. 嗯, 这个方案确实可行, 至少咱没有看出什么问题来. (据说现在已经有十进制的了??) 但是别着急, 看下一个方案.

方案三

想一下, 除了电压, 电还有什么特征呢? 电流? 功率? 开闭? 就是开闭. 一个电路要么连通, 要么断开, 简单明了没有歧义.

用电路的开闭如何表示数呢? 表示不了十进制, 还表示不了二进制么..

好, 就是它了, 实现简单方便.

输入输出的问题解决了, 剩下的就是全加器的构造了, 二进制的运算就不说了. 现在, 全加器应该长这样:

为什么是三个输入数字呢? c是进位. 那为什么是两个输出呢? y 是进位.

电路的逻辑运算

在开始全加器之前, 先来复习一下高中的物理知识.

还记得这个东西么?

画的丑了一些, 凑合看. 他可以将电场转换为磁场. 好, 下面的实现都是基于它的. 电磁感应. 继电器就是基于它实现的.

逻辑电路

看下面电路:

这是一个简单的并联电路, 实现了逻辑或, 只要有一个电路接通, 整体就是通路. 当然了, 串联电路就是逻辑与了. 那逻辑非如何处理呢? 这就要用到上面提到的继电器了.

逻辑非

图中的 J 表示继电器.

右侧电路的开关正常情况处于连通状态, 当左侧通电后, 会将右侧开关吸附起来, 令其断开. 这就实现了逻辑非. 当然,  的实现也可以通过继电器来传递.

逻辑与

这就是一个通过继电器实现的与门.

当然了, 或门也是一样的, 只是将右侧的串联电路改成并联电路就成了.

逻辑异或

有了与或非, 把他们三拼一拼, 异或就有了.

A xor B = (!A && B) || (A && !B)

来来来, 看图了.

这就是一个异或了. 有没有发现什么? 可以将电路参与到逻辑运算中.

好啦, 足够了. 开始着手实现全加器.

全加器

到这, 想必各位看官也知道为什么在全加器之前要先说逻辑电路了吧. 没错, 就是要把01的加法运算, 转换成逻辑运算.

列一张真值表:

真值表在此, 请运用你们数值计算的知识, 把逻辑表达式推出来吧. 请原谅我, 下面表达式是我嫖来的, 直接把化简后的逻辑表达式拿来了.

x = a xor b xor c

y = c && (a xor b) || (a && b)

算一算一个全加器一共用到了多少继电器? 其中: 与(2个), 或(2个), 亦或(8个).

x 需要2个亦或, 共16个继电器. y 需要2个与,1个亦或,1个或, 共14个继电器. 整个全加器共需30个继电器. 又因为 x 和 y 的计算在同一个全加器中, a xor b的操作, xy 可以公用同一个, 所以减少一个亦或, 共22个继电器. 据说还能少, 嗯, 咱也不知道.

以上, 一个超级简陋的全加器横空出世. 将上面的逻辑表达式放到电路里, 就能返回输入结果相加后的结果.


既然有全加器, 那是不是也有半加器? 嗯, 有. 半加器就是将两个位相加, 产生进位, 不考虑上一个来的进位. 简单说, 全加器有3个运算数, 半加器只有两个.


有了全加器, 是不是还得有全减器? 偷偷告诉你, 减法运算就是补码的加法运算.

计算机全加器简单实现相关推荐

  1. 自己动手写第一阶段的处理器(1)——计算机的简单模型、架构、指令系统

    我们会继续上传新书<自己动手写处理器>(未公布),今天是第二,我每星期试试4 第1章 处理器与MIPS 时间開始了. --胡风 · 1949 让我们以一句诗意的话,開始本书的阅读. 时间从 ...

  2. 计算机组成原理简单模型机实验,计算机组成原理简单模型机实验.doc

    计算机组成原理简单模型机实验 实验四 简单模型机实验 1.1实验目的 1)将微程序控制器模块通过总线同运算器模块.存储器模块联机,组成一台模型计算机: 2)用微程序控制器控制模型机数据通路: 3)通过 ...

  3. 计算机组成原理简单计算机设计,计算机组成原理课设.doc

    文档介绍: 课程设计任务书 学院 信息学院 专业 计算机科学与技术 学生姓名 学号 设计题目 多寄存器算术减法\右移位\输入输出\转移指令实验计算机设计(第5组) 内容及要求: 利用EL-JY-II型 ...

  4. 计算机由简单的二进制阴阳,二进制之美,大道至简,二生万物!

    我国是一个文明古国,虽然计算机发展技术是由西方国家发展起来的,但并不影响我国上下五千年的文明史,说二进制是有西方国家发明的,我觉得这倒是不完全正确,我国最早中医中都有阴与阳的概念,同样计算机领域中的二 ...

  5. 计算机音乐设备简单配置,计算机音乐与作曲基础(高等学校艺术类专业计算机规划教材)...

    简介 本书主要内容包括计算机音乐基础知识.计算机应用作用作曲常用软件介绍.音乐制作软件的基本操作.作曲基础知识.音源音色的特性与运用.音乐织体的类型与写作以及乐曲编配实践等. 本书的特点是首次将作曲技 ...

  6. 计算机考研最简单的专业,计算机专业有必要考研吗?计算机考研简单的校园都有哪些...

    现如今是互联网的年代,所以许多人在报考专业的时候计算机现已变成首选专业,可是每年的毕业生的增多,造就出中.低层的商场有着必定的饱满,然后许多学生都想开始考研,但又觉得没有太大的必要,那么计算机专业到底 ...

  7. 计算机组成原理简单模型机实验,CPU 与简单模型机设计实验

    计算机科学与技术系 实 验 报 告 专业名称 计算机科学与技术 课程名称 计算机组成原理 项目名称 CPU 与简单模型机设计实验 班 级 学 号 姓 名 同组人员 无 实验日期 2016.6 一.实验 ...

  8. 如何设置计算机的网络参数,如何为计算机新手简单地设置路由器的基本参数

    最近,一个朋友买了一个路由器,说他不擅长设置它.问我如何简单地设置和使用它.我想把这写成文章与大家分享.知道如何玩路由器的人会发现它很简单,但是不知道如何做的人仍然有点复杂.我在这里与您谈谈如何简单地 ...

  9. 爱丁堡大学计算机专业本科要求,爱丁堡大学计算机专业简单介绍及入学条件

    导读:不得不说,随着各方各面的条件的提升,中国人的家庭总体条件在不断变好.能够提供出国留学条件的智齿出国留学想法的家庭也在不断地增加.毕竟孩子出国学习. 不得不说,随着各方各面的条件的提升,中国人的家 ...

最新文章

  1. 《精通Linux设备驱动程序开发》——1.7 编译内核
  2. matlab图像处理——平滑滤波
  3. 人生的第一个博客(●'◡'●)ノ♥--开博典礼
  4. ETL异构数据源Datax_使用querySql_08
  5. 怎么关闭电脑开机自动启动的程序_软件自动开启很烦人?如何彻底关掉Mac电脑开机自动开启的应用程序?...
  6. [ARM]【编译】【实践】 - 浮点编译选项NEON引发的Skia的库Illegal instruction运行错误和解决办法
  7. matlab 中函数regionprops 求解区域面积的原理
  8. 2017商业科技市场预测:云计算改变行业的十大关键发展
  9. Android的JNI【实战教程】2⃣️--AS下NDK环境配置及第一个工程
  10. 剑指Offer:跳台阶
  11. c primer plus 第七章 第十题
  12. 计算机教学问卷调查,信息技术在数学课堂教学中的应用:数学课堂信息技术应用调查问卷...
  13. Tensorflow2.* 加载和预处理数据之用 tf.data 加载 Numpy数据(2)
  14. android解决方法数超过65536问题,(满则溢)Android AS打包提示方法数超65536的解决方法...
  15. App Store 审核指南 2017-12-11
  16. 微信小程序笔记(包含node.js简介)
  17. ***没有规则可以创建“XXX”需要的目标“XXX”问题的解决方案
  18. YUV420(I420)与YV12的区别,YUV420p与YUV420区别
  19. 金一文化推出“B站2233 x中央芭蕾舞团”限量手办
  20. VC设置断点无效的各种解决方法

热门文章

  1. 邻接矩阵和邻接表_[力扣743] 带权邻接表的单源最短路
  2. 在r中rowsums_用R进行数据分析-05
  3. mysql原生库_Mysql数据库的一些简单原生sql语句
  4. linux unix域socket_python3从零学习-5.8.1、socket—底层网络接口
  5. 多线程操作时操作系统时间片_从零开始自制操作系统(15):内核多线程
  6. 中科院计算机学院王宏,王宏-中国科学院大学-UCAS
  7. 打桩时不修改源码_考研网上报名点了修改报名,修改后到报名点时,出现部分信息不符合参考条件,请修改或重新报名...
  8. pytorch 矩阵相乘_深度学习 — — PyTorch入门(三)
  9. mysql超过1W条查询不显示_mysql 被写入1W数据后无法select*from table,但是加入limit参数后可以查询...
  10. 【LeetCode笔记】322. 零钱兑换(Java、动态规划)