编码的本质及计算机的工作原理( 二 )



编码的本质及计算机的工作原理
文章图片

文章图片

计算机 , 从顶层的应用程序往下看 , 处处都有抽象 , 处处都是编码和转换 。我们没有办法 , 也没有必要弄清计算机的每个细节 , 但只要把握住了计算机的工作原理 , 弄清一些核心概念 , 还是能在一定抽象度上搞懂计算机 。抽象 , 是计算机科学和技术中最重要的思想 , 没有之一 。抽象的重要性 , 在操作系统中的体现尤为明显 。通过层层抽象 , 我们才可以轻松地聊微信、逛淘宝、刷抖音 , 而最背后的最底层 , 不过是芯片中电子在“乱窜”而已 。

编码的本质及计算机的工作原理
文章图片

文章图片

三. 编码和解码的本质到此为止 , 我们似乎了解了一点计算机的工作原理 , 但略感模糊 , 所以还需要继续探索与追问 , 那就来一起看看吧 。
计算机中一切的行为 , 都可以归结于计算 。当我们在聊微信、逛淘宝、刷抖音时 , 都是手机芯片的计算来实现的 。既然都是通过计算来实现的 , 那就要弄清计算机的计算原理 。先来看看计算机中最简单的加法 , 这还得从编码说起 。编码的本质是什么呢?对通信专业同学而言 , 第一反应是信号编码 , 而对计算机专业同学而言 , 第一反应是写代码 。这两种理解 , 都局限在特定专业领域内 。事实上 , 编码是广义的 , 无处不在 , 我们的工作和生活中 , 到处都是编码 。
在战争中联络的暗号 , 是一种编码 。如果不懂之前的约定 , 就无法知道暗号的意思 , 这个“知道”的过程 , 就是解码 。
瞪你一眼 , 也是编码 , 把想法用瞪眼来表示 。我们经常说:我不懂你说的意思 。本质就是:我无法解码你说的东西 。
很多场景 , 都是编码与解码的过程 。来看图 , 一图胜千言:

编码的本质及计算机的工作原理
文章图片

文章图片

可见 , 对于同一事物 , 如果编码方式不同 , 那么得到的结果也不同 。对于不同事物 , 编码后可能得到相同的结果, 但他们的含义是不一样的 。要正确解码 , 必须知道它曾经采用了哪种编码方式 , 否则无法解码 。编码的本质 , 就是映射 。解码的本质 , 就是去“理解” 。要配套使用才行 。四. 二进制的加法示例为什么我们费尽心思去讲编码的本质呢?因为通信的本质 , 就是编码并传输 , 计算机的本质 , 就是编码并处理 。我们先来看一幅图:计算1+2.我们可以看到 , 从苹果到数字 , 是一种编码方式 , 从数字到苹果 , 是对应的解码 。而且 , 上述的编码 , 是我们很熟悉的阿拉伯十进制编码 。

编码的本质及计算机的工作原理
文章图片

文章图片

以“109个苹果”为例 , 我们用十进制和二进制分别对其进行编码 , 具体的过程如下:

编码的本质及计算机的工作原理
文章图片

文章图片

可以看到 , 十进制编码后 , 数字都是由0, 1, 2, 3, 4, 5, 6, 7, 8, 9这十个数字组成的 。而二进制编码后 , 数字都是由0, 1这两个数字组成的 。这里 , 再次看到编码和解码的特点:对于“109个苹果” , 当编码方式不同时 , 其编码后的结果自然不相同 。对于1101101 , 如果不知道编码方式 , 就没法理解它 。如果是二进制编码 , 就会被理解为是“109个苹果” 。万一按照十进制去理解 , 那就是“一百一十万一千一百零一”个苹果 , 这显然是不对的 , 究其原因 , 就是编码的时候 , 用了二进制编码 , 但解码的时候 , 用了十进制解码 , 自然不行 。对于1101101 , 为了不错误理解 , 常用1101101B表示是用二进制编码 , 这个B是binary digit的缩写 , 意思是二进制 , 解码后是“109个苹果” 。对于不标注B的109, 默认是十进制 。下面 , 我们来看下二进制的加法计算: