计算机基础---计算机是如何存储数据的

首先明确一点,为什么要学习编程基础?

操作系统运行于 硬件 之上
浏览器运行于 操作系统 之上
html/css/JS运行于 浏览器 之上
html/css/JS和 数据 都来自于 服务器

硬件与软件:计算机的运行原理,推荐阅读 编码

学习编程基础可以把我们的知识面扩大,防止自己成为井底之蛙。


在计算机内部,只能存储存储与读取0和1,所有信息都是用二进制数串的形式表示的。

第一步:(内存)如何存储0和1?
计算机存储原理

  • 存储/读取
    1----高电平
    0----低电平

第二步:如何存储数字

计算机所有信息都是以二进制数串的形式存储。因此数字1 2 3 4 5 6 7 8 9 0都是经转化为二进制存储在计算机内。
负数会以 补码 的形式存储。
小数会以 浮点数 的形式存储

第三步:如何存储字符

为每个字符编号,使用ASCII美国信息交换标准代码
如果你想存储 a,那么就存储 97 对应的二进制:a -> 0110 0001

ASCII美国信息交换标准代码.png

第四步:如何存储中文

ASCII美国信息交换标准代码中只有数字与字母的字符,并没有中文。因此,我们国家推出了GB2312中国国家标准简体中文字符集

GB2312共收录 6763 个汉字,同时收录了包括拉丁字母,希腊字母,日文平假名及片假名字母,俄语西里尔字母在内的 682 个字符。

但在计算机的快速发展下,GB2312收录的字符已经不满足日常需要了,因此微软推出了 GBK 字符集

第五步:存储所有字符

Unicode 字符集 将全球字符编号都收录了,包括中日韩文字、藏文、盲文、楔形文字、 颜文字:-)、 绘文字😂
2016年6月时,Unicode 总共有 128237 个字符。在存储这么多字符的情况下,因此Unicode 使用了 4 个字节(32位)来存储一个字符。
如此一来,电脑的负荷就变大了,为了选取一种高性价比的方式来存储数据,于是出现了 UTF-8

同一个字符 a在普通unicode的方式下,它的转换如下:
a -> 00000000 00000000 00000000 011000012 = 006116
而经过UTF-8算法转化后:
a -> 01100001

总结:

  • 计算机只能存储0 和1 ,其他所有信息都是以二进制数串的形式存储。
  • 目前计算机字符集有 ASCII美国信息交换标准代码GB2312GBK 字符集Unicode
  • UTF-8 是一种编码方式,不是字符集!
  • 字符集历史
字符集历史.png
  • **历史问题 **
    JavaScript 使用了 Unicode 字符集,但是没有使用 UTF-8 编码

JavaScript 用了 UCS-2 编码!
因为 1995 年 UTF-16 还没被发明出来, JavaScript 也不想使用 UTF-32。
具体看这里

后果

ES5 无法表示 \uFFFF 之后的字符(如 \u1D306),某些情况下会出 bug

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我们知道,在计算机内部,所有的信息都是以二进制形式进行存储。无论是字符,或是视频音频文件,最终都会对应到一串由 0...
    Single_YAM阅读 872评论 0 1
  • 初雨洗过天空,只留下缠绵的云互相依偎,纯粹的没有一丝悲伤。春风拂过柳梢沙沙作响,鸟鸣声共,绕梁三日诉不完行云过往。...
    慕容筱冉阅读 427评论 10 7
  • 月圆人圆的中秋从来只觉得稀松平常,月圆人缺的中秋才怀想起当日的美好。 小时候的中秋节似乎没有那轮圆...
    芳心微语阅读 692评论 0 4
  • 张公子好赌,且逢赌必赢,与其说是一种与生俱来的赌技,倒不如说是因为他能从细小微致的举手投足间觉察到对方意识的变化在...
    张小王先生阅读 1,566评论 0 0