入门:计算机是如何存储数据的总结

编程基础

硬件与软件:计算机的运行原理(《编码》)

最大的软件:操作系统(维基百科)

自己写软件:数据结构 & 算法(《数据结构与算法分析》 排序算法)

多人写软件:软件工程(代码大全)


0和1的存储


内存中晶体管进行冲放电

1充电

0不充电

维持时间短需要不停充放电(2.1GHz)

数字的存储

十进制->二进制

字符的存储

ASCII码

入门:计算机是如何存储数据的总结_第1张图片

例:a->01100001(2)->61(16)

中文的存储

GB2312中国国家标准简体中文字符集

入门:计算机是如何存储数据的总结_第2张图片

GBK字符集——扩展存储生僻字、繁体字、日语、朝鲜语。

所有字符的存储

将全球字符编号===》Unicode字符集

包括日韩文字、藏文、盲文、楔形文字、颜文字、绘文字

2016年6月时,Unicode 总共有 128237 个字符

高性价比存储UNICODE

低性价比

a -> 00000000 00000000 00000000 01100001 = 0061(16)

你 -> 00000000 00000000 01001111 01100000 = 4F60(16)

高性价比 UTF-8

a -> 01100001

你-> 11100100 10111101 10100000

UTF-8是一种编码方式,不是字符集。

00000000 00000000 00000000 01111111(2) 即 0000007F(16) 以下 

0XXXXXXX

00000000 00000000 00000111 11111111(2) 即 000007FF(16) 以下 

110XXXXX 10XXXXXX

00000000 00000000 11111111 11111111(2) 即 0000FFFF(16) 以下 

1110XXXX 10XXXXXX 10XXXXXX

00000000 00011111 11111111 11111111(2) 即 001FFFFF(16) 以下 

11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

现实问题

字符集问题

入门:计算机是如何存储数据的总结_第3张图片

一些古老的国产软件使用GBK,因为当时没有其他选择。

编码问题

JavaScript 使用了 Unicode 字符集,但是没有使用 UTF-8 编码

JavaScript 用了 UCS-2 编码! 

因为 1995 年 UTF-16 还没被发明出来, JavaScript 也不想使用 UTF-32

http://www.ruanyifeng.com/blog/2014/12/unicode.html

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

你可能感兴趣的:(入门:计算机是如何存储数据的总结)