数字系统与编码
1. 数字系统(Number Systems)
1.1 常见数字系统
系统 | 基数 | 符号集 | 示例 | 应用场景 |
---|---|---|---|---|
二进制 | 2 | 0, 1 | 1010 | 计算机底层电路、数据存储 |
八进制 | 8 | 0-7 | 17 | Unix文件权限(如chmod 755 ) |
十进制 | 10 | 0-9 | 42 | 日常计算 |
十六进制 | 16 | 0-9, A-F | 0x1F | 内存地址、颜色编码(#RRGGBB) |
1.2 进制转换方法
- 其他进制 → 十进制:加权求和
1010_2 = 1×2^3 + 0×2^2 + 1×2^1 + 0×2^0 = 10_{10}
- 十进制 → 其他进制:短除法取余
42_{10} \rightarrow 42÷2=21余0 → 21÷2=10余1 → ... → 101010_2
- 二进制 ↔ 十六进制:4位分组转换
1101\_0110_2 → D6_{16}
2. 数据编码(Data Encoding)
2.1 数值编码
编码类型 | 表示方法 | 范围(8位) | 特点 |
---|---|---|---|
原码 | 最高位为符号位(0正1负) | -127 ~ +127 | 零有+0 和-0 两种表示 |
反码 | 负数:符号位不变,其余位取反 | -127 ~ +127 | 过渡方案,现较少使用 |
补码 | 负数:反码+1 | -128 ~ +127 | 现代计算机标准,消除零歧义 |
移码 | 补码符号位取反 | -128 ~ +127 | 用于浮点数阶码(如IEEE 754) |
示例:
-5
的8位补码表示:原码:1000 0101 → 反码:1111 1010 → 补码:1111 1011
2.2 字符编码
标准 | 覆盖范围 | 存储方式 | 局限性 |
---|---|---|---|
ASCII | 英文、数字、控制字符(128个) | 1字节(7位) | 无法表示非拉丁字符 |
Unicode | 全球文字(如中文、emoji) | UTF-8(变长1-4字节) | 兼容ASCII,互联网首选 |
GB2312 | 简体中文(6763个汉字) | 2字节 | 仅支持简体中文 |
UTF-8编码规则:
- 1字节:
0xxxxxxx
(兼容ASCII) - 2字节:
110xxxxx 10xxxxxx
- 3字节:
1110xxxx 10xxxxxx 10xxxxxx
- 4字节:
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
3. 高级编码技术
3.1 浮点数编码(IEEE 754)
\text{值} = (-1)^S × 1.M × 2^{E-127}
- 32位单精度:
S(1位) | E(8位) | M(23位)
- 示例:
-0.75
的二进制表示:符号位S=1,0.75=1.1×2^{-1} → E=126(01111110), M=1000...0 最终:1 01111110 10000000000000000000000
3.2 错误检测编码
- 奇偶校验:附加1位使1的个数为奇/偶
数据:1010 → 偶校验:1010_0(1的个数为偶数)
- CRC循环冗余校验:多项式模2除法(用于网络传输)
- 汉明码:可纠正单比特错误的纠错编码
4. 实际应用案例
4.1 计算机内存存储
- 小端序(Little Endian):低位字节存储在低地址
32位整数0x12345678在内存中的存储(地址递增方向): 78 56 34 12
4.2 图像颜色编码
- RGB24位色:
R(8位) | G(8位) | B(8位) → 如纯红色:0xFF0000
- ARGB32位色:增加透明度通道(Alpha)
4.3 条形码与二维码
- EAN-13条形码:13位数字(前导位+左右数据+校验位)
- QR码:使用Reed-Solomon纠错编码,支持汉字(需UTF-8转换)
5. 关键问题与解决方案
Q1: 为何计算机使用补码表示负数?
- 解决零的歧义:补码中
+0
和-0
表示相同(均为000...0
) - 简化运算电路:加法器无需区分正负数,统一处理(如
5 + (-3)
可直接相加)
Q2: UTF-8如何实现变长编码?
- 前缀码设计:通过起始比特模式标识字节数(如
110
开头的必为2字节字符首字节) - 兼容性:ASCII字符(0-127)保持单字节不变
总结
数字系统与编码是计算机科学的基石,理解其原理对以下领域至关重要:
- 硬件设计(如CPU算术单元)
- 数据压缩(如哈夫曼编码)
- 网络安全(如校验和验证)
- 跨平台数据交换(如字符编码转换)
掌握进制转换、补码运算和Unicode处理能力,是开发者的核心技能之一。