CSAPP 第二章 笔记

发布时间 2023-10-25 13:37:55作者: dddon

信息存储

  • 十六进制表示法
    • 0x开头
  • 字数据大小
  • 寻址和字节顺序
    • 大端法/小端法
  • 布尔代数
  • C中逻辑运算
  • C中移位运算
    • 右移(算数/逻辑)

整数表示

无符号数编码

补码编码

各种转换

  • 有无符号数之间的转换

  • 不同字长整数之间的转换

    • 小->大
      • 无符号数:补零
      • 有符号数:补符号位
    • 大->小
      • 截断(取模)

整数运算

无符号数

  • 加法

  • 取反

  • 乘法

  • 与整数相乘
    优化为加减和移位相组合

  • 除以2的幂

    • 逻辑右移

补码

  • 加法


  • 其中-x可以表示为补码
  • 乘法
  • 与整数相乘
    优化为加减和移位相组合
  • 除以2的幂
    • 算术右移
      • x<0时,加入偏置(1<<k)-1

浮点数

IEEE浮点表示

  • 形式
    $ V=(-1)^s × M × 2^E$
    • s:符号
    • M:尾数
    • E:阶码
  • 格式
    • 单精度时 1+8+23
    • 双精度时 1+11+52
  • 编码值
    • 规格化

      - 其中偏置量bias与E的位数k有关
      \(bias = 2^{k-1} - 1\)
    • 非规格化
    • 无穷大
    • NaN(不是一个数)

示例

舍入

其中,向偶数舍入:

  • 目的:避免统计偏差(一半向上舍入,一般向下舍入)
  • 二进制中向偶数舍入:0为偶,1为奇