Loading

补码一位乘法

这几天疫情在家看网课,学校的补码视频讲的太枯燥了。上B站结果就缺这一节😥。。。这就很悲伤呀。

对于补码反码和定点减法弄不明白的同学可以看看这篇:不列公式说定点运算,以及为什么需要反码补码https://www.cnblogs.com/AD-milk/p/12737812.html

补码乘法说来也简单,和原码差不多,符号位也要参与运算。

首先来看例子

设[X]补​=X0​.X1​X2​X3​...Xn​[Y]补​=Y0.​Y1​Y2​Y3​...Yn

​则有:[X∗Y]补​=[X]补​∗(0.Y1​Y2​Y3​...Yn​)−Y0​∗[X]补

​展开合并后有:[X∗Y]补​=[X]补​∗∑(Yn+1−Yn)2-n

看黄色部分,也就是说我们到底是加上X补还是减又或者是0,就看倒数第二位的值于倒数第一位的差值。

也就是说:

在遵循原码乘法的规则上,对部分积的加减做处理

1.Yn=Yn+1 ,那么部分积加上零(0*[X]补当然是零啦),再右移一位

2.Yn <Yn+1(01) ,部分积加上[x]补,再右移一位

3.Yn >Yn+1(10) ,部分积加上[-x]补,再右移一位

 

 

 这下诸位应该看懂了吧,怎么加,就是一直用倒数第二位减去倒数第一位的差值再去乘以X的补就OK了。

posted @ 2020-03-09 23:43  AD_milk  阅读(8583)  评论(0编辑  收藏  举报