位字的意思(位的概念)
可能你也不止一次的听到诸如32位、64位的说法。
这里的“位”到底是什么意思呢?相信通过这篇文章,你可以找到答案。
什么是位?
位,是计算机的最小存储单元,一位,可以存放一个二进制数字
其实,位的概念非常简单,我们知道,在计算机中,无论是数字还是字符,无论是图片还是音乐,存储时,都是使用二进制格式的数字来存储,这个二进制数字的其中一位就是“位”的概念。
比如,一个字符'a',在unicode编码下,它的二进制格式是:
0000 0000 0110 0001
那么我们可以认为,一个'a'字符,在计算机中占16位。
以上,就是位的概念。
32位和64位
现在,你知道了位的概念,但跟我们平时所说的32位CPU、32位操作系统、64位CPU、64位操作系统,这些是什么呢?
这里所说的“位”,是指寻址能力。
这是什么意思呢?要理解这个概念,需要知道以下的知识。
内存的划分
为了方便对内存的管理,内存被划分为许多区块。
这就好比有一个年级,学生比较多,比如有200个学生,为了方便管理,学校可以将学生分为20个小组,每个小组10个学生。
内存也是这样,它被划分为很多的区块,每个区块大小固定为1字节。
正是因为如此,在内存管理上的最小单位是字节,而不是位。你可以让CPU取出某个内存位置的字节,而不能让它取出某个位置的一位。
一个int类型占32位,也就是4个字节,那么一个int类型的数据会在内存中跨越4个区块。
根据这样的知识,你可以计算一下,一个2G的内存,可以被划分为多少个大小为1字节的区块。
下面列出计算过程: 210241024*1024 = 2147483648
CPU的寻址方式
什么是寻址呢?
CPU对内存进行划分之后,问题随之而来,当我需要某个区块的数据时,我如何告诉CPU呢?如何让CPU准确的取到我需要的数据呢?
这就好比给学生分了组之后,我如何找到需要的组。
其实,最简单、最实用的方式就是编号,可以给学生的分组编号(1组,2组,3组......),也可以给内存的每一个区块编号(0, 1, 10, 11, 100......)。只不过要注意的是,现实世界中的编号是十进制的数字,但计算机世界中的编号是二进制。
下面这张图描述了计算机的编号方式:
我们通常把这样的内存编号,称之为内存地址,或简称地址。
有了地址(编号)后,当我需要取到某个内存的数据时,就可以把该内存对应的地址告诉CPU,CPU就可以根据该地址准确的找到对应的内存,取出数据了。而CPU通过地址找到对应内存的过程,就是寻址。
32位CPU和64位CPU
现在再来理解32位和64位CPU就简单多了:一个N位的CPU,是指该CPU能够支持的地址长度为N。
其实,这类似于现实场景中的编号。
比如,一个学校里面的学号是一个5位数,5位数可以编排多少个学生呢?答案是0-99999,十万个(105个),如果学生数量超过了十万,则超过的学生是没有办法编号的。
道理是一样的,如果一个CPU是5位的地址长度,那么它的编号范围则是00000-11111(注意,这里是二进制),一共多少个呢?25个!6位的CPU呢?26个!32位的CPU呢?232个!64位的CPU呢?264个!
为什么N位的CPU,能够得到的编号数量是2N个呢?我不谈数学证明,可以通过找规律得到答案:
1位的CPU可以取到的编号有2个: 0和1 共21个编号
2位的CPU可以取到的编号有4个: 00、01、10、11 共22个编号
3位的CPU可以取到的编号有8个: 000、001、010、011、100、101、110、111 共23个编号
N位的CPU可以取到的编号有2N个
由于一个编号就对应内存中的一字节数据,因此,编号范围越大,能够取到的内存越大。
如果一个CPU只有1位,那么它的编号只有21个,只能寻址21B的内存,哪怕你给它16G的内存,很遗憾,超过21B的部分,它无法找到,因为无法对超过的部分进行编号。
所以,一个CPU位数越高,则它的寻址能力越强,一个N位的CPU,可以有编号2N个,则可以识别2NB的内存。
现在明白了吧,32位的CPU,可以寻址的内存大小是232B,算出来就是4G。也就是说,哪怕你电脑的内存是16G,如果CPU是32位的,最多只能认识4G。
而64位的CPU呢,可不是说寻址能力是32位的两倍,那可是264B,算出来是232G!
在现实生活中,你也会发现,当你使用一台老式电脑时,它们的CPU往往是32位的,哪怕你内存再大,它也只能识别很小的一部分。
你可能还是有疑问:那为什么我32位的CPU,看到的能够识别的内存不足4G呢?那是某些内存中保存有重要数据,不允许你访问,操作系统给你隐藏起来了。
操作系统的位数
CPU有编号范围,同样的,操作系统也有。
当操作系统系统需要操作某一个内存的时候,会将内存地址传递给CPU。
这就会出现3种情况:
操作系统和CPU的寻址位数相同
这种情况不会出现任何问题,32位的CPU 32位的操作系统,可以顺利的传递内存地址,64位的CPU 64位的操作系统也是一样。
操作系统的寻址位数高于CPU
这种情况是不允许的!因为低位数的CPU无法容纳操作系统的传递的地址。这也是为什么当你的CPU是32位时,不允许安装64位的操作系统。
操作系统的寻址位数低于CPU
计算机允许出现这种情况,因为高位数的CPU可以容纳操作系统传递的地址,CPU会在不足的部分前面补充0。
但这样一来,实际上是浪费了CPU的寻址能力,本来是64位的CPU,但如果安装32位的操作系统,由于受操作系统的限制,仍然只能访问很少的内存。
,希望这篇文章能够帮助你认识位的概念。
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com