定点数运算
笔记
补码加减法
以及判断溢出方法
原码乘法
下图是手算乘法
下图是原码乘法
因为[Y]原=1.10111,所以Y0从低位开取,分别是1,1,1,0,1。(或者说C里面存的原来渐渐被挤掉的[Y]原的低位)
如果Y0=0,不用加[X]原,因为这一位0与[X]原一定等于0,0*任何数=0。
补码乘法
乘数 y 首先在末尾添加一个辅助位 0 ,每次讨论都是取 y 的最后两位,但每次移动仅移动一位。
判断 y 的最后两位是规则如下:
- 00 或者 11 时,直接右移一位;
- 01 时,先加 x 的补,然后右移一位;
- 10 时,先加 -x 的补,然后右移一位。
参考资料
[计算机组成原理] Booth算法 —— 补码一位乘法 - 中年二班 - 博客园 (cnblogs.com)
关于双符号位
1.溢出检测:双符号位能够容易地检查加、减运算中的溢出情况。
2.符号表示:双符号位还用于表示数值的符号。例如,00表示正号,11表示负号。
3.上溢与下溢的判别:上溢发生在两个同符号的数相加(或相异符号数相减)时,运算结果超出所能表示的数据范围。
这里题目[X]原=1.01001,负数从原来的1.变成11.。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 桐の小窝!
评论