源码一位乘
来源:互联网 发布:mac os低版本如何升级 编辑:程序博客网 时间:2024/04/27 23:34
好多同学在学习计算机组成原理时在原码乘法时感觉很吃力,下面我介绍一种思路,故事是这样的,有些漫长,但也需要些耐心:
其实质是模仿手工乘法过程,例如手工计算二进制3*5过程为:
0011
× 0101
-------------- 被乘数 乘数自低位到高位
0011 0011 * 1
0000 0011 * 0
0011 0011 * 1
+ 0000 0011 * 0
--------------- 四个加数属于乘积的一部分,故称为"部分积"
0001111 最终得到"积"
由于计算机运算过程中运算器每次只能对一对数据进行算数逻辑运算,所以将部分积求和得到"积"的过程分解成四次加运算:
00000000 最初的部分积累加数,还没有开始累加,为0
+ 0011 0011 * 1
----------------
00000011 一次位乘后的部分积累加和
+ 0000 0011 * 0
----------------
00000011 二次位乘后的部分积累加和
+ 0011 0011 * 1
----------------
00001111 三次位乘后的部分积累加和
+ 0000 0011 * 0
----------------
00001111 四次位乘后的部分积累加和
因为计算机在部分积累加过程中实现位对齐比较复杂,仔细分析累加后,发现每作一次乘法累加,得到一位最终乘积,而乘数的一位作废不再使用.将左移部分积改为右移操作使得加法器直接对齐,将一位原码乘法过程改变为:
部分积 乘数 作废的乘数 注释
0000|0101 | 初始化乘法算法
+ 0011|0101 | 1. 加入 0011 * 1
-----------|-------|---------
0011|0101 | 得到第一次部分积累加和
00011|010 | 1 将部分积右移一位对起加法器
+ 0000 |010 | 1 2. 加入 0011 * 0
----------- |------|---------
00011|010 | 1 得到第二次部分积累加和
000011|01 | 01 将部分积右移一位对起加法器
+ 0011 |01 | 01 3. 加入 0011 * 1
----------- |-----|---------
001111|01 | 01 得到第三次部分积累加和
0001111|0 | 101 将部分积右移一位对起加法器
+ 0000 |01 | 101 4. 加入 0011 * 0
----------- |----|---------
0001111|0 | 101 得到第四次部分积累加和
00001111| | 0101 将部分积右移一位对起加法器
最后结果
00001111 (十进值15)
实际上就本例而言,在做原码一位乘时已经知道了结果有8位,而且将手工乘时的乘数左移,改为部分积右移,再加乘数,实质上与手工乘完全一样,只不过,这个算法方便计算机去运算而已。
- 源码一位乘
- 原码一位乘和补码一位乘
- 计算机中的原码一位乘和补码一位乘
- 使用加法、减法以及一位来实现乘除法
- 定点小数原码一位乘(C++实现)
- 定点小数补码一位乘(校正法)
- 定点小数补码一位乘(Booth比较法)
- 计算机组成原理COP2000课设 原码一位乘
- C++实现原码一位乘,计组上机题
- 【快速乘】【乘】【乘!!!!】
- 左乘&右乘
- 点乘 叉乘
- [源码]个人的大数相乘法及[转载]大数加减乘除法完全设计
- 动态规划相关问题源码(包括矩阵链乘、LCS、和max sum)
- 动态规划算法之矩阵连乘 及最长公共字符串多种解法源码
- 乘公交车
- 叉乘
- 叉乘
- Tomcat 7 的七大新特性
- 对于JAVA的学习
- RSS In Outlook
- 注解匹配表字段与实体字段
- JavaScript扩展项目
- 源码一位乘
- bim6.0启动报perfloginit错误的问题解决办法
- win7操作系统如何配置MYSQL5ODBC
- Java -- 错误与异常
- WINCE5.0+2443 camera中断不能进来的原因
- POJ2524(并查集)
- MySQL源码安装步骤
- 做为一名sap顾问,这些道理有没有人告诉你?
- sap顾问的气质培养