美文网首页
计算机编码的浅薄理解

计算机编码的浅薄理解

作者: 思考的虫子 | 来源:发表于2018-10-02 07:42 被阅读32次

    计算机编码的浅薄的理解

    常常遇到有关编码和字符集的一些问题,了解一下历史更有助于理解和解决问题
    从摩尔斯电报码到 ASCII 到 Unicode 到 UTF-8

    基本上知道这几个也就差不多了

    我的理解是:

    • 编码其实就是一种映射,设计编码的本意是为了用机器来传递人类的信息,
    • 他的原则就是以最小的代价尽可能最多后者最准确的传递信息
    • 编码跟加密解密的道理类似
    • 计算机网络传输跟电报传输技术是有继承和相似之处的

    最早用电报用莫尔斯码
    其实就是时通时短的电信号

    ****-/*----/----*/****-/****-/*----/---**/***-
    

    转变成对应的字母,数字或者一些简单的标点符号
    这些对应关系就是编码,一旦定下来以后就让人去学习,然后去做翻译/解译工作。
    机器其实只管传输,这样接收者就能很好的理解并翻译回人类的语言。
    这跟加密解密其实也是一个道理。

    摩尔斯电码(英语:MorseCode)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。是由美国人萨缪尔·摩尔斯在1836年发明。
    1873年,法国驻华人员威基杰参照《康熙字典》的部首排列方法,挑选了常用汉字6800多个,编成了第一部汉字电码本《电报新书》。电报中的
    摘自齐伟《跟老齐学Python:从入门到精通》

    中文电码出现了,其实也就在编码基础上再编码将汉字编成数字,再将数字编程莫尔斯码来传输,因为原来的编码只能对应拉丁字母和阿拉伯数字,不光中国的汉字很多其他国家的文字都要再编码。

    计算机网络的出现,和Web分享信息的流行,导致了 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)的诞生。
    计算机最开始的发展当然是以美国为首的,所以将拉丁字母和0和1的二进制字节进行对应,才能方便信息在计算机网络传输。
    但光能识别英语不行,这时候 Unicode 就出现了,万国码,国际码,大概就是十多万个全球各种文字/字母都进行了编排对应。这也就是字符集了。

    UTF-8顾名思义就是一种8位的 万国码转换格式,
    用通信理论的思路可以理解为:

    • unicode是信源编码,对字符集数字化;
    • UTF-8是信道编码,为更好的存储和传输,可以节省流量和硬盘

    因为在ASCII的时候一个字母只要1个字节都可以了。
    到了Unicode 因为需要编码的字符太多了,通常用到了2个字节,就是不管是高频使用的还是生僻的字符都要2个字节来表示。
    而UTF-8进行格式转换以后可以用1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。

    这个转换其实就是:

    • 由于计算机是按顺序读取的,而不同字符对应的字节不等长。
    • 所以给编码是不同的字符加了标记告诉计算机这里要读取几个字节。
    • 这样就节省了空间又能正确的读取都字符信息了。

    如有逻辑不正确的地方,请批评指正,谢谢!

    相关文章

      网友评论

          本文标题:计算机编码的浅薄理解

          本文链接:https://www.haomeiwen.com/subject/fbuooftx.html