首页 > 其他 > 详细

(笔试题)只有逻辑运算实现乘法运算

时间:2015-06-15 00:01:41      阅读:426      评论:0      收藏:0      [点我收藏+]

题目:

如题所示

思路:

看一个实例,1011*1010,由于二进制的特殊性,可以将该乘法运算表达式拆分为两个运算,1011*1000以及1011*0010的和,对于二进制运算,左移一位,等价于乘以0010,左移三位,等价于乘以1000,因此两者的乘积为10110+1011000之和,即为1101110.

通过上述例子,可知一个乘法运算可以转化为一系列的移位和加法运算来完成。如a*b

最后一个1可通过b&~(b-1)求得,可通过b&(b-1)去掉,为了高效得到左移的位数,可以提前计算并保存在map中。

代码:

 

(笔试题)只有逻辑运算实现乘法运算

原文:http://www.cnblogs.com/AndyJee/p/4575916.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!