二进制乘法原理

二进制乘法原理:

           1111B*1111B=11100001

                                           1111

                                         11110

                                       111100   

                                  +1111000     二进制相加   

                        ———————— 

                                  11100001

                            

就是左移(进位)8次,每次最高位为1则加进去,8位移完就得出乘积了实际上和我们做10进制的乘法是一样的,只不过这里的进制是2罢了。

比如5×6,转成二进制就是0101×0110 十进制乘法大家都会做,公式就是我们他当成十进制101×110来计算下看看

 4位乘积=被乘数×千位被+被乘数×百位+被乘数×十位+被乘数×个位既0101×0110=101×0000+101×100+101×10+101×0 变化下:

 4位乘积=被乘数×千位数×1000+被乘数×百位数×100+被乘数×10位数×10+被乘数×个位数

既0101×0110=101×(0×1000)+101×(1×100) +101×(1×10)+101×0

 再变化下: 4位乘积=被乘数×千位数×10×10×10+被乘数×百位数×10×10+被乘数×10位数×10+被乘数×个位数

既0101×0110=101×(0×10×10×10)+101×(1×10×10)+101×(1×10)+101×0 =(((101×0)×10)+(101×1))×10+(101×1))×10+101×0 

,实际上乘法结果就是被乘数乘以每一位乘以模(10)的N次方的累计和(其实左移位就是进位啦,看得出来吗?)而换成2进制的话很简单,把10读成二进制2就行了,结果还是:

 4位乘积=被乘数×千位数×10×10×10+被乘数×百位数×10×10+被乘数×10位数×10+被乘数×个位数

既0101×0110=101×(0×10×10×10)+101×(1×10×10)+101×(1×10)+101×0 =(((101×0)×2)+(101×1))×2+(101×1))×2+101×0 

由于乘2就是移位(进位),把上面的公式中乘2换成左移位就行了 PS:由于二进制只有0和1,乘2可以用左移一位来实现,也可以“自己加自己”来实现的,很多CPU的左移指令和“自己加自己”一样用软件乘法要耗费很多CPU时间,只要CPU有硬件乘法器,当然是用硬件的啦,哪会快很多的.

    原文作者:大整数乘法问题
    原文地址: https://blog.csdn.net/limanjihe/article/details/44515315
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞