计算机组成原理实验报告
计算机组成原理实验报告
姓名 学号 、 班级 、
实验题目 运算器部件实验 乘法器
一、实验目的
掌握乘法器以及booth乘法器的原理
二、实验原理
乘法计算步骤:
(1)从右到左用乘数的每一位乘以被乘数,每一次乘得的中间结果比上一次的结果往左移一位。
(2)积的位数比被乘数和乘数的位数要多的多。事实上,如果我们忽略符号位,n位的被乘数和m位的乘数相乘的结果的位数有(n+m)位。因此,乘法必须象加法那样处理溢出问题,如果两个32位的数相乘,积也只有32位的时候,就会出现溢出。
在上面的例子中,我们把十进制数的各位限制为0或1。因此,每一步的乘法相当简单:
(1)如果乘数位是1,则简单的复制被乘数到合适的位置(1×被乘数); (2)如果乘数位是0,则在合适的位置置0
因为二进制数的各位是0或1,所以与上面情况类似。
一个有效的计算有符号数乘法的是Booth算法,算法的新颖之处在于减法也可以用于计算乘积。假定210×610,或者说00102×01102:
0 0 1 0
X 0 1 1 0
+ 0 0 0 0 移位(乘数位为0) + 0 0 1 0 相加(乘数位为1) + 0 0 1 0 相加(乘数位为1) + 0 0 0 0 移位(乘数位为0) 0 0 0 0 1 1 0 0
Booth发现加法和减法可以得到同样的结果。例如, 610 = -210 + 810
或者 01102 = -00102 + 10002
因为在当时移位比加法快得多,所以Booth发现了这个算法。Booth算法的关键在于把1分类为开始、中间、结束三种。
当然一串0的时候加法减法都不做。因此,总结1的分类情况有4种如表2.4所示:
表2.4 1的分类