由低向上的学习计算机是一条比较漫长的道路。但是,得来的知识却是体系化的。而且越到上边,学习的理解的效率是越高的(暂且自我欺骗,毕竟还没达到那高度)
下面就最近研究和学习做一个复盘。以问题出发为脉络。
1、计算机是怎么做运算的?
关键字:二进制、逻辑门
2、在问题1的基础上又问:为什么是二进制?
3、CPU是如何工作?

1、计算机是怎么做运算的?

回答这个问题,要先弄懂人类在使用10进制做计算时的方法,不赘述。
10进制方法迁移到二进制。基本的加法、乘法(可转成进位的加法),减法转成加法实现,除法转成乘法实现(这个我还没深究)。
进制之间可以平滑的换算。

数和进制的抽象

(这是我独立思考得出的,未见有人说过,或者有但我不了解)。
位和进制大小、进位。是三个基本元素。
位是进位中的位,是进制数的承载单元。位只能承载(0到进制-1)的数。比如:10进制中,一个位可以放0-9的数字,到10的时候就需要进位。二进制,最大放1,到2就要进位。
进制大小:就是所谓的2、10、16。
进位:位中承载的数等于进制大小时,发生的高位+1行为。

所以,可以有5进制。甚至可以有100进制,当然如果能够找到这么多数字的象征,恐怕人类的大脑处理起来也是费尽的。
问题又来了,为什么人类有进制这种抽象,我觉得主要还是来源于认知的范围是有限的,而认知的对象是无限的。之所以说认知范围是有限的,主要是人的身体机能决定的,不能同时(并行)思考和处理多个问题。以有限的认知认识无限,只能将无限的进行分而治之。数字是对现实世界和数量有关的一种抽象。位,就是数字抽象的基本单元。对于人类来说,现实世界的物质是无限的,小到分子原子、大到宇宙万物。所以用进制数可以表示一个特定的数量的概念。

如果存在一个主体(比如上帝),ta使用的是无限进制,宇宙万物都囊括在其中,它不用进位。每个事物都有是唯一的,那么人类的进制就已经没有了意义,ta能使用无限进制的前提是掌握了无限事物的信息,超人类思维的存在。这就是无限这个抽象的力量。

什么是运算

传送门
人类为什么要做运算呢?因为人类的认知是有限的啊,为了得到暂时无法获得的信息,基于已有的信息进行信息的变化和组合,就生成了运算。所以,如果人类可以直接获得任何信息,比如看到一个平面物体,便知道它的面积和体积,那基于几何学的长宽高、积分之类的运算就不再具有它的价值,但这目前还只是一种思维游戏,人类还是渺小的。
这里举个例子:
国王统治了100个小城邦,他欲了解各城邦的粮食产量这个信息,以备决策。最简单的方式就是,统计各城邦的产量,然后全部相加。
如果没有数字和运算,他要得到信息,需要把100个城邦的粮食搬到一起,进行称重了。
插个题外话,统计出来的数字只是一种近似值,为什么呢?因为在实操的过程中,城邦是可以谎报数量的,可以报大或报小,加起来的数已经不是国王心中想要的那个数了,但是这也没有办法,先解决有和无的问题,只要偏差不大的离谱,是可以容忍和妥协的。妥协这词在计算机的实现中也是常见的。
物理学中的很多问题都是靠运算得出的,比如光速是怎么得来的(人类一开始测量得到的光速也只是近似值)?天体物理学又靠什么说宇宙在膨胀?
所以,再不要把运算限定在10进制了,它只是众多进制中人类习以为常的一种而已。
结合进制和运算:
比如5进制的23+12=40,它的10进制是多少呢?

23的10进制为:2x51+3x50=13
12的10进制为:1x51+2x50=7
40的10进制为:4x51+0*50=20

数字的实际意义则有进行运算的人赋予,抽象的作用便在于此。

逻辑门和它们的电路实现

计算机使用二进制,为什么是二进制呢?
早期的计算机有3进制、还有5进制的,都是电驱动,用简单的电子元件来构建。

电信号的电压强弱来表征数字,如上图,如果是5进制,那么不稳定的电压,必然导致不稳定的数。不稳定代表了不可信。
二进制就不同了,电压不稳定,只要在范围内,取值就确定的。所以二进制被优胜劣汰的剩下来了。

最好理解的电子元件:二极管

传送门
二极管有个特性,就是在某个电压值Uon之前,不导电,一旦突破,则通电,如下图。死区电压不导电。

晶体二极管为一个由p型半导体和n型半导体形成的pn结,在其界面处两侧形成空间电荷层,并建有自建电场。当不存在外加电压时,由于pn结两边载流子浓度差引起的扩散电流和自建电场引起的漂移电流相等而处于电平衡状态。当外界有正向电压偏置时,外界电场和自建电场的互相抑消作用使载流子的扩散电流增加引起了正向电流。当外界有反向电压偏置时,外界电场和自建电场进一步加强,形成在一定反向电压范围内与反向偏置电压值无关的反向饱和电流I0。当外加的反向电压高到一定程度时,pn结空间电荷层中的电场强度达到临界值产生载流子的倍增过程,产生大量电子空穴对,产生了数值很大的反向击穿电流,称为二极管的击穿现象。pn结的反向击穿有齐纳击穿和雪崩击穿之分。

PN结的工作原理传送门
P是多电子的一个,N是缺电子的一个,他们都导电,P是多电子要对外输出,N是缺电子要对内吸纳。电子多和少是工程师们利用化学原理制造出来的。它们中间隔了一道空气墙,适当电压可以打通,就导电了。

于是:二极管的导电性就可以抽象出1和0,1为通,0为不通。而通和不通,可以被人类(用电压大小的方式)掌控,下图是3个1。有没有觉得像位的抽象?

从二极管到逻辑门

传送门
我不知道是谁发明或发现了这种转换,五体投地。但其中的核心逻辑:由简单到复杂。
将2个二极管,按照不同的线路布线,就可以得到逻辑运算中的“或、与、非”运算。
下面是盗图,盗图源链接
注意下图表示的电流方向。
“与”门

“或”门

“非”门

最后那些常用的电路都有了固定的接线模式,逻辑门的电路被抽象成了符号,它们共有一个特点:实现了抽象逻辑符号,在物理世界的正确表达:
盗图

还可以看看这个网站的逻辑门
Basic Gates and Functions

逻辑门到加法运算

下面这个电路设计图,实现了单个位的二进制计算逻辑,sum是输出,carry是进位。——专业术语,或者叫抽象名“半加器”。

这里贴张这个逻辑电路的真值表:

A输入 B输入 sum输出 carry输出
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

上边电路解决了一位的加法,那么多位的呢?
把电路单元连接起来!
所以引出另一个电路图——全加器,由半加器(上边提到的半加器单元用HALF ADDER来表示了)进化而来。

上图实现了,进位场景下(三个输入:低位进位的位、高位的两位),两个输出(sum和carry)的计算单元。

所以继续复杂深化,得到2位的计算电路。下图A0 A1分别代表第1位,第二位的二进制数。

继续下去得到一个8位的加法电路:

所以,这个图很清晰告诉了一个编程中经常出现的名字:“溢出”。装不下了就溢出了。

自己设计一个4位的乘法运算的电路

乘法运算,是带进位的加法运算。首先要搞定的是位乘法运算。使用And运算即可。比如A*B,前置条件是假设不会溢出。所以限定A和B都小于1进制的4,结果用8位二进制来保存。如下图:原谅我画图不专业。。核心就是B乘Ai的时候,根据B当前位,为结果进位(左移),我仔细想了想,比较low的是接线的时候,按位来接(比如B1就进1位接在结果线路)。加法器这里,抽象了一把,把所有结果加起来。(里面是应该有3个加法器串联在一起)


以上,运算有关的就到此为止(逻辑的没有写就略过了)。

关于计算机的可计算性等价于Lambda算子,请百度。本人还未深刻理解Lambda。

如果您觉得还不错,可以到本人自己搭建的博客看看。

续:上手造个CPU

文章写完后的2年,我继续深入,使用模拟电路造出了一个八位的简单CPU。
可阅读:造个CPU玩玩——从硬件到软件的设计

参考:
【10分钟速成课:计算机科学】
Lambda算子简介
denallo学习笔记:λ演算(lambda calculate)

【计算机理论基础】计算机是如何做运算的相关推荐

  1. 计算机组成原理-第二章 数据表示与运算

    计算机组成原理-第二章 数据表示与运算 一.数据的表示 1.数值型数据的表示(重点难点) 1.1数值型数据的表示--进位制 1.2数值型数据表示-码制 1.3数值型数据的表示--定点数 1.4数值型数 ...

  2. 浮点加法器计算机组成原理,计算机组成原理 第二章运算方法与运算器

    第二章运算方法与运算器 运算方法:指算术(四则)运算和逻辑运算,在运算器的实现方法,而实现这两种运算的硬设备就是算术逻辑部件ALU(Arithmetic and Logic Unit)或称运算器 由于 ...

  3. 用计算机浮点数表示法计算,计算机组成原理第4章浮点数运算方法ppt课件

    PPT内容 这是计算机组成原理第4章浮点数运算方法ppt课件下载,主要介绍了浮点数的表示:浮点加减运算:浮点加减运算的步骤:浮点数加减运算流程图:浮点加减法运算:浮点运算所需的硬件配置,欢迎点击下载. ...

  4. 计算机组成原理 | 第三章《运算方法和运算部件》学习笔记

    计算机组成原理 | 第三章<运算方法和运算部件>学习笔记 引言 & 声明 第一章 计算机系统概论 第二章 计算机中数据的表示方法 第三章 运算方法和运算部件 3.1& 算术 ...

  5. 【数据结构】计算机是如何进行四则混合运算

    我们在数学中常见的计算式,例如9 + ( 3 - 1 ) * 3 + 10 / 2.表达式中涉及到了多个运算符,而运算符之间是有优先级的,而计算器没法理解,因为计算机只会按照输入的运算符一个一个的进行 ...

  6. 计算机组成移位运算器实验,计算机组成实验报告二移位运算实验

    <计算机组成实验报告二移位运算实验>由会员分享,可在线阅读,更多相关<计算机组成实验报告二移位运算实验(3页珍藏版)>请在人人文库网上搜索. 1.淮海工学院计算机工程学院实验报 ...

  7. 计算机的学生该怎么做?

    整理的别人发的.转载一下!转载一下!转载一下! 计算机专业毕业后大致的工作方向是软.硬.网.图 四大类 . 尤其以软件.网络为现今的首选 从岗位上分,又可以分为技术道路.营销道路两大方向. if 你选 ...

  8. 计算机组成原理延迟时间ty,计算机组成原理之数值的机器运算培训教程方案.ppt...

    文档介绍: 2009.9计算机组成原理计算机组成原理北京理工大学计算机科学技术学院第4章数值的机器运算2009.9计算机组成原理计算机组成原理北京理工大学计算机科学技术学院第4章运算器是计算机进行算术 ...

  9. 计算机组成与结构第二章ppt,计算机组成原理(华科版)第二章 运算方法与运算器.ppt...

    文档介绍: 第二章运算方法与运算器 2.1 数据信息的表示方法 2.1.1数值数据的表示 淘在盛纬娃消镶勉桌乡利亚钦沙隐酋谴牲斗丙茸乔泛戊篡汽栽辫滔矮空芥计算机组成原理(华科版)第二章运算方法与运算器 ...

最新文章

  1. JavaWeb:Tomcat下配置数据源连接数据库
  2. 【Android 逆向】ptrace 函数 ( ptrace 函数族 | 进程附着 | 进程脱离 | 进程数据读写权限 | 进程对应的主线程寄存器读写 | 单步调试 |ptrace 函数族状态转换 )
  3. cocosc++怎么打印_Lua调用C++时打印堆栈信息
  4. TQ210裸机编程(2)——LED流水灯
  5. jupyter安装出现问题:安装后无法打开
  6. volatile和synchronized的区别与联系
  7. c++ sleep函数_Linux 多线程应用中如何编写安全的信号处理函数
  8. obs噪音抑制调多少合适_TVS瞬态抑制二极管的特性及应用
  9. 导入数据_导入外部数据的三个技巧
  10. ajax的原理和运行机制
  11. 冲突符号_冲突营销关键词连载(二) 冲突
  12. VC运行库合集下载,含VC2005/2008/2010/2012/2013
  13. AD9371官网汇总
  14. 行为树BT设计与实现
  15. 计算机修理工具包价格,电脑修复工具包#200多个联想工程师专用电脑修复小工具打包...
  16. Windows开机自动运行.py文件
  17. swp安装(Scientific Work Place)
  18. 解析不见了。 怎么办?
  19. netscreenfortinet
  20. MIUI开发版内测资格?超详细教你刷入MIUI欧洲版ROM

热门文章

  1. GcExcel v6.1 支持新的 ‘.sjs‘ 模板文件 ‘.xltx‘ 格式 Crack
  2. 用oFono来GPRS上网
  3. 但凡早知道这28个网站,都不至于学得那么不扎实
  4. 7-64 统计大写辅音字母 (15 分)英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。PTA:中M2021春C、Java入门练习第I段
  5. JSON-RPC协议
  6. 嵌入式AI设备--火星人视觉传感器--条形码识别功能
  7. 数据爬虫 + 数据清洗 + 数据可视化,完整的项目教程!
  8. HTMLEncode
  9. Unity 获取搜狗语音平台的令牌且对返回的字符串解析
  10. 你必须知道的印刷工艺 x 书籍设计