欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

揭秘原码一位乘法计算步骤的独特视角:即将呈现一种鲜少在网上的新理解方法

最编程 2024-08-01 09:05:21
...

首先,我们的例题是,计算二进制原码1101与1011的乘积,既然是要讲原码一位乘,那就先把这种计算方法的计算过程贴一下。

其实网上很多资料,过于沉浸于所谓的“右移”这一操作,从而把中间过程用各种颜色填充,希望讲明白右移之后的每一位去了哪里,反而让我们搞不懂重点在哪里,最后越看越蒙圈,我现在告诉你,看不懂这个计算过程,那就先不看,我放个你能看懂的。

说到乘积,如果不允许使用计算器,我们很容易想到小学学过的竖式计算吧,来,搞起~

这个能看懂吧?好,我们发现,我们用下面那个乘数(也就是“1011”)的每一位,与上面那个数(1101)计算出四个乘积,最后相加。

但是这时候我有个问题,我发现最后求四个数的和,有点难,我的脑子老是转不过来,我想两个两个的加。所以我把这个计算改成这样

 这样就好算多了,我用"1011"的后两位与"1101"先求出两个乘积,相加后,再用前一位的“0”与“1101”求一个乘积,拿前面相加得到的结果,跟新的这个乘积相加,以此类推。你会发现我这样算,跟传统的竖式是一样的,只不过我不是乘完所有的一起相加,除此之外,与之前完全相同。

这时候,我把这个计算过程与原来的原码一位乘法相对比,如下

 注意一下我用相同颜色方框框出来的加法运算,有没有发现什么相同点?

没错,参与相加的数相同,这是巧合吗?当然不是

我们知道,传统的竖式计算,我们会把新得到的乘积向左移动一位放置,每向下一行,就多往左移动一位,而我们的原码一位乘法则是把之前得到的结果向右一位,每一次得到新的乘积之前,就把之前的得数多向右移动一位,而新计算出的乘积,则永远在固定的位置。

【上面的不动,下面的往左】和【上面的往右,下面的不动】这得到的结果不是一样的吗?