文章目录
- 线索栏
- 笔记栏
-
- 1. 信息表示的基石
- 2. C语言的抽象与实现
- 3. 整数表示与运算(补码)
-
- 1)编码标准:
- 2)运算属性
- 3)类型转换规则
- 4)隐式转换陷阱
- 4. 位级运算的实用技巧
- 5. 浮点数表示与运算(IEEE 754)
-
- 1)编码思想
- 2)标准格式
- 3)根本区别
- 总结栏
线索栏
笔记栏
1. 信息表示的基石
(1)位与字节:所有信息均编码为位(比特),并组织成字节序列。 (2)编码与约定:存在不同的编码方式表示整数、实数和字符串。不同计算机模型在编码数字和存储多字节数据时,字节顺序(端序) 的约定可能不同。
2. C语言的抽象与实现
(1)可移植性设计:C语言的设计包容了不同字长和数字编码的机器实现。 (2)32位 vs. 64位:当前正处于从32位向64位迁移的时代。64位程序的核心优势是突破了32位程序的4GB虚拟地址空间限制。重点应区分32位程序与64位程序,而非机器本身。
3. 整数表示与运算(补码)
1)编码标准:
大多数机器对整数使用补码编码。
2)运算属性
(1)有限性:由于编码长度有限,运算可能发生溢出。 (2)保留的代数性质:无符号数和补码运算仍满足交换律、结合律、分配律。这使得编译器能够进行安全优化(例如,用(x<<3)-x替代7x)。 (3)反直觉结果:有限性导致某些属性不再成立(如xx可能为负数)。
3)类型转换规则
相同字长的有符号与无符号整数间强制转换时,底层位模式保持不变,由函数
T
2
U
w
T2U_w
T2Uw和
U
2
T
w
U2T_w
U2Tw描述。
4)隐式转换陷阱
C语言的隐式强制类型转换常常导致程序员无法预料的结果,是程序错误的常见根源。
4. 位级运算的实用技巧
(1)补码非:~x + 1等价于 -x。 (2)生成掩码:要生成由w-k个0后跟k个1组成的位模式(如0…001…1),可使用表达式 (1<<k) – 1。原理是该模式的数值为 2k−1。 例:(1<<8)-1生成 0xFF。
5. 浮点数表示与运算(IEEE 754)
1)编码思想
以 x×2y的形式近似表示实数。
2)标准格式
最常用的是单精度(32位)和双精度(64位)。可表示特殊值:+∞、−∞、NaN。
3)根本区别
(1)有限范围与精度:可能发生溢出(上溢)和下溢(接近零的值被舍入为零)。 (2)不遵守普遍算术属性:不满足结合律等,运算顺序可能影响结果。
总结栏
本章系统地揭示了计算机中信息表示与处理的底层机制,核心在于理解“位+上下文” 这一根本范式。



