软件的本质是代码和数据,代码和数据最终都是以二进制的形式存储,二进制就是01011101101001010这种数字串,为什么二进制串就能控制硬件呢?

看了知乎的一个答案我也有了自己的一点想法。

 

其实一直就没有二进制这种东西,机器也不知道二进制这种东西,它也识别不了,机器只能“识别”电压的高低,高电压的时候某个开关开了或者关了,低电压的时候另外一个开关开了或者关了,这就导致某个灯亮了,某个灯灭了,把电脑的显示器想象为很多个LED灯,最终呈现出来的效果可能就是屏幕上出现了一个字,一个动画。我们按一下键盘或者点击一下鼠标,实际上是给机器发出了一串电压信号。硬盘里面存储的一部电影,存储的其实不是二进制,而是电压信号,因为内存里面有锁存器这种东西,意思貌似是可以让某个存储单元固定在某个电压值。总之,我们输入的是电压,机器处理的也是电压,输出的也是电压,没有二进制的事情。

 

那为什么很多人都说机器能识别二进制呢? 我个人觉得二进制这种东西是一种理论,用来认识机器理解机器提出的一种理论,这就像是我们用科学来解释世界一样。

 

你说你今天编写了一个程序,并把它保存在硬盘中,其实你是把一堆电压值保存在了硬盘中,运行的时候,其实是把硬盘中的那一堆电压值拷贝到内存中,然后内存中就有了一堆电压值,

CPU读取到了一堆电压值,然后解码这堆电压值(即:某某电压值该干什么事情),输出结果也是一堆电压值,显示器获得了这群电压值,然后显示器根据这群电压值改变LED灯的状态,如果你就看到效果了。