💻 第一章 计算机的三大原则
📄 一句话概括

文字有编号、颜色是三组数、声音是一串采样值——计算机的世界里一切皆数字,数字化说的就是这套转换。

📝 本节和前面几节的关系

原则二说程序是指令加数据,这一节追问一句:数据长什么样?答案干脆利落——全是数字。

一、文字是编号

计算机只认数字,所以每个字符都发一个编号。英文有 ASCII 码(A 是 65),全世界的字符合起来有 Unicode 统一编号。 你在屏幕上看到【网】这个字,实际过程是:内存里存着编号 -> 按编号查字库 -> 把字形的点阵画出来。存和传的始终是编号。

二、颜色和图像是数字

屏幕上一个像素=红、绿、蓝三盏小灯的亮度,各用 0~255 一个数表示,比如红色就是 (255, 0, 0),写成网页代码是 #FF0000。 一张 1920×1080 的图,就是 200 多万个像素、600 多万个数字排成的方阵。所谓 P 图,就是按规则改这些数字。

三、声音也是数字

声音是空气的振动。计算机每隔一小段时间量一次振幅(叫采样),CD 音质每秒量 44100 次,每次记一个数字。 于是歌声变成了很长的一列数字,播放时再按数字推动喇叭还原。MP3 就是把这列数字按人耳规律压短的技术。

四、为什么非要数字化

因为数字有个大好处:可以无损复制和校验。抄一遍数字还是那些数字;模拟信号(老式磁带)每抄一遍就劣化一遍。 这一条奠定了整个信息时代:存储、传输、加密(第十章),全建立在【一切皆数字】上。

五、动手 Demo:亲眼看字变数字

用 ord() 把几个字当场变出编号,再看看颜色和声音怎么数字化。

# 一切皆数字
for ch in "网A7":
    print(ch, "->", ord(ch))          # 字符变编号
print("红色 = #FF0000 = (255, 0, 0)")  # 颜色变三组数
wave = [0, 60, 95, 60, 0, -60, -95, -60]  # 声音的 8 个采样
print("采样:", wave)

实跑输出:

--------------------------------------------------------------------
对计算机来说,什么都是数字
--------------------------------------------------------------------

原则 3 的推论:计算机的世界里只有 0 和 1,所以一切都要先变成数字。

[文字 -> 数字] 每个字符都有一个编号(Unicode 码点):
    字符 网 -> 编号 32593 -> 二进制 111111101010001
    字符 A -> 编号 65 -> 二进制 1000001
    字符 7 -> 编号 55 -> 二进制 110111

[颜色 -> 数字] 一个像素 = 红/绿/蓝三个 0~255 的数:
    红 = R255 G0 B0 = #FF0000
    天蓝 = R100 G180 B255 = #64B4FF
    白 = R255 G255 B255 = #FFFFFF

[声音 -> 数字] 每隔一小段时间量一次波的高度(采样):
    一个音波的 8 个采样点: 0, 60, 95, 60, 0, -60, -95, -60
    1 秒量 44100 次(CD 音质),声音就成了一长串数字。

反向也成立:读出编号还原字符、读出数字点亮像素、读出数字推喇叭。
「数字化」三个字,说的就是这套转换。

ord('A') 是 65——跟教材里 ASCII 表对得上;汉字【网】的编号大得多,因为 Unicode 把十万多个字符排了号。 反过来 chr(65) 能把编号变回字符——存进去是数字,读出来是内容,双向都通。

30 秒实验

  1. 打开 Python 输入 ord('A') 和 chr(66),亲手玩一下编号与字符的互换。
  2. 用截图工具放大一张图到像素级——看到彩色小方块时,你看到的就是一格格数字。

常见误区

  1. 以为计算机里存着【网】字的形状——存的只是编号,字形是显示时查表画的。
  2. 以为图像和声音是【连续】的——数字化后全是离散的数字,只是密度高到人眼人耳分不出。
自测三问(点开对答案) 1. 【网】字在计算机里存的是什么? —— Unicode 编号(一个数字),显示时按编号查字库画出字形。 2. 一个像素由几个数字描述? —— 三个:红绿蓝各自的亮度(0~255)。 3. 数字化的最大好处是什么? —— 可无损复制与校验——数字抄多少遍都不劣化。

相关笔记