计算机是怎么认识代码的

写了这么久的代码 , 第一次思考计算机是怎么认识自己写的代码并执行的
一个代码到底是怎么执行起来的?CPU内部到底是怎么工作的?
一、什么是二进制大家都知道计算机是二进制 , 即 0 和 1 , 但计算机中的 0 和 1 到底是什么?
就是低电平和高电平的意思 , 0 代表低电平 , 1 代表高电平 。比如 0.2V 是低电平的话 , 那么 5V 可能就是高电平了 。一般两者都有一个阈值 , 当电压大于某个阈值时 , 即是高电平;当电平小于某个阈值时 , 即是低电平 。计算机中的 0 和 1 是为了理解方便 , 给低/高电平取的别名 。
同时两种称呼分别代表了数字电路和模拟电路 。
数字电路是电路是以“0”和“1”及相应的逻辑符号来表示的 , 如下图:

计算机是怎么认识代码的

文章插图
数字电路模拟电路是电路中以电压高低和电流等参数来表示的 , 如下图所示:
计算机是怎么认识代码的

文章插图
模拟电路可以看做建筑施工图和建筑实物图的关系:数字电路主要是表现其逻辑和功能 , 模拟电路是搞定采用什么材料什么方式来实现数字电路想要达到的结果!
高低电平如何实现的?
二、二极管二极管是用半导体材料(硅、硒、锗等)制成的一种电子器件 , 具有单向导电性 。
一个二极管的实物图:
计算机是怎么认识代码的

文章插图
二极管逻辑电路图(即抽象的)
计算机是怎么认识代码的

文章插图
二极管电流可以从正(+)极流向负(-)极 , 此时处于导通状态;但反过来却不行 , 此时处于截止状态 。这就是单向导电性!
由于单向导电性 , 二极管就像是一个开关:
当处于导通状态时 , 开关闭合 , 两边电压大小一致 , 如正极 (+) 电压为 5.2V , 那么负极 (-) 也为 5.2V 。
当处于截止状态时 , 开关断开 , 两边电压大小不一致 , 如负极(-)为 5.2V , 正极 (+) 电压为 0V 。
三、逻辑运算与门电路与门
通过二极管可以获得“0”和“1” , 利用这个特性 , 我们可以制作一些有趣的电路 , 比如【与门】
计算机是怎么认识代码的

文章插图
与门通过小学 1 年级的知识 , 我们可以知道 , 此时 uA、uB 只要有一个是 0V , 那 uY 就会和 0V 直接导通 , 导致 uY 也变成 0V 。只有 uA、uB 都是 10V , uY 也才是10V 。
并且可以把电路进行封装 , 不关心具体的二极管、电阻这些元器件 , 统一用 & 符号表示 , 就是上图右侧的描述 。
这个装置成为【与门】 , 把有电压的地方计为 1 , 0V 电压的地方计为 0 。至于具体几 V 电压 , 那不重要 。
或门
再来分析一个或门:当输入中至少有一个“1”时 , 输出为“1” , 若全为“0” , 则输出“0” 。
刚刚的与门展示的是两个输入 , 现在来看看四个输入!
计算机是怎么认识代码的

文章插图
或门当 A、B、C、D 四个输入都是输入低电平 0 时 , 四个二极管都处于截止状态 , 此时输出即为低电平 0 。
当其中任意一个不为低电平时 , 若A为高电平 1 , 此时第一个二极管导通 , 输出即为 A 的电平 , 即高电平 1 。
或门在数字电路中还可以表示为:
计算机是怎么认识代码的

文章插图
或门其他还有【非门】和【异或门】 , 跟这个都差不多 。都可以用二极管或者三极管做出来 , 实际并不是用二极管三极管做的 , 因为它们太费电了 。实际是用场效应管(也叫MOS管)做的 。


推荐阅读