Hello 小伙伴们大家好,开场我们先感叹一声时光如梭啊,眼睛n闭n睁好几年过去了小明和小红这两位老同学好久没联系了吧,就知道你们怀旧,想念老同学(除了那个爱让人帮忙写作业的李华)。

这不,我立刻安排了一场穿越回到那曾经快乐的学习时光,话不多说我们开始。

我们来到上二年级的小明正坐在教室里。现在是数学课,下午第一节,窗外的蝉鸣、缓缓旋转的吊扇让同学们昏昏欲睡。此时,刘老师在黑板上写下一个问题:

6324 + 244675 = ?

小明抬头看了一眼,觉得这两个数字挺眼熟。他昨天翘课去网吧了,因此错过了刘老师讲的竖式计算加法。

“同学们算一算这道题。”刘老师和蔼可亲地说道。

小明盯着黑板懵逼。

小学二年级的他面对这样一道世界级难题,束手无策。小明伸出了自己的左手,打算用一个古老而深邃的方法–掰手指–尝试一下。

小明发现他的每只手只能输入0-5中的正整数,和的范围仅限于0-10,离6324还十分遥远。

“慢着!”小明看向了自己的左手。他发现,事情有一点不对劲。

我们也来看看小明的左手。这只左手有5根手指,我们把5根手指都伸开来记为11111,5根手指握拳记为00000,手背面向我们,左手小指是第一个1/0。

小明紧紧地握拳,然后伸出大拇指,此时的左手为00001。“如果,”小明想,“这样是1”。

他缩回拇指,伸出食指,此时的左手为00010;“这样是2”。

他又伸出拇指,此时的左手为00011;“那么这样是3”。

他缩回拇指和食指,伸出中指,此时的左手为对着自己竖中指00100;“这样就是4!”

…小明的左手飞速运动着,直到五根手指都伸直,像是钢铁侠射了一发掌心炮11111;“这样就是31!一只手可以表示0-31中的任意正整数!”

小明为自己的发现感到激动。可他不知道怎么表示加法。

小明的同桌,英语课代表小红,看他摆弄了半天左手,忍不住问他在干什么。小明解释了他的发现。小红听了小明的一番高论,若有所思,提笔在数学书的封底画了一个表格:

“是这样吗?”小明问小红。

小红拿过来看了看,说:“最后一行写错了,输出结果应该是1。你想啊,1+1+1应该等于11,左边这一位是输出进位,右边这一位是输出结果,都是1,所以输出结果应该是1。”

“噢。”小明又拿过书来,拿起橡皮铅笔改正:

“那为什么这个机器能算加法?我还是不懂。”小明问。

“假设我们已经造出来了这么个机器,长这样”小红继续在封底上画着:

“等会等会,怎么变成英文了,我英语不好。”小明叫道。

“hmmm看来你没读双语幼儿园。左边这三个是输入,右边是输出,C是进位,C-in是输入进位,C-out是输出进位,Sum是和的意思,明白了么?”小红解释道。

“噢好。”

“假设我们已经造出来了这么个机器,造了好几个,我们这么连起来…诶纸不够大,我写不下了。”

小明一听,赶紧从书桌膛里翻出来一本草稿纸,生怕同桌变成费马。

“谢谢。先这么连起来:”

“哦哦哦我懂了,A和B就是两只手,最右边这个one-bit-adder计算的是最小位数的和!”小明说道。

“正确!”

“你这样连的话,是说最小位的输出进位就是下一位的输入进位,下一位的输出又是下下一位的输入!天啊,这跟列竖式好像。”小明惊叫。

“Absolutely!”小红回答道。

小明又拿过草稿纸,接着画起来:

“把对应的每一位连到每一个adder里…”小明念念有词,“…再汇总一下输出”:

小明画的加法器
“成了!这个东西可以算两只手加法的结果!”小明高兴极了。

“可是离6324和244675还是太远了,输入5位远远不够呀。”小红皱了皱眉头。

“不不不!你在掰手指的时候有没有发现,每多一根指头,能表示的数就会多出来一大堆,我觉得只要加那么十几个就够了!1根指头能表示2个数(0,1),2根指头四个数(0,1,2,3),3根8个…”

“是2的倍数!”小红接道,“小明,我觉得你的这个记数方法很有意思,要不叫小明式吧!”小红凝望小明的目光中有了一丝羞涩。

“二进制。”

身后忽然传来低沉的声音。两人同时回头,发现数学课代表小刚正直勾勾地盯着那张草稿纸。他好像已聆听多时了。

“叫二进制吧,我看蓝猫淘气三千问讲过这个,一模一样,蓝猫说这是二进制。”小刚补充道。

小刚的数学成绩是班里最好的,一进学而思就上的超常班。小红只能上尖子班,小明一般去网吧。

“那就叫二进制吧。”小明说。

他和小红转过身来,老师让小组讨论的时候他们就这么坐。

小刚又道:“可是,怎么造出这个one-bit-adder呢?”他的眉头皱成一团,眼镜片看起来更厚了。

小明和小红也陷入了沉默,三人一筹莫展,陷入僵局。这时,小刚的同桌,物理课代表小兰入局。

她忽然说道:“我听物理办公室的陈老师吹牛,他当年在大学里读电子工程,GPA一直是4.3,用实验室的导线开关和小灯泡就能造一个32位的加法器,不知道是怎么做到的。他还说什么与门是and,或门是or,再加一个非门not,用它们表示逻辑,就能造出世间千千万万的计算机。”

小明听迷糊了,“等会等会,什么门?金拱门?”另两人也露出迷茫的表情。

小兰从桌子里掏出一个黑盒子。“这是下节课要用的教具,陈老师让我先拿着。”

她打开盒子,取出三个零件和一个说明书。

“喏,你们看看这个”,她拿起第一个零件,“这个叫与门,有两个输入和一个输出。如果我们把输出连上小灯泡,接上电源,两个输入分别连上开关,那么是这么个情况:”

“就是说,只有两个开关都闭合了,小灯泡才亮,有点像串联电路。”小兰补充道。

“诶,有意思了…”小刚扶了扶眼镜,似乎打算说什么,大家都看向他。

“没,没什么,我还在想,小兰你接着说。”

“那好。”小兰接着拿起第二块零件。“这个叫或门,有一个开关开着灯泡就会亮…”

“等下!”小刚忽然打断,拿起笔在自己的白纸上画起来:

“是不是这样!”小刚激动地说,“如果0是关1是开,0是灭1是亮的话,或门的输入输出是不是这样?”

小兰看了看道:“正是”。

她拿起第三个零件,“最后这个叫非门,只有一个输入,一个输出。它会输出一个相反的结果:输入有电流,输出就没有;输入没有电流,输出就有电流。用小刚的话来说,输入0输出则为1,输入1输出则为0。太简单了,懒得画表了。”

小兰把非门放在桌上。小刚说道:“这三个门可以表示三种逻辑。如果A、B是输入, A or B 就是经过或门的结果, A and B就是经过与门的结果, not A 则是A经过非门的结果。”

三人纷纷点头。“可是,这和加法有什么关系呢?”小明问道。

四人再度陷入沉默。

沉默。

忽然,小明拿起笔,一边画一边说道:“如果我们回去看小红画的表格,”

左三列是输入,右二列是输出
“Sum可以写成A、B、Cin的逻辑关系!”

“你们看,把 A and B 记作 AB,A or B 记作 A + B,not A 记作 A 上面画个横线。Sum 输出为1只出现在表格的2、3、5、8行,也就是三个输入中1的个数为奇数的时候。我们把这4种情况记下来,那么这个式子…”

“可以拿逻辑门实现!!!”四人异口同声的叫道。

小红抢过草稿纸,又看了看物理教具的说明书,边画边说了起来:“说明书上写,这个火车头形状的符号表示 and gate;这个B2轰炸机形状的是or gate;这个小人形状的是not gate…”

她又看了一眼小明的式子,说道:“这个式子的第一项可以这样…”

"你们看你们看,这个不就是

嘛!"小红自豪地说。

小明补全了电路:

“先把与门都画了

“再把或门都加上,搞定。这东西可以算出Sum了,接下来用一样的办法把C-out弄出来。”小明准备继续画。

“你们看,这里还有几个零件。”小兰指着说明书说道:

“与非门:一个与门的输出和一个非门相连,英文是not and,NAND gate。那个小圈圈代表一个非门。

或非门是或门 + 非门,not or,NOR gate。

第三个叫异或门,只有两个输入中一个为1一个不为1时,才会输出1,exclusive-or,XOR gate。

第四个是同或门,也就是一个异或门加上一个非门。”

“啊哈!”小刚灵机一动,抓起笔来道:“我有一个绝妙的点子。”

“小明的方案,要用17个门。我只要2个异或门就搞定了,牛逼吧?”

三人瞪大了眼睛,仔细思考后纷纷点头道:“牛逼,牛逼。”

小刚随即画出了完整的one-bit-adder电路:

小明从教具盒里拿出电源、小灯泡、开关和逻辑门,按照设计图制作出了全加器他把黑盒子里的零件全拿了出来,四人忙碌地工作着。很快,他们拥有了5个全加器,基于小红的设计连了起来:

“二进制的01100等于十进制的12,01010等于10,12+10=22,等于16+4+2,也就是二进制的10110…”

四人人往代表输出结果的5个小灯泡望去:亮,灭,亮,亮,灭;正是10110!

“成了!!!”

大家激动的拍打课桌为了计算黑板上那道题,四人一共制作了32个一位全加器,将它们连接后,一个三十二位加法器便诞生了。

他们历经艰辛,踩着自然规律和人类智慧的肩膀,把自己从枯燥的加法计算中解放出来!

窗外的蝉鸣渐渐平息,头顶的吊扇不再转动。
“刘老师,答案是250999!”小明站了起来,声若洪钟大吕,震慑天地。

他和小红、小刚、小兰分别对视了一眼,收获了坚定的目光。

这目光,连同面前的32位加法器,如同新的转机和闪闪星斗,正在缀满没有遮拦的天空。

刘老师点了点头,欣慰的说道:“很好,看来四位同学对这部分知识掌握的不错!我们再来看几道题!”

他转过身,拿起板擦,把黑板擦了个精光,又从黑板槽里拾起半截粉笔,写了起来:

  1. 244675 - 6324 = ?
  2. 3.14159 + 5.535897 = ?
  3. 17 * 45 = ?
  4. 3 / 2 = ?

一连四道题,让四人组陷入了深思:如何让自己的机器运算减法?乘法?除法?浮点数?

刘老师并没有停下,手中的粉笔运动得越来越快:

  1. Fibonacci 数列的第103项?
  2. 一圈共有N个人,开始报数,报到M的人出列,然后重新开始报数,问最后出列的人是谁?.

疑惑越来越多了:如何存储?怎样实现分支?保证效率?

刘老师仍未停下,黑板快被写满了:

  1. 方程ζ(s)=0的所有有意义的解都在一条直线上吗?
  2. 大于2的偶数都可以写成两个质数的和吗?

  1. 生命,宇宙及所有事物的答案?

刘老师放下了粉笔,半截粉笔已经变成硬币的厚度。

“这些问题,我们能造个机器回答么?”小明撑着头,喃喃自语。
故事结束!!!
回到现实,相信大家对CPU已经有一定了解了吧感谢大家来到时光之旅,如果可能点个关注我们下期再见。
部分故事情节改动与作者:柳两丛
https://www.zhihu.com/question/40571490/answer/718942643

穿越回二年级讲CPU工作原理。相关推荐

  1. 一文了解二进制和CPU工作原理

    Part 1. 原来,我们是这样记数的 " 本节内容节选自下方 参考资料 1 在讨论「二进制」和「CPU 如何工作」之前,我们先来讨论一下我们生活中最稀疏平常的 数字,我们与之频繁地打交道: ...

  2. 「MoreThanJava」一文了解二进制和CPU工作原理

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  3. 二维码的工作原理是什么?

    二维码无处不在,加好友扫一扫,付款扫一扫,下载文件扫一扫,进入小程序扫一扫,品牌需要二维码,商铺需要二维码,好像只有随处扫一扫二维码,才能觉得和这个世界接轨上了. 有人问这么多的二维码是谁制造出来的呢 ...

  4. 计算机CPU工作原理及汇编语言简介

    计算机CPU工作原理及汇编语言简介(链接)        从微信公众号把原文直接复制过来,发现图片.表格经常丢失,只有纯文字,所以建议直接点击上述链接阅读. 复制过来的纯文字内容如下(图片.表格丢失, ...

  5. 单核CPU与多核CPU工作原理

    单核CPU与多核CPU工作原理 今天要介绍一下单核CPU和单核(超时间轴)CPU以及多核CPU的工作原理 一.单核CPU 起源: CPU的起源是1971年英特尔公司推出,由此正式宣告计算机的诞生,可以 ...

  6. 计算机多核启动原理,多核cpu工作原理 不进来看看?

    cpu是一个对电脑来说非常重要的配件,所以在关于它的知识上朋友们可千万要注意,所以今天小编想为大家讲的是多核cpu工作原理的相关内容,喜欢的朋友们赶紧收藏,相信对大家会有帮助. 多核cpu工作原理 1 ...

  7. 安全认证框架Shiro (二)- shiro过滤器工作原理

    安全认证框架Shiro (二)- shiro过滤器工作原理 安全认证框架Shiro 二- shiro过滤器工作原理 第一前言 第二ShiroFilterFactoryBean入口 第三请求到来解析过程 ...

  8. 计算机原理学习(1)-- 冯诺依曼体系和CPU工作原理

    前言 对于我们80后来说,最早接触计算机应该是在95年左右,那个时候最流行的一个词语是多媒体. 依旧记得当时在同学家看同学输入几个DOS命令就成功的打开了一个游戏,当时实在是佩服的五体投地.因为对我来 ...

  9. 一文读懂CPU工作原理、程序是如何在单片机内执行的、指令格式之操作码地址码

    文章较长,大家可选择性阅读,嘎嘎细 计算机结构 CPU的运行原理 CPU的控制单元在时序脉冲的作用下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后CPU将这个地址里的指 ...

  10. 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09

    第二章:寄存器(CPU工作原理)04 让编程改变世界 Change the world by program 段的概念 错误认识: 内存被划分成了一个一个的段,每一个段有一个段地址. 其实是: 内存并 ...

最新文章

  1. python用numpy和pil处理图像成灰度图_「火炉炼AI」机器学习047-图像的直方图均衡化操作...
  2. python中的tkinter模块
  3. Java 反射机制浅析
  4. Asp.net页面生命周期详解任我行(3)-服务器处理请求详细过程
  5. Matlab中文注释乱码问题解决方案
  6. android开机动画多长时间_Android开机动画及黑屏
  7. 苹果Pro安装win10鼠标不能用的问题
  8. 关于eclipse发送桌面快捷方式后打不开的问题
  9. 201709-2公共钥匙盒
  10. iTechTag:声望创造价值
  11. Android手机导出的已安装的APK到电脑
  12. 【韧性架构】韧性性工程的重要性
  13. 2017年Q1中国无线路由器市场研究报告
  14. 【解决方案】t2gp.exe - 损坏的映像 | libcef.dll没有被指定在 Windows 上运行
  15. 为什么自动驾驶使用linux,一旦用上,欲罢不能,为何ADiGO 3.0自动驾驶系统如此让人上瘾?...
  16. LCD段码液晶屏PIN脚间距
  17. 最优控制 3:最优控制理论中的极小值原理与动态规划
  18. 【指纹识别】基于模板匹配算法实现指纹录入打卡系统附matlab代码
  19. linux系统浏览器无声音,在Deepin 20系统中外接显示器切换后浏览器没有声音的解决经历...
  20. islide插件安装过程闪退

热门文章

  1. allegro设置规则
  2. tomcat下面的starup.bat的作用
  3. 从Java源代码生成类图
  4. JEECG登陆全过程
  5. eclipse 如何查看Java源码
  6. 从零开始学androidchronometer计时器组件.三十二.
  7. miui 8.5 android,小米MIUI8.5稳定版
  8. SH7218T拆解手记(7)Clockworkmod recovery的编译
  9. 动软代码生成器连接8.0.17版本的mysql
  10. sms实现wap push的方法和格式