计算机全加器简单实现
概述
用了这么久计算机, 都知道计算机有一个核心部件叫 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)——计算机的简单模型、架构、指令系统
我们会继续上传新书<自己动手写处理器>(未公布),今天是第二,我每星期试试4 第1章 处理器与MIPS 时间開始了. --胡风 · 1949 让我们以一句诗意的话,開始本书的阅读. 时间从 ...
- 计算机组成原理简单模型机实验,计算机组成原理简单模型机实验.doc
计算机组成原理简单模型机实验 实验四 简单模型机实验 1.1实验目的 1)将微程序控制器模块通过总线同运算器模块.存储器模块联机,组成一台模型计算机: 2)用微程序控制器控制模型机数据通路: 3)通过 ...
- 计算机组成原理简单计算机设计,计算机组成原理课设.doc
文档介绍: 课程设计任务书 学院 信息学院 专业 计算机科学与技术 学生姓名 学号 设计题目 多寄存器算术减法\右移位\输入输出\转移指令实验计算机设计(第5组) 内容及要求: 利用EL-JY-II型 ...
- 计算机由简单的二进制阴阳,二进制之美,大道至简,二生万物!
我国是一个文明古国,虽然计算机发展技术是由西方国家发展起来的,但并不影响我国上下五千年的文明史,说二进制是有西方国家发明的,我觉得这倒是不完全正确,我国最早中医中都有阴与阳的概念,同样计算机领域中的二 ...
- 计算机音乐设备简单配置,计算机音乐与作曲基础(高等学校艺术类专业计算机规划教材)...
简介 本书主要内容包括计算机音乐基础知识.计算机应用作用作曲常用软件介绍.音乐制作软件的基本操作.作曲基础知识.音源音色的特性与运用.音乐织体的类型与写作以及乐曲编配实践等. 本书的特点是首次将作曲技 ...
- 计算机考研最简单的专业,计算机专业有必要考研吗?计算机考研简单的校园都有哪些...
现如今是互联网的年代,所以许多人在报考专业的时候计算机现已变成首选专业,可是每年的毕业生的增多,造就出中.低层的商场有着必定的饱满,然后许多学生都想开始考研,但又觉得没有太大的必要,那么计算机专业到底 ...
- 计算机组成原理简单模型机实验,CPU 与简单模型机设计实验
计算机科学与技术系 实 验 报 告 专业名称 计算机科学与技术 课程名称 计算机组成原理 项目名称 CPU 与简单模型机设计实验 班 级 学 号 姓 名 同组人员 无 实验日期 2016.6 一.实验 ...
- 如何设置计算机的网络参数,如何为计算机新手简单地设置路由器的基本参数
最近,一个朋友买了一个路由器,说他不擅长设置它.问我如何简单地设置和使用它.我想把这写成文章与大家分享.知道如何玩路由器的人会发现它很简单,但是不知道如何做的人仍然有点复杂.我在这里与您谈谈如何简单地 ...
- 爱丁堡大学计算机专业本科要求,爱丁堡大学计算机专业简单介绍及入学条件
导读:不得不说,随着各方各面的条件的提升,中国人的家庭总体条件在不断变好.能够提供出国留学条件的智齿出国留学想法的家庭也在不断地增加.毕竟孩子出国学习. 不得不说,随着各方各面的条件的提升,中国人的家 ...
最新文章
- 《精通Linux设备驱动程序开发》——1.7 编译内核
- matlab图像处理——平滑滤波
- 人生的第一个博客(●'◡'●)ノ♥--开博典礼
- ETL异构数据源Datax_使用querySql_08
- 怎么关闭电脑开机自动启动的程序_软件自动开启很烦人?如何彻底关掉Mac电脑开机自动开启的应用程序?...
- [ARM]【编译】【实践】 - 浮点编译选项NEON引发的Skia的库Illegal instruction运行错误和解决办法
- matlab 中函数regionprops 求解区域面积的原理
- 2017商业科技市场预测:云计算改变行业的十大关键发展
- Android的JNI【实战教程】2⃣️--AS下NDK环境配置及第一个工程
- 剑指Offer:跳台阶
- c primer plus 第七章 第十题
- 计算机教学问卷调查,信息技术在数学课堂教学中的应用:数学课堂信息技术应用调查问卷...
- Tensorflow2.* 加载和预处理数据之用 tf.data 加载 Numpy数据(2)
- android解决方法数超过65536问题,(满则溢)Android AS打包提示方法数超65536的解决方法...
- App Store 审核指南 2017-12-11
- 微信小程序笔记(包含node.js简介)
- ***没有规则可以创建“XXX”需要的目标“XXX”问题的解决方案
- YUV420(I420)与YV12的区别,YUV420p与YUV420区别
- 金一文化推出“B站2233 x中央芭蕾舞团”限量手办
- VC设置断点无效的各种解决方法
热门文章
- 邻接矩阵和邻接表_[力扣743] 带权邻接表的单源最短路
- 在r中rowsums_用R进行数据分析-05
- mysql原生库_Mysql数据库的一些简单原生sql语句
- linux unix域socket_python3从零学习-5.8.1、socket—底层网络接口
- 多线程操作时操作系统时间片_从零开始自制操作系统(15):内核多线程
- 中科院计算机学院王宏,王宏-中国科学院大学-UCAS
- 打桩时不修改源码_考研网上报名点了修改报名,修改后到报名点时,出现部分信息不符合参考条件,请修改或重新报名...
- pytorch 矩阵相乘_深度学习 — — PyTorch入门(三)
- mysql超过1W条查询不显示_mysql 被写入1W数据后无法select*from table,但是加入limit参数后可以查询...
- 【LeetCode笔记】322. 零钱兑换(Java、动态规划)