0和1是如何构成图像和音频的呢?

0和1(二进制数字)本身只是抽象概念,但它们通过一系列巧妙的转换和编码规则,就能完美地表示图像和音频,其核心在于数字化和编码。
核心原理:从模拟到数字
1. 模拟信号:现实世界中的图像(光线的连续变化)和声音(空气压力的连续波动)都是连续不断变化的模拟信号。
2. 采样
图像: 将连续的图像分割成一个个微小的方格,称为像素。想象一下马赛克画。每个像素代表图像在那个小区域的颜色信息。
音频: 将连续的声波在时间轴上按固定的时间间隔进行“快照”记录。每秒记录的次数称为采样率。例如,CD音质是每秒44100次采样。
3. 量化
图像:测量每个像素的颜色值(通常分解为红、绿、蓝三个通道)。但这个颜色值可能是无限精度的(比如红色有无数种深浅)。量化就是把这个连续的值强制分配到有限个离散的级别(称为“位深度”)。
例如,8位深度可以表示256种红色(2⁸ = 256),8种绿色,8种蓝色,总共能组合出1677万种颜色(256 256 256)。
每个像素的颜色值(或RGB分量值)被转换成一个数字(比如0到255之间的整数)。
音频:测量每次采样点上的声波振幅(音量大小)。这个振幅也是连续变化的。量化就是把这个连续振幅值强制分配到有限个离散的级别(也是“位深度”)。
例如,16位深度可以表示65536个不同的振幅级别(2¹⁶ = 65536)。0通常代表最小振幅(静音),最大值代表最大振幅。
每个采样点的振幅值被转换成一个数字(比如-32768到32767之间的整数)。
4. 编码:将量化后得到的数字转换成二进制(0和1)。这是计算机存储和处理的基础。
图像: 每个像素的数字值(或RGB分量值)被转换成二进制比特串。
例如,一个纯红色(R=255, G=0, B=0)的像素:
R=255 -> 二进制 `11111111` (8位)
G=0 -> 二进制 `00000000` (8位)
B=0 -> 二进制 `00000000` (8位)
这个像素在内存/文件中可能就表示为这24位(3字节)的二进制串:`111111110000000000000000`。
音频:每个采样点的振幅值被转换成二进制比特串。
例如,一个16位的采样点值为 `10000` (十进制),其二进制可能是 `0010011100010000`。
文件格式:仅仅存储像素/采样点的二进制数据还不够。还需要额外的信息告诉计算机如何解读这些0和1:
图像: 文件头包含宽度、高度、位深度、颜色空间(如RGB)、压缩方式等信息,然后是像素数据流。
音频:文件头包含采样率、位深度、通道数(单声道、立体声)、压缩方式等信息,然后是采样点数据流。
正是这些精心设计的规则和转换过程,让0和1构成了我们看到的图像和听到的声音。
