计算机组成原理——乘法注意点总结

本文详细介绍了原码和补码下的一位乘及两位乘运算过程,包括校正法和Booth算法。讨论了符号位处理、移位操作以及不同情况下的加法计算,同时提到了估算符号位作为检验计算正误的方法。内容涵盖计算步骤、注意事项及特殊情况处理,旨在深入理解数值计算原理。
摘要由CSDN通过智能技术生成
1、原码一位乘,符号位和数值位分开计算,数值位取绝对值进行计算,这也是为什么原码一位乘的移位是逻辑移位的原因。
2、除数每有一位数值位,就要计算一次,计算之后又要将乘数无用的数值位剔除,所以加 n 次,移位 n 次

具体过程描述:
	1、将两个数符号位取出,得到符号位
	2、将 0 写入部分积,乘数写入 乘商寄存器
		取乘数的最后一位 * |x| 放到部分积
		按照加法运算计算
		右移
		重复上述步骤,直到 乘商寄存器中没有乘数为止
1、补码一位乘有两种方式:
	校正法:
		1) 由于校正法可以看作 被乘数补码 和 乘数绝对值的 原码一位乘 再加上 ys * [-x]补,所以是 移位 n 次,加 n 次,校正的那次加法不算在内,做题时要注意
		2) 符号位 “原码一位乘按照原码一位乘法来”,最终符号等于正常加法的符号
	booth算法:
		1) 符号位参与运算,也正因为如此,加法运算多了一次,n + 1, 移位运算 n 次
		2) 最后符号位所在位运算不移位
		3) 由于符号位参与运算,符号自然产生
校正法具体过程描述:
	1) 取出乘数最后一位,部分积加 最后一位 * [x]2) 到了所有乘数位数均用完的时候,若乘数为负数,则加 [-x]3) 符号位自然产生,不用运算。
	
booth算法具体过程描述:
	1) 设置 y(n + 1)
	2)y(n + 1) 减去乘数最后一位,得到数 i
	3) 将 i == 0 ? 0 : [i * x]补 放到部分积做加法
	3) 将乘数最后一位放到 y(n + 1),整体右移
	4) 执行直到最后一步不右移
原码两位乘:
	1) 符号位 和 数值位 分开运算
	2) 被乘数取三位符号位,乘数依照数值位数的奇偶来添加符号位:
		偶数:添加两位,最后一步不移位,加 n / 2 + 1 次,移位 n / 2 次
		奇数:添加移位,最后一步移位,加 (n + 1) / 2 次,移位 (n + 1) / 2
	3) 原码一位乘只涉及加 |x| 或者 加 0,而原码两位乘还涉及到 - x,所以用补码表示,于是移位时候的补位遵循补位规则(算数右移)
	4) 因为原码两位乘有个 + 2 x 的操作,所以为了正确的保留符号,取三位符号位

具体过程描述:
	确定乘数添加的符号位数,欠账寄存器置 0 
	取乘数最后两位数值,转化成 十进制数 后加上 欠账寄存器数值
	设最后得到的值为 i, 如果
		1) i = 0, 1, 2, 则将 i * [x]补 (注意,转化成移位运算) 置于部分积做加法,0 赋值给欠账寄存器
		2) i = 3, 则将 [-x]补 置于部分积做加法, 1 赋值给 欠账寄存器
		3) i = 4, 则加 0,将 1 赋值给 欠账寄存器 
		4) 最后一步看是不是加 0,不是就移位,是就不移位
补码两位乘:
	1) 符号位参与运算,符号自然产生
	2) 符号位位数的选取与原码两位一致
1、在算之前可以大概估算一下符号位,作为检验正误的手段也不错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值