分享

一文了解计算机中的编码

 gfergfer 2023-09-21

  我们日常书写的文字是语言的编码;五线谱是音乐演奏的编码。那么计算机世界的编码又是如何构成的?

构成一切的0和1

  二进制是只有0和1两个数字组成的计数系统。0和1两个状态与电路的开关状态非常相似,所以计算机中所有的数据都是由一串串二进制数字表达。最小的数据表达单位是位(bit,音译:比特),常用小写字母b表示。8个位是1字节(byte),常用大写字母B表示。网络传输的基础单位使用b,计算机存储的基础单位使用B,在使用过程中应特别注意两者有8倍的数量差异。

“最简单”的编码:ASCII

  ASCII编码采用7位二进制数表示128个字符。字符中包含了大小写英文字母、数字0-9及常用的符号。在所有的字符编码标准中,ASCII是最小且最常用的编码。在计算机编程的过程中,编程语言都会原生支持ASCII编码的数据类型。由于ASCII编码的普及性,后续的字符编码多兼容ASCII编码,前7位二进制内容与ASCII码完全一致。我国的标准编码是GB18030 2022版本,并于2023年8月1日开始正式实施。国际化常用的编码为UTF-8(Unicode Transformation Format-8),可以表示Unicode字符集中的所有字符。

图片

ASCII可见字符编码示意图

倒过来行不行?

  随着互联网的兴起,电子邮件系统需要一种可以传送二进制文件的编码方式。由于邮件协议采用文本协议传输信息,所以就需要一种可以表示二进制数据的文本编码。如果直接使用ASCII编码中的0和1,数据量将增大到7倍。如果采用十六进制字符表示,数据量也将增大到2倍。Base64编码使用64个ASCII字符形成一个“64进制”的编码,这样3个字节的数据可以用4个Base64的字符进行表示。URL地址编码也采用表Base64编码,字符由两部分组成。以%作为开头,字符对应的数字用两位十六进制表示。

图片

Base64编码示例

编码如何优化“体积” 

  通过字符重新对内存数据进行编码会导致数据量膨胀,那有没有一种技术可以缩小编码的体积?哈夫曼编码就是这样一种方法,通过优化码的定义顺序降低整体的数据量。编码分为固定长度、变化长度两种,固定长度编码所有码的长度固定,无法优化编码体积,变化长度编码把使用量大的码定义为短码,而使用量小的码定义为长码,码与码之间使用特殊符号分割。前面提到的UTF8编码就是一种变长的Unicode编码。哈夫曼编码只是一种优化方式,数据进行重新编码的方式还有很多,例如:倒排索引的位置压缩。

  编码是智慧的结晶,蕴含着创造者对特定数据集合的深刻理解。通过学习编码的原理我们可以更深入了解数据之间的关系,掌握如何组织数据的技巧。

点击“在看”和“赞”
让更多人了解数字化技术。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多