穿越回二年级讲CPU工作原理。
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位加法器,如同新的转机和闪闪星斗,正在缀满没有遮拦的天空。
刘老师点了点头,欣慰的说道:“很好,看来四位同学对这部分知识掌握的不错!我们再来看几道题!”
他转过身,拿起板擦,把黑板擦了个精光,又从黑板槽里拾起半截粉笔,写了起来:
- 244675 - 6324 = ?
- 3.14159 + 5.535897 = ?
- 17 * 45 = ?
- 3 / 2 = ?
一连四道题,让四人组陷入了深思:如何让自己的机器运算减法?乘法?除法?浮点数?
刘老师并没有停下,手中的粉笔运动得越来越快:
- Fibonacci 数列的第103项?
- 一圈共有N个人,开始报数,报到M的人出列,然后重新开始报数,问最后出列的人是谁?.
…
疑惑越来越多了:如何存储?怎样实现分支?保证效率?
刘老师仍未停下,黑板快被写满了:
- 方程ζ(s)=0的所有有意义的解都在一条直线上吗?
- 大于2的偶数都可以写成两个质数的和吗?
…
- 生命,宇宙及所有事物的答案?
刘老师放下了粉笔,半截粉笔已经变成硬币的厚度。
“这些问题,我们能造个机器回答么?”小明撑着头,喃喃自语。
故事结束!!!
回到现实,相信大家对CPU已经有一定了解了吧感谢大家来到时光之旅,如果可能点个关注我们下期再见。
部分故事情节改动与作者:柳两丛
https://www.zhihu.com/question/40571490/answer/718942643
穿越回二年级讲CPU工作原理。相关推荐
- 一文了解二进制和CPU工作原理
Part 1. 原来,我们是这样记数的 " 本节内容节选自下方 参考资料 1 在讨论「二进制」和「CPU 如何工作」之前,我们先来讨论一下我们生活中最稀疏平常的 数字,我们与之频繁地打交道: ...
- 「MoreThanJava」一文了解二进制和CPU工作原理
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- 二维码的工作原理是什么?
二维码无处不在,加好友扫一扫,付款扫一扫,下载文件扫一扫,进入小程序扫一扫,品牌需要二维码,商铺需要二维码,好像只有随处扫一扫二维码,才能觉得和这个世界接轨上了. 有人问这么多的二维码是谁制造出来的呢 ...
- 计算机CPU工作原理及汇编语言简介
计算机CPU工作原理及汇编语言简介(链接) 从微信公众号把原文直接复制过来,发现图片.表格经常丢失,只有纯文字,所以建议直接点击上述链接阅读. 复制过来的纯文字内容如下(图片.表格丢失, ...
- 单核CPU与多核CPU工作原理
单核CPU与多核CPU工作原理 今天要介绍一下单核CPU和单核(超时间轴)CPU以及多核CPU的工作原理 一.单核CPU 起源: CPU的起源是1971年英特尔公司推出,由此正式宣告计算机的诞生,可以 ...
- 计算机多核启动原理,多核cpu工作原理 不进来看看?
cpu是一个对电脑来说非常重要的配件,所以在关于它的知识上朋友们可千万要注意,所以今天小编想为大家讲的是多核cpu工作原理的相关内容,喜欢的朋友们赶紧收藏,相信对大家会有帮助. 多核cpu工作原理 1 ...
- 安全认证框架Shiro (二)- shiro过滤器工作原理
安全认证框架Shiro (二)- shiro过滤器工作原理 安全认证框架Shiro 二- shiro过滤器工作原理 第一前言 第二ShiroFilterFactoryBean入口 第三请求到来解析过程 ...
- 计算机原理学习(1)-- 冯诺依曼体系和CPU工作原理
前言 对于我们80后来说,最早接触计算机应该是在95年左右,那个时候最流行的一个词语是多媒体. 依旧记得当时在同学家看同学输入几个DOS命令就成功的打开了一个游戏,当时实在是佩服的五体投地.因为对我来 ...
- 一文读懂CPU工作原理、程序是如何在单片机内执行的、指令格式之操作码地址码
文章较长,大家可选择性阅读,嘎嘎细 计算机结构 CPU的运行原理 CPU的控制单元在时序脉冲的作用下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后CPU将这个地址里的指 ...
- 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09
第二章:寄存器(CPU工作原理)04 让编程改变世界 Change the world by program 段的概念 错误认识: 内存被划分成了一个一个的段,每一个段有一个段地址. 其实是: 内存并 ...
最新文章
- python用numpy和pil处理图像成灰度图_「火炉炼AI」机器学习047-图像的直方图均衡化操作...
- python中的tkinter模块
- Java 反射机制浅析
- Asp.net页面生命周期详解任我行(3)-服务器处理请求详细过程
- Matlab中文注释乱码问题解决方案
- android开机动画多长时间_Android开机动画及黑屏
- 苹果Pro安装win10鼠标不能用的问题
- 关于eclipse发送桌面快捷方式后打不开的问题
- 201709-2公共钥匙盒
- iTechTag:声望创造价值
- Android手机导出的已安装的APK到电脑
- 【韧性架构】韧性性工程的重要性
- 2017年Q1中国无线路由器市场研究报告
- 【解决方案】t2gp.exe - 损坏的映像 | libcef.dll没有被指定在 Windows 上运行
- 为什么自动驾驶使用linux,一旦用上,欲罢不能,为何ADiGO 3.0自动驾驶系统如此让人上瘾?...
- LCD段码液晶屏PIN脚间距
- 最优控制 3:最优控制理论中的极小值原理与动态规划
- 【指纹识别】基于模板匹配算法实现指纹录入打卡系统附matlab代码
- linux系统浏览器无声音,在Deepin 20系统中外接显示器切换后浏览器没有声音的解决经历...
- islide插件安装过程闪退