今天是2021-3-5。
一。定点数的加减
机器数的选择
补码
溢出
- 受字长限制,运算的结果会超出数据类型表示的最大范围
- 只会发生在同号数的加运算中
溢出检测‘
- 检测操作数和运算结果的符号位是否一致
- 运算时最高位和符号位产生的进位位是否同步。最高位指符号位右边的第一位
- 采用双符号位时,运算结果的两个符号位相同则不溢出,不相同则溢出,此时最高符号位代表运算结果的真正符号
并行进位
相对于串行进位来说,并行进位的高位结果并不需要依赖低位结果得出,只与参与运算的加数与被加数有关,各进位的运算可以并发进行。
二。定点数的乘法
机器数的移位
- 逻辑左移:依次左移,左边位移出,右边空位补0
- 逻辑右移:依次右移,右边位移除,左边空位补0
- 算数左移:依次左移,左边位移出,右边空位补0,移一位相当于乘2,符号位变化表明溢出
- 算数右移:符号位不变,依次右移,右边位移除,将符号位拷贝到左边的空位,移一位相当于除二
原码的一位乘法
假设x=0.110,y=0.101,部分积z=0
6. z=1x+0=0.110,z右移一位=0.011,y=0
7. z=0x+0.011=0.011,z右移一位=0.001,y=10
8. z=1x+0.001=0.111,z右移一位=0.011,y=110
9. xy=(0|1).0.011110
10. 总结来说就是,z初始为0,每次加上y的最后一位数x,然后z右移一位、y右移一位,z右移移出的位拷贝到y的左边空位,循环。y初始的全部有效位数移出后,xy的结果就是(x、y的符号位异或).zy
补码的一位乘法
x补y补,部分积z=0,该法则需要在y的尾部增加一位,即y(n+1),由y(n+1)-yn的值来控制下一步的计算,x取双符号位参与运算,y取单符号位参与运算
假设m=y(n+1)-yn
11. 如果m=0,z+0然后右移一位,y右移一位
12. 如果m=1,z+x然后右移一位,y右移一位
13. 如果m=-1,z-x然后右移一位,y右移一位
同样,也是循环y的有效位数次后, x补y补=zy
三。定点数的除法
原码/补码一位除法–加减交替法
定点数的运算 —— 原码、补码的除法运算