CPU 是如何理解 01 二进制的?

👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇

作者丨码农的荒岛求生

来源丨码农的荒岛求生

准确的来说,CPU不认识也不理解任何东西

CPU就像一个单细胞一样,本身不具备任何思考能力,没什么自己的想法,你给它一个刺激,它只是简单的会有一个反应。

85c1a0b674ebbc3e27a9e54134ef5689.png

那这个刺激是什么呢?是电压,硬件感知到的仅仅就是电压。

电压有两种,高电压和低电压。

你马上就能反应过来,这就是01二进制,高电压代表1低电压代表0,0和1仅仅是人类可以理解的东西,硬件电路可不理解这玩意,它仅仅就是靠电流驱动来工作。

让我们来看看这个简单的电路,这个就是与门:

da6e3efb0cf4a11ddac7928cb9242da3.png

你能说这个电路理解它自己该做什么吗?它有自我意识吗?当然没有。

所以说这个问题的答案非常简单:

CPU根本就不能理解任何东西,之所以CPU能正常工作,仅仅是因为你(制作CPU的人)让它这么工作

这个问题就好比你问一辆自行车是如何理解自己怎么跑起来的?还不是因为你设计了车轮、车链然后用脚一蹬跑起来的。

57fdbc9f95cdceebbf1ffcdf2d911363.png

你希望两个开关都打开灯才亮,因此你这样设计电路,这就是与门;你希望任意一个开关打开灯就亮,因此你那样设计电路,这就是或门;你希望关闭开关灯才亮,这就是非门,有了与或非你可以搭建出任意复杂的逻辑电路,比如下面这个能执行加操作的加法器。

cc4b656be26e9673c7838a18cd156841.png

看看这个电路,你能说它知道自己是在执行加法操作吗,这当然是人类认为这个电路的输出等价于加法操作的结果。

尽管这个电路看上去很不错,给定两个输入得到的输出和我们人类认为的加法是一样一样的,但这有点简单。

除了加法是不是还应该有其它操作,如果有多种类型的操作那么就必须告诉电路该操作的类型是什么(操作码),操作的数字是什么(操作数)。

这样给它一个输入就能按照我们的想法来控制电路了,BOOM!!!宇宙大爆炸!

321129b0754a775cb23cd5eee766fe73.png

哦不对,CPU诞生了!

人类编写的代码必须首先转为01二进制,之后才能驱动CPU工作。

当然,怎么把一坨代码高效等价的转为1001011100。。。这项工作可不简单,人类探索了几十年,一干人等还获得了图灵奖,可见这个问题的重要程度以及难度。

f3a8f7c8a759362afbbb3afce948a9ad.png

你今天能简单点一下build按钮或简单运行一个命令就能把你写的代码转为01串,要知道这简单的背后是靠无数天才榨干天量的脑细胞才实现的。

dfc4b0a819bedba407af109397986c22.png

从这里应该应该能看出来,CPU根本不认识任何语言,理解编程语言的其实是编译器

现在我们能给CPU输入了,那输出呢?

剩下的仅仅就是解释了,比如给你一个01串,01001101,你可以认为这是一个数字,也可以认为这是一个字符,也可以是表示RGB颜色,一切都看你怎么解释,这就是软件的工作了。

最终的目的只有一个:让人类能看懂

整个流程就是这样的:

0cfa1c9656845bcd00b8423dfc7130b4.png

计算机真是一个非常神奇的机器,如此简单,却又能完成复杂无比的工作。

现在你应该明白了吧,计算机所谓能理解二进制就好比你的台灯能理解开关一样。

它们真的对此一无所知。

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

4ee4124e307093fef8526de35af5531e.png

点击👆卡片,关注后回复【面试题】即可获取

在看点这里ca601da0d0a3a98e47c6d0d5b82dc546.gif好文分享给更多人↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值