欢迎光临
我们一直在努力

(学习笔记)2.5 小结

文章目录

  • 线索栏
  • 笔记栏
    • 1. 信息表示的基石
    • 2. C语言的抽象与实现
    • 3. 整数表示与运算(补码)
      • 1)编码标准:
      • 2)运算属性
      • 3)类型转换规则
      • 4)隐式转换陷阱
    • 4. 位级运算的实用技巧
    • 5. 浮点数表示与运算(IEEE 754)
      • 1)编码思想
      • 2)标准格式
      • 3)根本区别
  • 总结栏

线索栏

  • 核心范式:计算机表示一切信息的根本范式是什么?
  • 表示差异:整数(补码)和浮点数(IEEE 754)的编码目标与核心性质有何根本不同?
  • C语言实现:C语言如何适应不同的机器字长和编码?32位与64位程序的关键区别是什么?
  • 运算属性:计算机的整数运算(补码/无符号)与真实整数运算相比,保留了哪些代数性质?失去了什么?这带来了什么机遇与风险?
  • 类型转换:C语言中,在相同长度的有符号与无符号整数间进行强制类型转换时,遵循什么核心规则?隐式转换有何危险?
  • 位运算技巧:如何利用移位和算术运算来优化计算或生成特定的位模式(掩码)?
  • 浮点数警示:为什么使用浮点运算必须“非常小心”?

  • 笔记栏

    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)不遵守普遍算术属性:不满足结合律等,运算顺序可能影响结果。


    总结栏

    本章系统地揭示了计算机中信息表示与处理的底层机制,核心在于理解“位+上下文”​ 这一根本范式。

  • 两条主线: (1)整数(补码):追求在有限范围内运算的精确性,并保留关键代数性质以支持优化。 (2)浮点数(IEEE754):追求在广大范围内的近似性,必须以牺牲结合性等严格数学属性为代价。
  • C语言的双刃剑:C提供了贴近硬件的控制力(如位操作、算术优化),但其隐式类型转换和由实现定义的行为也布满了陷阱。程序员必须在享受性能优化的同时,对溢出、舍入和转换保持高度警惕。
  • 核心技能:深入理解补码、IEEE754的位级表示,掌握整数运算的溢出行为、有/无符号转换规则,以及浮点运算的非精确性,是编写正确、可靠、高效系统程序的基石。
  • 赞(0)
    未经允许不得转载:171主机测评 » (学习笔记)2.5 小结
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址