您当前的位置 :环球传媒网>博客 > 正文
地位的位是什么位 位”的概念
2020-11-13 14:12:35 来源:易课堂 编辑:

可能你也不止一次的听到诸如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位的操作系统,由于受操作系统的限制,仍然只能访问很少的内存。

关键词: 地位 32位

分享到:
版权和免责申明

凡注有"环球传媒网"或电头为"环球传媒网"的稿件,均为环球传媒网独家版权所有,未经许可不得转载或镜像;授权转载必须注明来源为"环球传媒网",并保留"环球传媒网"的电头。