A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马不黑 中级黑马   /  2014-1-12 09:17  /  1437 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

虽然知道,最有效率的方法算出2乘以8的实现方法是2 << 3,但是不清楚为什么会是最有效率的呢?还去哪个高人指点?

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
这个你可以看下底层的汇编代码。
举个例子,因为移位指令占2个机器周期,而乘除法指令占4个机器周期。
不同指令集的指令运行时间不一样,但是移位的指令周期都比承储指令周期小。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 很给力!

查看全部评分

回复 使用道具 举报
2<<3—>2右移3位
是最有效率的,因为要算2乘以8需要加入算数运算符所以效率慢。
如果用移位算法只需要在二进制中进行移动就可以。计算机所识别的就是二进制,效率当然快了。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1 赞一个!

查看全部评分

回复 使用道具 举报
计算机的最底层即他所识别的的语言就是二进制语言。
回复 使用道具 举报
因为位移是直接操作的二进制数组
回复 使用道具 举报
这是位运算,也就是二进制数据的运算。计算机里所有的运算都是经过cpu进行指令转换成普通的二进制来运算的,位运算就是少了指令转换的这一步,所以效率高,这很正常的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马