Warning: file_put_contents(/datas/wwwroot/jiajiahui/core/caches/caches_template/2/default/show.php): failed to open stream: Permission denied in /datas/wwwroot/jiajiahui/core/libraries/classes/template_cache.class.php on line 55

Warning: chmod(): Operation not permitted in /datas/wwwroot/jiajiahui/core/libraries/classes/template_cache.class.php on line 56
二进制 - 源码之家

二进制

 

有人说,好奇怪,十进制,我们是个手指数的过来,挺好的,为什么要搞一个二进制这么复杂的进位呢?你觉得复杂,你觉得很不习惯,非常正常,因为二进制本来就不是给人看的,它是给机器用的,就是,机器底层在计算的时候就是用二进制,为什么机器底层要用二进制呢?因为二进制好实现,比如说机器要计算1+5,那么,1+5怎么算呢?怎么表示一个5呢?这就很麻烦,但是,如果是机器只算1+0或者1+1的话,这就很容易,1可以表示为5伏,0可以表示为0伏,它可以用电压来表示,这就可以更容易实现,开关打开或者关闭即可,所以,我们很多理论不是说这个理论很高端,它是对的,逻辑是自洽的就可以实现,你得用物理的方法把它做出来,这就是另外一回事了。

电脑当中存一个数字最低起码是一个字节,就是0000 0001,这是八个bit,组成了一个Byte,就是八个01位组成一个最小的存储单元,来存储一个数字。

电脑底层只有电,那么这些01怎么转换成电路中的实实在在的东西呢?这个很重要,就要用到我们电脑当中的一个叫做加法器,它实际上分为半加器和全加器,半加器就是不带进位的,全加器就是带进位的,我们直接讲全加器,

二进制

既然是芯片,那么,这边都是带电的,1用5伏代替,

二进制

所以,整个结果运算出来就可以用电路来实现。当然它的内部也不难

二进制

往里面再看一层,就是与非门、与或非等等,你把与或非门再打开来看,就是晶体管、三极管、电阻之类的,所以,它就可以用实实在在的电路来实现。

二进制

把这个全加器级联起来,比如说,把上一级的进位放到这里

二进制

输入就可以算出下一个结果。

二进制

那么,这个进位再丢到下一级,那么,又可以进一位,所以,这两位的一个加法器就可以级联起来,成为八位的一个加法器,甚至更多位的,所以,我们就可以算出刚才这样的数据

二进制

哪怕你有更多位,比如32位,32个bit,就是,32位的加法器都是可以实现的,只需要把这些,一个全加速器这种基本的单元给它级联起来就是这样的,那么,CPU底层实际上就是用这种最基本的算术单元,所以,你看以前的计算机在没有机械硬盘或者磁带的时候,科学家、工程师怎么编程?用纸带打孔,打个孔那就是0,不打孔的纸带就是1,所以,一个纸带密密麻麻的,有孔没孔有孔没孔,就是10100,这就是程序,运算结果出来的也是纸带。

这就是计算机底层的运行原理。