数据的表示

纯小数正数

  • 源码/反码/补码 = 真值

纯小数负数

  • 源码
    • 1 - 真值
    • 符号位为1,其余不变
  • 反码
    • 2 + 真值
    • 保留符号位,其余逻辑取反
  • 补码
    • 2 + 真值,既按权展开,再减去一个最高位。对比正数,最高位为0,所以补码值等于真值
    • 反码最末位加一
    • 计算机内部大多是用补码

补码的运算

  • 设X为真值 [x]补 = -[-x]补 所谓的负,即是把首位取反
  • 快速得到一个真值的补码:
    • 设X= -0.101 二进制真值
    • 符号位为1—>1???—>.101
    • 最小位不变 —>1??1—>10
    • 中间取反—>1011

正溢/负溢

  • 双符号位(看哪个在前)
    • 00 正数
    • 11 负数
    • 01 正溢
    • 10 负溢
  • 单符号
    • sf 符号位
    • cf 符号位进位
    • sf 与 cf 进行亦或运算 得到1为负溢,得到0为正溢
  • 亦或运算(同号为0,异号为1)
    • 00 = 0
    • 11 = 0
    • 10 = 1
    • 01 = 1

串行运算/并行运算

总线

  • 数据总线(双向)
  • 地址总线(里边都是地址)(单向)
  • 控制总线(里边有命令,也有状态信息)(双向)

总线的分类:

  • CPU内部总线(如连接运算器和控制器的总线)(缓冲和锁存)
  • 系统总线(内存 显卡)
  • 外部总线(打印机)

定点运算器

  • 单总线结构运算器
  • 双总线结构运算器
  • 三总线结构运算器

浮点数的运算

  • 检查0
  • 对齐阶码
    • 小阶码向大阶码对齐(这样精度高)
  • 尾数求和
    • 阶码小的,尾数向右退阶码差个位置,前头补位(正数补0,负数补1)
    • 超出的尾数部分用”()”括起来保留,舍入处理时备用
  • 规格化(单、双符号的规格化不同)
    • 单符号位:
    • 1.0?待补充
    • 双符号位:
    • ① 00.1 x x … x
    • ② 11.0 x x … x
    • ③ 00.0 x x … x
    • ④ 11.1 x x … x
    • ⑤ 01.x x x … x
    • ⑥ 10.x x x … x
    • 3-6种情况要移位,直到满足1或2情况
  • 舍入处理
    • 最常用的是就近舍入:()内最高位为1 进1;最高位为0,舍去
    • 还有什么向负无穷舍入
  • 运算例子:
    • x = 0.11012 y = -0.10102