# 数据的编码、存储与传输 ::: tip 🎯 核心问题 **计算机如何表示和存储各种数据?** 文字、图片、视频、声音...这些在现实世界中形态各异的信息,是如何变成 0 和 1 的?又是如何存储和传输的?本章带你理解数据的编码、存储和传输原理。 ::: --- ## 0. 全景图:数据的生命周期 想象你要寄一封信给朋友: 1. **编码**:把想法变成文字(信息编码) 2. **存储**:写在纸上(数据存储) 3. **传输**:通过邮局寄出(数据传输) 计算机处理数据也是类似的过程: | 阶段 | 做什么 | 核心问题 | 类比 | |------|--------|---------|------| | **编码** | 把信息变成 0 和 1 | 如何用二进制表示各种数据? | 把想法变成文字 | | **存储** | 把数据保存起来 | 数据存在哪里?怎么组织? | 写在纸上 | | **传输** | 把数据送到别处 | 如何可靠、高效地传输? | 邮局寄信 | ::: tip 📊 逐行解读这张表 **编码**:计算机只认识 0 和 1,所以所有数据都要"翻译"成二进制。文字用 ASCII 或 Unicode 编码,数字用二进制表示,图片用像素值,声音用采样值。 **存储**:编码后的数据需要保存起来。存储介质从快到慢有:寄存器 → 缓存 → 内存 → SSD → 硬盘 → 云存储。越快的存储越贵、容量越小。 **传输**:数据需要在不同设备间流动。传输方式有串行(一位一位传)和并行(多位同时传)。现代高速接口(USB、PCIe)多采用串行方式。 ::: --- ## 1. 数据编码:用 0 和 1 表示一切 ### 1.1 文本编码 ::: tip 💡 字符编码的演变 **ASCII(1963年)**: - 用 7 位二进制表示 128 个字符 - 包括英文字母、数字、常用符号 - 问题:只能表示英语,无法表示中文等 **Unicode(1991年)**: - 统一编码标准,覆盖世界上所有文字 - 目前已收录超过 14 万个字符 - 常用编码方式:UTF-8(变长编码,1-4 字节) **UTF-8 的巧妙设计**: - ASCII 字符(0-127)只用 1 字节,完全兼容 - 常用汉字用 3 字节 - 根据"前导位"判断一个字符占几个字节 ::: **常见字符编码对比:** | 编码 | 字节数 | 支持字符 | 特点 | |------|--------|---------|------| | **ASCII** | 1 字节 | 128 个 | 仅英语,兼容性好 | | **UTF-8** | 1-4 字节 | 所有文字 | 变长编码,主流标准 | | **UTF-16** | 2-4 字节 | 所有文字 | 定长为主,Windows 常用 | | **GBK** | 1-2 字节 | 中英文 | 中文专用,不推荐新项目使用 | ### 1.2 数字编码 ::: tip 💡 整数如何用二进制表示? **无符号整数**:直接用二进制表示 - 8 位可以表示 0-255 - 32 位可以表示 0 到约 42 亿 **有符号整数**:用补码表示 - 最高位是符号位(0 正 1 负) - 正数:直接用二进制 - 负数:正数的二进制取反加 1 **为什么用补码?** - 加法减法统一处理 - 0 的表示唯一 - 硬件实现简单 ::: **浮点数表示(IEEE 754 标准):** | 部分 | 作用 | 位数(32位浮点) | |------|------|-----------------| | **符号位** | 正负 | 1 位 | | **指数位** | 决定大小范围 | 8 位 | | **尾数位** | 决定精度 | 23 位 | ### 1.3 多媒体编码 **图像编码**: - **位图**:每个像素用 RGB 值表示(红绿蓝各 8 位) - **压缩**:JPEG(有损)、PNG(无损) - **矢量图**:用数学公式描述形状(SVG) **音频编码**: - **采样**:把连续声波变成离散点 - **量化**:把采样值变成数字 - **压缩**:MP3(有损)、FLAC(无损) **视频编码**: - 视频是一帧帧图像 - 关键技术:帧间压缩(只记录变化部分) - 常见格式:H.264、H.265、VP9 --- ## 2. 数据存储:速度与容量的权衡 ### 2.1 存储层次结构 ### 2.2 存储器类型 | 类型 | 原理 | 特点 | 应用 | |------|------|------|------| | **SRAM** | 触发器 | 极快,但昂贵 | CPU 缓存 | | **DRAM** | 电容充放电 | 较快,需刷新 | 内存 | | **Flash** | 浮栅晶体管 | 断电不丢失,有写入寿命 | SSD、U 盘 | | **HDD** | 磁盘磁性记录 | 容量大,有机械延迟 | 机械硬盘 | ### 2.3 存储的关键指标 ::: tip 💡 如何评估存储性能? **访问时间**:从发出请求到获得数据的时间 - 内存:约 100 纳秒 - SSD:约 100 微秒 - HDD:约 10 毫秒 **吞吐量**:单位时间能传输的数据量 - 内存:几十 GB/s - SSD:几 GB/s - HDD:100-200 MB/s **IOPS**:每秒能进行的读写操作次数 - SSD:几万到几十万 - HDD:几百 ::: --- ## 3. 数据传输:从串行到并行 ### 3.1 传输方式 ### 3.2 常见接口标准 | 接口 | 类型 | 速度 | 应用 | |------|------|------|------| | **USB 3.0** | 串行 | 5 Gbps | 外设连接 | | **USB 4** | 串行 | 40 Gbps | 高速外设 | | **SATA III** | 串行 | 6 Gbps | 硬盘接口 | | **PCIe 4.0 x16** | 串行(多通道) | 32 GB/s | 显卡、SSD | | **以太网** | 串行 | 1-100 Gbps | 网络传输 | ### 3.3 传输的可靠性 ::: tip 💡 如何保证传输不出错? **校验机制**: - **奇偶校验**:简单的错误检测 - **CRC 校验**:更强的错误检测能力 - **校验和**:快速检测数据完整性 **纠错机制**: - **重传**:发现错误就重新发送 - **前向纠错**:发送冗余信息,接收方能自动纠正 **流量控制**: - 防止发送方发太快,接收方来不及处理 - 类似"确认收到再发下一个" ::: --- ## 4. 编码、存储、传输的协作 让我们看一个完整的例子:**保存一张照片到云端** ``` 1. 编码阶段 - 相机传感器捕捉光线 → 模拟信号 - ADC 转换 → 数字信号(RAW 格式) - JPEG 编码 → 压缩后的二进制数据 2. 存储阶段 - 写入手机内存(RAM)→ 临时存储 - 写入手机闪存(Flash)→ 持久存储 3. 传输阶段 - 读取闪存数据 → 内存 - 通过 Wi-Fi/4G 发送 → 网络传输 - 云端接收 → 写入云端存储 ``` ::: tip 💡 理解这个流程 每一步都涉及编码、存储、传输: 1. **编码**:把图像变成二进制数据 2. **存储**:在本地保存 3. **传输**:通过网络发送到云端 这三个环节紧密配合,才能完成"保存照片到云端"这个看似简单的操作。 ::: --- ## 5. 总结:数据的三重奏 让我们用一个比喻总结编码、存储、传输: | 概念 | 比喻 | 核心任务 | |------|------|---------| | **编码** | 翻译 | 把信息变成 0 和 1 | | **存储** | 仓库 | 把数据保存起来 | | **传输** | 快递 | 把数据送到目的地 | ::: tip 💡 核心启示 **数据处理的本质是"转换、保存、移动"**。 - 编码解决"如何表示"的问题 - 存储解决"如何保存"的问题 - 传输解决"如何传递"的问题 理解了这三点,你就会明白: - 为什么不同文件格式要选择不同的编码方式 - 为什么需要不同层次的存储介质 - 为什么传输速度和可靠性需要平衡 ::: --- ## 延伸阅读 - **字符编码详解**:深入学习 ASCII、Unicode、UTF-8 的设计原理 - **存储技术发展**:了解从磁带到 SSD 的技术演进 - **网络传输协议**:学习 TCP/IP 如何保证可靠传输 - **数据压缩算法**:了解 ZIP、JPEG、MP3 等压缩原理