ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

定点乘法原理

2022-01-17 02:02:00  阅读:227  来源: 互联网

标签:4X 2X 定点 原理 乘数 乘法 原码 rightarrow


定点乘法原理

目录

原码一位乘法

原码的一位乘与十进制计算乘法过程类似,只不过在存储方式上有一些技巧。因为两个n位乘数相乘得到的数应该是2n位,但是考虑到每对于乘数的每一位,我们读取并判断后都不会再使用,因此可以将其舍去;而恰好乘数部分需要一个新的位来进行位权的改变,因此我们可以利用乘数寄存器进行辅助存储。同时,移位操作也可以让判断电路固定在一个位置,有利于简化电路。

原码一位乘的具体过程如下图所示

可以看到,C就是乘数寄存器,而A称为部分积,最后计算完成后合并在一起,再补上符号位则得到原码的乘积

原码两位乘法

原码两位乘的原理也很简单,因为源码实际对于两位的情况只有4中并且不区分正负数,计算方法一致,如下表所示

\(Y_{i+1}Y_i\) 操作 部分积右移
00 +0 1位
01 +X 1位
10 +2X 1位
11 +3X 1位

但是上表存在一个问题,他的行为中不变、+X、+2X(移位后加)都可以方便的通过一步完成,但是+3X则需要拆解成两步,如果拆解成两步,那么对硬件设计和程序执行效率都会产生严重的负面影响。
所以我们实际采用的方法是将+3X分解为+4X-X,这样的话就能解决这个问题了,因为+4X又可以通过左移两位快速实现。
现在的问题变为-X怎么处理,当即再做一次加法显然不合适,因此我们引入一个标志位C进行存储,C=1表示我们欠下一个+4X,这样下一次计算时计算机就会补上一个+4X。进行右移2位后,+4X就变成了+X,因此计算大大简化了。
那么我们就可以将操作表扩展成如下模式

\(Y_{i+1}Y_i \ C\) 部分积 C置数 部分积右移
000 +0 \(0 \rightarrow C\) 2位
001 +X \(0 \rightarrow C\) 2位
010 +X \(0 \rightarrow C\) 2位
011 +2X \(0 \rightarrow C\) 2位
100 +2X \(0 \rightarrow C\) 2位
101 -X \(1 \rightarrow C\) 2位
110 -X \(1 \rightarrow C\) 2位
111 +0 \(1 \rightarrow C\) 2位

最后给出一个例子:

补码一位乘法

矫正法

booth公式

参考资料

https://wenku.baidu.com/view/b43fe4fd0242a8956bece412.html
https://blog.csdn.net/qq_42898299/article/details/118446418
https://blog.csdn.net/qq_45757722/article/details/111466747

标签:4X,2X,定点,原理,乘数,乘法,原码,rightarrow
来源: https://www.cnblogs.com/artlesbol/p/15811947.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有