【大一小白科普】0和1是如何创造整个数字世界的?

lanqiao 发表了文章 • 0 个评论 • 18 次浏览 • 2018-11-01 09:24 • 来自相关话题

作者:柴二狗 转载已获授权     此时此刻,屏幕前的你正准备看下面这个.mp4的视频。   或许就在刚才,你还听了一首.mp3的音乐,拍了张.jpg的照片,读了本.txt的小说,下了部. ...查看全部
作者:柴二狗
转载已获授权
 
 
此时此刻,屏幕前的你正准备看下面这个.mp4的视频。
 
或许就在刚才,你还听了一首.mp3的音乐,拍了张.jpg的照片,读了本.txt的小说,下了部.avi的电影。
 
所有这些纷繁复杂的数字文件,在本质上都只是一串串由0和1所组成的代码。
 
那么0和1,究竟是如何创造出这个有趣的世界的呢?
 
首先我们需要先简单了解一下二进制,这是数字世界里的基本规则。
 
人有十个手指头,但计算机电路却只有通和断两种状态。所以,满十进一位的计数方式更适合人类,而满二进一的二进制更适合计算机:
 
只需要0和1两个数字,就可以传递一切信息。
 
比如,十进制的2 用二进制表示就是10 (一零)  十进制的3二进制就是11(一一)。二进制和十进制在表达的意思上并没有什么区别,只是长相不同而已。
 
看到这里,我们来做一个小测试,如果你能读懂了这句话,那么恭喜你,你已经懂了二进制。
 
接下来的问题就是,如何才能把一串看似毫无规则的0和1,变成我们熟悉的图片和音乐呢?
 
以图像为例,.bmp是windows系统中的标准图像文件格式。
 
在你手机或电脑的某个角落里有这样一串数据
 
开头16位翻译过来,就是BM两个字母,也就是是bmp文件开始的标识。紧随其后的,是图片的各项基本信息。
 
比如现在这张图片,长宽都为55个像素,颜色深度24位,意思是说,每个像素点的颜色,都是由24个0和1所组成的数据来表示的。
 
再往后就是图像数据的本体了。
 
这里最开始的24位都是1,意思是说,图像的第一个像素中,有最大强度的红绿蓝三种颜色,所以这个像素显示为白色。
 

而接下来的24位前八位是1后面都是0,那么第二个像素就是纯纯的红色。
 

第三个24位的前16位为1,最后八位为0,所以第三个像素就是红色和绿色调和出来的黄色。
 
 
根据这样的规则,最终可以填满了整个55乘55的格子,得到一张完整的图片。
 
 
所以,一个bmp图像文件中的这些0和1,就是在逐个记录图像中每一个像素点的颜色。
 
与之类似,wav格式的音频文件中,一秒被分成441000个时刻点,文件的数据记录着每个时刻点上声音的振幅,最终连线,形成一道完整的声波。
 
大多数情况下,我们接触到的文件都和上面这两个例子一样:
 
文件中0和1按照人们事先设计好的规则排列好,只需找到正确的打开方式,按照特定的规则来解读这些数据,就可以获取其中的信息。
 
但问题来了,我们怎么知道某个文件中的0和1究竟是按什么规则排列的,又要用怎样的方式来解读它呢?
 
这就涉及到视频开头我们提到的那些扩展名了。
 
在文件的名字后面加几个特定的字符组成的扩展名,就可以帮助系统辨认出文件的类型,从而提示电脑去按照某种特定的规则,来正确解读其中的信息。
 
明白了这个原理,我们就可以做一些有趣的事情。
 
比如有一个文件,他的数据只有一行,翻译过来长这样。
 
(copy/b 柴.jpg+柴.rar =柴.jpg)
 
如果把文件扩展名改成.txt,系统就会把它当做一个普通文档打开。
 
但如果把扩展名改为.bat,文件打开后就会自动执行这么一个命令:
 
把同一文件夹下,事先准备好的这张图片和这个压缩文件,合并成一个文件。
 
当你直接打开这一文件时,因为扩展名是.jpg,所以系统会把它当做一张JPG格式的图片进行解读,你看到的就是之前准备的那张图片。
 
但如果打开之前把它的扩展名改成.rar,这样你就可以打开隐藏在那张图片下面的 事先准备好的压缩文件了。
 
至于压缩文件里放什么内容,那就是留给各位自由发挥的空间了。(邪魅一笑~)
 
 
注:
1、绝大多数文件都会有一串用来描述“数据本体”的元数据,它一般以一串标识身份的“magic number“开头,其后包含了文件的各项基本信息和基本的解读规则,非常复杂,视频中的例子只表现了其中部分数据。
 
2、视频中重点表现01和我们接触到的数字文件之间的关系,实际上中间还有复杂的编码过程。
 
3、计算机显示的颜色是红绿蓝(RGB)加色法三原色,和绘画颜料 红黄蓝的减色法三原色不同。
 
4、生活中我们接触到的数字文件一般是经过了有损压缩的文件,和BMP、WAV等无损文件相比,它们的体积更小,但解读数据的方法往往复杂难懂。
 
5、最后的柴.jpg相当于把两个文件的数据整合到了一起,不同的打开方式会先在这堆数据里找到各自的“magic number” ,接着解读之后的数据。