笔记

补码加减法

以及判断溢出方法

原码乘法

下图是手算乘法

下图是原码乘法

因为[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.。