欢迎来到数据表示:文本、声音与图像!

各位 IGCSE 的同学们大家好!这一章非常令人兴奋,因为它回答了一个基础性的问题:计算机只认识 0 和 1,它是如何储存你最爱的歌曲、短信和高清照片的呢?

计算机处理的一切内容——无论是字母、音符还是某种特定的蓝色——都必须先转换为二进制 (binary)。我们将深入探讨文本、声音和图像所采用的具体编码方法,并了解为什么这些文件会变得很大,以及为什么我们需要对它们进行压缩!


1. 文本表示(字符集)

1.1 为什么文本必须是二进制

当你在键盘上敲击字母“A”时,计算机看到的并不是一个形状,而是一串 0 和 1。字符集 (character set) 本质上是一个预定义的列表,它将每个字母、数字和符号映射为一个唯一的二进制代码。你可以把它想象成计算机使用的一本“密码本”或“字母表”。

1.2 字符集标准:ASCII 和 Unicode

你需要掌握两种主要的标准:

(i) ASCII(美国信息交换标准代码)
  • 所需位数:最初为 7 位,后来扩展为 8 位。
  • 最大字符数:使用 8 位,它可以表示 \(2^8 = 256\) 个唯一的字符。
  • 用途:这足以表示英文字母(大小写)、数字 (0-9) 和常用符号(如 @, %, $)。
(ii) Unicode
  • ASCII 的局限性:256 个字符不足以涵盖世界上所有的语言(例如中文、阿拉伯语,甚至是表情符号)。
  • 解决方案:为了解决这个问题,Unicode 应运而生。它为每个字符使用更多的位数(通常是 16 位或 32 位)。
  • 覆盖范围更广:由于使用了更多的位数,Unicode 可以表示极其广泛的字符和符号,几乎包含了世界上所有的书面语言和现代表情符号。
  • 权衡:缺点是 Unicode 文件比 ASCII 文件占用更多的存储空间,因为每个字符都需要更多的位数。
快速回顾:文本

位数越多 = 可表示的字符越多(如 Unicode)= 文件体积越大。


2. 声音表示

2.1 模拟信号到数字信号的转换

现实世界中的声音是模拟信号 (analogue),它是一种连续的波。然而,计算机只理解数字数据(0 和 1)。为了存储声音,我们必须将连续的模拟波转换为离散的数字测量值。这个过程被称为采样 (sampling)

采样过程步骤:
  1. 以固定的时间间隔测量模拟声波。
  2. 记录下每个时间间隔处波的高度(振幅)。
  3. 将这些测量值转换为二进制数值
  4. 计算机处理并存储这些二进制数据。

2.2 影响音质和文件大小的关键因素

两个因素决定了数字录音的准确度(音质)和文件大小:

(i) 采样率 (Sample Rate / Frequency)
  • 定义:每秒采样的次数。单位为赫兹 (Hz) 或千赫兹 (kHz)。
  • 类比:想象你在拍摄一个快速移动的物体。你拍照的速度越快(采样率越高),捕捉到的运动细节就越丰富。
  • 影响:采样率越高,数字录音就越接近原始模拟声音,音质越好,同时文件体积也越大
(ii) 采样分辨率 (Sample Resolution / Bit Depth)
  • 定义:用于存储每个采样值的位数
  • 类比:这就像你可以记录多少个音量等级(例如 0 到 100,或者 0 到 65,535)。
  • 影响:采样分辨率越高(每个采样占用的位数越多),对声波振幅的测量就越精细、准确,音质也就越高,同时文件体积也越大
牢记要点:

要提高音质,必须同时增加采样率和采样分辨率。这两项操作都会导致文件体积变大。


3. 图像表示

3.1 像素与二进制转换

数字图像(如 JPEG 或 PNG)由数百万个微小的方块组成,这些方块被称为像素 (pixels)(Picture Elements 的缩写)。

每个像素都包含一个颜色值。当图像存储时,计算机将每一个像素的颜色值转换为二进制

3.2 影响图像质量和文件大小的关键因素

两个主要因素决定了图像的质量和存储需求:

(i) 分辨率 (Resolution)
  • 定义:图像中的像素总数(通常表示为“宽 x 高”)。
  • 示例:屏幕分辨率 1920 x 1080 表示横向有 1920 个像素,纵向有 1080 个像素。
  • 影响:分辨率越高,意味着用于捕捉细节的像素越多,画质越清晰,同时文件体积也越大
(ii) 色彩深度 (Colour Depth / Bit Depth)
  • 定义:用于表示每个独立像素颜色的位数
  • 类比:如果你的色彩深度是 1 位,你只能拥有 2 种颜色 (\(2^1\))——通常是黑和白。如果你的色彩深度是 24 位,你可以拥有超过 1600 万种颜色 (\(2^{24}\))。
  • 影响:色彩深度越高,图像能显示的颜色范围就越广,画质越细腻,同时文件体积也越大

4. 数据存储与文件大小计算

4.1 数据存储单位 (1.3.1)

在计算文件大小时,了解标准单位和正确的转换系数非常重要(注意:对于 KiB, MiB 等单位,转换系数是 1024,而不是 1000)。

  • 位 (bit):单个二进制数字 (0 或 1)。
  • 半字节 (nibble):4 位。
  • 字节 (byte):8 位。
  • 千字节 (KiB):1024 字节。
  • 兆字节 (MiB):1024 KiB。
  • 吉字节 (GiB):1024 MiB。
  • 太字节 (TiB):1024 GiB。
学习小技巧:转换公式

从位 (bits) 转换为字节 (Bytes),除以 8

从字节 (Bytes) 向上转换为 KiB, MiB, GiB 等,每进一级除以 1024

4.2 计算图像文件大小 (1.3.2)

图像的总文件大小(以位为单位)是通过将像素总数乘以色彩深度得到的。

图像文件大小公式:
\[文件大小\ (bits) = 分辨率\ (宽 \times 高)\ \times\ 色彩深度\ (bits\ per\ pixel)\]

(通俗地说:文件大小 = 像素总数乘以每个像素的位数)

分步示例:

一张图像的分辨率为 100 x 50 像素,色彩深度为 8 位。

  1. 计算像素总数: \(100 \times 50 = 5000\) 个像素。
  2. 计算总位数: \(5000 \times 8 = 40000\) bits。
  3. 转换为字节: \(40000 \div 8 = 5000\) Bytes。
  4. 转换为 KiB: \(5000 \div 1024 \approx 4.88\) KiB。

4.3 计算声音文件大小 (1.3.2)

录音文件的大小取决于采样率、采样分辨率以及声音的时长(轨道长度)。

声音文件大小公式:
\[文件大小\ (bits) = 采样率\ \times\ 采样分辨率\ \times\ 音频长度\ (秒)\]

(通俗地说:文件大小 = 每秒采样次数乘以每个采样位数再乘以时长)

分步示例:

录制一段 10 秒的声音片段,采样率为 44,100 Hz,采样分辨率为 16 位。

  1. 计算总位数: \(44100 \times 16 \times 10 = 7,056,000\) bits。
  2. 转换为字节: \(7056000 \div 8 = 882,000\) Bytes。

5. 数据压缩

5.1 压缩的目的与必要性 (1.3.3)

数据压缩是减小文件大小的过程。我们为什么要这样做?

  • 降低带宽需求:更小的文件意味着数据可以在网络(如互联网)上传输得更快。
  • 节省存储空间:你可以在硬盘、SSD 或内存卡中存储更多的文件。
  • 缩短传输时间:上传和下载速度更快。

5.2 压缩类型:有损 vs 无损 (1.3.4)

(i) 有损压缩 (Lossy Compression)
  • 定义:有损压缩会永久删除文件中的部分数据以减小体积。通常被删除的是人类感知不太明显的数据(如极高频的音频或肉眼难以察觉的细微色彩差异)。
  • 影响:它能实现最大的压缩比例,但文件无法还原回原始的高质量状态。
  • 示例:
    • 降低图像的色彩深度分辨率
    • 降低声音文件的采样率分辨率
    • 常见文件格式: JPEG (图像), MP3 (音频), MPEG (视频)。
(ii) 无损压缩 (Lossless Compression)
  • 定义:无损压缩通过识别并删除数据中的冗余信息(重复的模式)来减小体积,且不会永久丢失任何信息
  • 影响:原始数据可以从压缩文件中完美还原。文件体积的减小幅度不如有损压缩那么大。
  • 示例技术:游程编码 (Run Length Encoding, RLE)。RLE 非常适合处理大面积同色的图像(如卡通画或旗帜)。它不再存储“白、白、白、白、黑、黑”,而是存储为“(4 个白), (2 个黑)”。
  • 示例:如果一个图像文件中有连续 100 个白色像素,RLE 会将其记录为颜色(白)和数量(100)。
核心要点:压缩

LossLess(无损)= Look for patterns(寻找规律),Loss is not permanent(信息丢失非永久的,如 ZIP 文件)。

LossY(有损)= Data is forever gone(数据一旦丢失便不可找回,如 MP3)。