形象理解软件位宽 32位和64位的区别
到底这个64位、32位说的是什么意思呢?【运算位数的限制】
这个多少多少位,说的是CPU一次运算的二进制数字的位数。这个CPU就像是个计算器,我们软件用CPU就像人类用计算器似的。它很重要,我们要算一丁点东西,也需要用CPU来算
但是这个CPU算东西的能力,是有限制的,有什么限制呢?你拿出你家的计算器看看,算个28+783,没问题是吧。算个7836-473也没问题是吧,再算个72635446584939202937346537+1,能么?估计99%的同志出问题了(不排除有牛人拥有很牛的计算器):“我哪能按出这么多数来啊,我这计算器总共就能显示得下11位数字”。对,这就是计算器的位数限制。
CPU也一样,一次能算的数不能无限大,总得有个边,只不过不是按照十进制的位数算的,而是按照二进制的位数算的。至于什么叫十进制,什么叫二进制,可以去问问狗狗大哥,不过不知道也没关系,咱暂时按照咱们平常的十进制来说。
【软件操作 CPU的过程】
软件使用CPU运算的过程和人使用计算器是差不多的。比如说,我这有个计算器只能算99以内的数字,也就是只有2位(也不知道谁设计的这么弱智的计算器)。那么我用这个计算机算个3+4怎么算呢?简单,输入3,按+号,再输入4,按=号,就出来了。再算个大点的,算个56+47。先输入56,按+号,再输入47,按=号。咦?显示03,怎么不显示103呢?废话,它倒是想显示,往哪写那1呀?但是我用的这个计算器(也就是CPU啊)是很人性化的,会提示你运算结果超出了它的能力范围。比如可能会有个红灯亮起,提示你03前面还有一个进位,进到百位了。
【高位宽CPU的优势】
好了,基本的操作说完了,现在说正题,不同位数的区别。两位的CPU就像刚才说的那样,那么假设现在需要计算3173+644,这里有2位的CPU一个,4位的CPU一个,分别用他们做这个计算,有什么区别呢?
咱先看这2位的,有人说了,2位的只能算两位啊,这个没法算哪?唉,这机器是死的,咱软件是活的啊,一次只能算2位,咱不会分开多算几次么。首先,输入73,按+号,再输入44,按=号。显示出来 17,同时红灯一亮,说明还得进位。好,找张纸记下17这个数,还得写上“得进位“。然后再输入31,按+号,输入6,按=号,显示出来37。别忙,没完,刚才还得进位么不是,再输入37,按+号,输入1,按钮,咔嚓,出来38。好,最后结果拼一块,高位是38,低位是17,最后结果:3817。
再拿这4位的算算看。4位的就意味着输入的和显示的数最大可以是9999,也就是说我直接就可以输入3173,按+号,再输入644,按=号,显示出来3817,OK,收工。
【软件位宽与CPU位宽的关系】
这就是2位的CPU和4位的CPU的不同,从理论上来说,4位的要比2位的快,从上面的例子看得很明显嘛,大一点的数,4位的CPU一下就能算完,2位的CPU要折腾好几次。但是这4位的CPU还得有人会用才行,这就需要4位的软件来用这个4位的CPU。
终于说到软件的位数了,CPU的位数就是一次能计算多少位的数,那软件的位数呢?就是说明这个软件需要使用多少位的 CPU。软件干活肯定需要计算,计算就得用CPU,2位的软件会用2位的CPU, 4位的软件就会用4位的CPU (还是拿卡进制位做比喻啊)比如有一个2位的软件,当他运行在一个2位CPU的电脑上的时候就是这样:比如要算3173+644,他就会先算.73+44,然后记住进位,然后计算31+6,然后加上进位,最后拼起来,得到答案,就像上面描述的那样。那么当这个2位的软件运行在一个4位的CPU上的时候会怎么样呢?他会先算73+44,然后记住进位,然后计算31+6,然后加上进位,最后拼起来,得到答案……有人说了,他怎么不直接算啊?4位的CPU.不是能直接就算出来么?但是别忘了他是2位的软件啊,他不会用4位的CPU,但是不会用不等于完全不能用,他还是可以拿4位的CPU 当成2位的来用,只是有些浪费而已。
那么要想完全发挥4位CPU的性能该怎么办呢?当然就得4位的软件出场了当一个4位的软件运行在一个4位的CPU上时怎么计算3173+644呢?大家大概都知道了,直接算,一次完成。,那么当一个4位的软件运行在一个2位的CPU上时会怎么样呢?这个软件会写个3173的纸条要往CPU的奇存器里塞,急得满头大汗就是塞不进去;最后一甩手老子不于了,这破 CPU没法用!当然,这只是个比喻,并不是说4位软件在2位 CPU E算3173+644就算不了,算1+1就能算。4位的软件是根本无法运行在2位的CPU上的。
来源:http://showmecode.cn/links/book ——《Linux入门很简单》