编码是一个我在编程实践中找到的一个计算机系统的主要规律。
“编码思维”也是计算机系统的主要思想之一。
计算机无法理解人类的语言,而只能理解数据。所以,在让计算机处理信息之前,我们必须要对信息编码。
编码在计算机中无处不在,例如:
底层原理
计算机的底层原理为图灵机,而又因为电子计算机的底层数据空间是整型的, 所以我们常用的电子计算机是只能处理离散数字的机器。
信息的呈现方式是多种多样的,空间信息,时间信息,视频信息,音频信息,在经过处理之前,我们都可以把他们先变成用整型表示的数据,然后再通过计算机处理。例如我们经常做的音视频流,其实就是对光线和声音震动的编码。
编程实践
计算机系统的结构主要有三个部分组成:
- CPU 中央处理器
- Memory 存储器
- IO 输入输出设备,例如鼠标键盘,显示器或者互联网接口
在编程实践中,经常涉及到文件和各种 IO 的处理。程序员们一般会使用流 Stream 的方式。其实这样的方法底层就是对编码数据在顺序上从前往后做处理。
而在处理除了英文文本之外的其他语言文本时,就要使用到“字符集”,字符集就是将不同语言中的字符到字节的映射。例如 GB2312 是简体中文国标编码,GBK 是双字节的扩展汉字表示,Unicode 是四字节的囊括了世界上基本所有语言的字符集合。
一条数据,使用不同的字符集解码就会得到不同的结果,使用了错误的字符集解码就会得到不可读的数据,一般我们称为乱码。