数据的表示
纯小数正数
- 源码/反码/补码 = 真值
纯小数负数
- 源码
- 1 - 真值
- 符号位为1,其余不变
- 反码
- 2 + 真值
- 保留符号位,其余逻辑取反
- 补码
- 2
+ 真值,既按权展开,再减去一个最高位。对比正数,最高位为0,所以补码值等于真值 - 反码最末位加一
- 计算机内部大多是用补码
- 2
补码的运算
- 设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
