欢迎来到数据表示(Data Representation)!

你有没有想过,一台电脑明明只能理解“1”和“0”,却能为你播放高清电影或你最爱的歌曲?在本章中,我们将探讨现实世界中的数据(如图像声音)是如何转换成电脑可以处理的二进制模式(bit patterns)。别担心,即使起初有些数学计算看起来很棘手——我们会带你一步步拆解!

1. 模拟(Analogue)与数字(Digital)

在存储数据之前,我们需要了解它是哪种类型。在现实世界中,大多数事物都是模拟(Analogue)的。这意味着它们是连续(continuous)的,具有无限的可能数值。想象一下传统的旋转调光开关,你可以将其滑动到任何亮度等级。而数字(Digital)数据则是离散(discrete)的,意味着它只有特定、分隔的数值(就像开/关按钮一样)。

模拟转数字转换(ADC)

由于电脑无法存储无限的“模拟”波形,它们使用模拟转数字转换器(Analogue to Digital Converter, ADC)。该装置会定期对模拟信号进行“采样”(sampling),并将其转换为二进制数值。你可以在模拟传感器(如温度计)和麦克风中找到 ADC 的身影。

为了将声音播放出来,我们使用数字转模拟转换器(Digital to Analogue Converter, DAC)。它将二进制位模式转回连续信号,让扬声器可以借此推动空气产生声音。

快速回顾:
模拟(Analogue): 连续的(现实世界)。
数字(Digital): 离散/二进制的(电脑)。
ADC: 模拟输入 → 二进制输出。
DAC: 二进制输入 → 模拟输出。

2. 图像表示

电脑表示图像主要有两种方式:位图(Bitmaps)矢量图(Vectors)

位图(Bitmapped Graphics)

位图就像一张方格纸,每一个小方格(称为像素 Pixel)都填满了特定的颜色。

位图关键术语:
分辨率(Resolution): 每英寸的像素数量(通常称为每英寸点数 DPI)。分辨率越高,图像就越清晰。
像素尺寸(Size in Pixels): 计算方式为 \( \text{width} \times \text{height} \)。
色深(Colour Depth): 用来表示单个像素颜色的位(bits)数。如果使用 1 bit,就只能有 2 种颜色(黑和白)。如果使用 8 bits,则可以有 \( 2^8 = 256 \) 种颜色。

计算存储需求:
要找出位图文件的大小(不计算元数据 Metadata),请使用以下公式:
\( \text{Storage Requirement} = \text{Width in pixels} \times \text{Height in pixels} \times \text{Colour Depth} \)

例子:一张 100x100 像素、色深为 8 bits 的图像。
\( 100 \times 100 \times 8 = 80,000 \text{ bits} \)。要换算成字节(bytes),请除以 8:\( 10,000 \text{ bytes} \)。

矢量图(Vector Graphics)

与其存储每个像素,矢量图存储的是一系列对象列表(list of objects)。每个对象(例如圆形、直线或矩形)都有各自的属性(properties),如位置、线条粗细和颜色。

类比:位图就像一张蛋糕的照片;而矢量图则是烘焙该蛋糕的食谱。

位图 vs 矢量图:
位图最适合照片,因为照片中的每个像素颜色可能都不同。当你放大时,它们会出现“锯齿”(模糊)。
矢量图最适合标志(logos)、字体和图标。它们可以无限放大到摩天大楼般大小也不会失真,而且文件大小通常小得多!

你知道吗? 位图文件还包含元数据(Metadata)。这是“关于数据的数据”——即额外的信息,如图像宽度、高度、色深以及拍摄日期。

3. 声音表示

要将声波转换为数字,我们会在特定的时间点对其振幅(高度)进行“采样”。

采样原则

采样率(Sampling Rate): 每秒采样的次数,以赫兹(Hz)为单位。
采样分辨率(Sample Resolution): 用来存储每个采样数值的位数。位数越多,记录波形“高度”的准确度就越高。

奈奎斯特定理(Nyquist Theorem): 为了准确记录声音,采样率必须至少是声音中最高频率的两倍
\( \text{Sampling Rate} \ge 2 \times \text{Highest Frequency} \)

计算音频文件大小:
\( \text{Size in bits} = \text{Sampling Rate} \times \text{Sample Resolution} \times \text{Seconds} \)

乐器数字接口(MIDI)

MIDI 并不是声音的录音!它是一组事件消息(event messages)(指令),告诉数字乐器该播放什么。它存储的内容包括“音符开启(Note On)”、“音符关闭(Note Off)”、“音高(Pitch)”和“音量(Volume)”。

MIDI 的优点:
• 文件非常小(适合慢速网络或旧设备)。
• 易于编辑(你可以瞬间将钢琴音色改为吉他音色)。
• 不会录入任何背景杂音。

4. 数据压缩

4K 视频等文件太大,难以传送,因此我们使用压缩(compression)来缩减其体积。

有损(Lossy)与无损(Lossless)压缩

有损压缩(Lossy Compression): 永久删除人类可能察觉不到的数据(例如极高频的声音或细微的色彩变化)。例子:JPEG, MP3。
无损压缩(Lossless Compression): 在不丢失任何数据的情况下缩小文件。当你“解压缩”时,它与原始文件完全相同。例子:PNG, ZIP。

无损压缩技术

1. 游程编码(Run Length Encoding, RLE): 与其存储“AAAAA”,它会存储“5A”。这对于含有大面积相同颜色的图像非常有效。
2. 字典编码(Dictionary-based methods): 电脑会建立一个常见模式的“字典”。与其重复存储整个模式,它只需存储该模式在字典中的简短参照编码即可。

常见误区: 学生常以为有损压缩总是“坏的”。实际上,它对于串流视频或音乐非常有用,因为它能将文件缩小到足以通过互联网即时传输!

5. 加密(Encryption)

加密是将数据扰乱的过程,只有持有正确密钥(key)的人才能读取。原始消息称为明文(plaintext),而扰乱后的消息称为密文(ciphertext)

凯撒密码(Caesar Cipher)

这是一种简单的“位移”密码。例如,位移值为 3 时,'A' 会变成 'D'。
弱点: 使用频率分析(frequency analysis)(统计字母出现的频率)或仅尝试所有 25 种可能的位移(暴力破解)非常容易破解。

维纳姆密码(Vernam Cipher / One-Time Pad)

维纳姆密码是唯一能提供完美安全性(perfect security)的密码,前提是必须遵守以下规则:
密钥必须是真正随机的。
密钥长度必须至少与明文一样长。
密钥只能使用一次(因此称为“一次性密码本”)。

在维纳姆密码中,明文与密钥会使用异或(XOR)逻辑运算进行结合。由于密钥是随机的,产生的密文也完全随机,若没有密钥,根本无法破解。

关键要点:
凯撒密码依赖于算法的隐蔽性(这很容易被猜到),而维纳姆密码则依赖于运算安全性(computational security)密钥的随机性