原码一位乘法

本文通过具体实例详细解释了原码一位乘法的工作原理及其与传统手算乘法之间的联系,展示了如何利用原码一位乘法计算两个二进制数的乘积。

一、原码一位乘法

1.手算乘法(铺垫)

例子:13*(-11)= -143
在这里插入图片描述

被乘数不动,从乘数最低位开始,每一位乘上被乘数,将所得的结果(部分积)记下,再从比最低位高一位的数字开始如上循环,直至乘数的最高位也计算完毕。最终将每一竖列的数值相加即可得出结果。

按照我们小学所学的乘法计算公式应该如上图所示没有问题,我们教科书里说的原码一位乘法其实就是根据这个得出来的。

因为在计算过程中,我们发现被乘数是不动的,而是把乘数的每一位去乘上被乘数的每一位,每次结果都会左移一位。(看下图)
在这里插入图片描述

但与普通乘法不同的是原码一位乘法计算过程中出现了进位C、部分积P和乘数寄存器Y。

2.原码一位乘法

还是上面那个例子。
在这里插入图片描述
因为13的原码表示为 01101,(-11)的原码表示为 11011。(第一位为符号位)由0和1异或的结果为1,表明结果为负数。故最终结果-10001111=-143与手算乘法结果一致,得以证明原码一位乘法的正确性。

回顾一下,我们可以发现两种方法的计算原理其实是类似的,原码一位乘的计算过程中,每一次相加得出来的部分积在下一次相加之前之所以要右移一位,是因为下一次得出的部分积仍保持位置不动,而之前一次的部分积已经右移了一位,这就相当于手算乘法中的每一次部分积结果都要往左写一位是一样的,(手算乘法导致过程会越写越长,而原码一位乘中的部分积位数是固定的)。

评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值