码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-15 00:01:57      阅读:207      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!