您的位置:首页 > 理论基础

数据在计算机中的存储

2017-12-26 15:49 316 查看
首先,我们为什么要知道这个呢?我们只需要知道这个东西怎么用不就好了吗?我想,你可能忽视了你还是一个程序员。



好了言归正传我们来讲讲计算机中数据的存储方式。我们都知道在计算机中所有的数据是以二进制的形式存储的,那么你们有没有想过01这些数据是怎么存在计算机当中的呢?

第一步 如何存储0和1

不知道你们有没有听过一个东西,叫做——电容器。顾名思义,这是一种能容纳电荷的容器。与普通的电池不同的是,它的充电速度很快,并且因为不会转化为化学能所以电量流失的也很快。因此需要经常刷新。在我们的计算机中,CPU有一个参数是Hz,便是指每秒钟能充多少次电。数据在内存中以二进制地方式存储,事实上是通过对小电容器的充放电来完成的。



第二步 如何存储数字

当然是把数字转化成二进制啦

第三步 如何存储字符

既然能够存储0和1,那存储字符也就不是什么难事了吧。我们只需要把字符和二进制一一对应起来,然后责令计算机来记住它,就万事大吉了。ASCII美国信息交换标准码就是这样的一个东西。

第四步 如何存储汉字

当然,先开始的时候计算机并没有在中国兴起,所以中文并不能被计算机所识别,没有人来做这样的工作。但是没有什么阻挡的了中国人的[得意脸]……是的,GB2312横空出世。GB2312是一个关键的正式注册的互联网名称字符集的的中国人民共和国,功能与ASCII相似。念做国标2312,即国际标准。当然,后来又有了GBK(国际标准扩展),我们暂且不提。



第五步 如何存储所有字符

照葫芦画瓢,将所有的字符进行编号,所以有了Unicode字符集。但是这里有一个问题,虽然它可以存储世界上所有的字符,但是如果你的编码是000000000000001,它是不会自动给你简化成1的。由此直接导致了所有的文字存储代价都会翻倍,而这样的代价,是很多人都不愿意看见的。所以…..

第六步 如何将Unicode存到计算机里



这里稍微解释一下最后一行,第一块的两个11是指后边有两串跟着,紧接着的10是指两串开头两个标志位是10。上边的Unicode编码中截取后两个字节放到下边utf-8中除标志位之外的地方,也就是说,除了第一块开头的1110,第二块和第三块开头的10,我们有4+6+6=16位来依次存储上边的8+8=16位字符串。

如你所见,这就是UTF-8,一种编码方式。它采用了变长存储的形式来表示Unicode字符集。



喏,做回一个前端工程师。你可能会说,既然utf-8这么好使,那为什么不统一用utf-8呢?事实上,理想与现实总会有一些冲突的。我们前端三剑客中的JavaScript,虽然用了Unicode字符集,但是并没有用utf-8编码,而是采用的USC-2编码。由此直接导致了JavaScript只能表示两个字节。当然,这个暂时还不打算深究,有小伙伴有深入了解的话欢迎留言。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息