计算机组成原理--浮点数表示以及原码一位乘法方法

计算机组成原理--浮点数表示以及原码一位乘法方法
x * y = z
讨论已知x和y的情况下,怎么通过原码一位乘法方法得出z
运算规则

  1. z的符号位通过x和y的符号位进行异或运算得到~(负负得正,正正得正,正负得负)
  2. 所以就不用讨论x和y的符号位啦,z除了符号之外的其他部分由x的绝对值乘以y的绝对值得到
    1、2两点总结一下就是说:被乘数和乘数均取绝对值参加运算,符号位单独考虑

我们手工进行乘法运算的时候,是通过y从右往左每一位都和x相乘,(乘完一次就往前缩进一个数位)然后把结果相加得到的,不过机器为了节约空间,毕竟按照手算的方法那样两个n位相乘最后可能会需要2n的长度空间才能得到结果,计算机是采用把每次用y的一位和x相乘的结果(叫做部分积)累加后右移一位,再处理y当前位的下一位的~

  1. 我们把被乘数x先取双符号,而且让部分积初始值为0,并且长度和被乘数x相同

计算机只有0和1,所以处理乘法的时候运算法则远没有99乘法表那么复杂,运算规则为:

  1. 从y的最后一位开始(一直到第一位)分别与x相乘:

当y的当前位为1,则部分积加上x的绝对值
当y的当前位为0,则部分积加上0
5. 右移一位,在前面加0。不断处理y的每一位,知道y的所有位都处理过为止

比如x = 0.1101 ,y = 0.1011

1、先把部分积设为初始值0(长度扩展到和x相同),即

00.0000
y的最后一位是1,所以要加上x的绝对值:
00.0000 + 00.1101 = 00.1101
右移1位,前面补0,变成了00.01101

2、下面处理y的倒数第二位,还是1,继续加x的绝对值:

00.01101 + 00.1101 = 01.00111
别忘记右移1位,前面补0,这样就变成了00.100111

3、y倒数第3位是0,只要加0就好了,所以还是:00.100111

既然加了0,别忘记右移一位,所以变成了00.0100111

4、y还剩最后一个位(也就是第一位)没处理啦,第一位是1哦,那就加上x的绝对值:

00.0100111 + 00.1101 = 01.0001111
别忘记右移一位!所以最后结果是 00.10001111
这就是最后结果
例题6.17
计算机组成原理--浮点数表示以及原码一位乘法方法
计算机组成原理--浮点数表示以及原码一位乘法方法