用最有效率的方法算出2乘以8等於几? 为什么是2 < < 3 ?

windylcx 2009-06-24 01:13:11
加精

如题~~是在一个贴子上看到的~~难道跟机器指令有关~ 在java中
...全文
5398 163 打赏 收藏 转发到动态 举报
写回复
用AI写文章
163 条回复
切换为时间正序
请发表友善的回复…
发表回复
gz_eddie_htc 2011-12-10
  • 打赏
  • 举报
回复
位运算``毋庸置疑``
hywink 2011-12-09
  • 打赏
  • 举报
回复
这个乘以3就没用了。
S0603251 2010-11-23
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 lingyin55 的回复:]
计算机内部只有1/0而在内存中任何一个数据都是用单位存储的,
位运算就是对内存中的单位进行的计算比普通的+-*/快得多,
而且位运算是直接对内存操作而其他的+-*/要想把数据调到缓冲区再操作。
[/Quote]

总算知其所以然了,up!
sd5368821 2010-10-24
  • 打赏
  • 举报
回复
fdsfdsfsdfsdf
xkxxzw 2010-09-09
  • 打赏
  • 举报
回复
位运算是最快的
乐CC 2010-09-08
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 supermegaboy 的回复:]
真实的答案其实跟大家所认为的大不一样哦!!实际测试一下就知道了:


C/C++ code

#include <stdio.h>
#include <time.h>

int main(void)
{
clock_t start, end;
long i, j;
start = clock();
for( i = 0; i <= 100……
[/Quote]
编译器会优化?
dknlnl 2010-07-25
  • 打赏
  • 举报
回复
从代码上看2<<3可不比2*8高明,至新本新手是绝不喜欢.
如果说执行效率....java要不要编译的?不记得了..这个要看真正的机器码,不一定你写2<<3他就一定给你来三个移位...要看人家怎么处理.
xushuai0794 2010-07-23
  • 打赏
  • 举报
回复
移位思想,移位是最快的,不过现在很多编译器都变成智能化了,会吧2 * 8改成2 >> 3这种形式
zj294006 2010-06-03
  • 打赏
  • 举报
回复
奇怪我做1000000000次2<<3时间为5.203,2*8时间为5.187,好像后者要快.....
nampot2468 2010-05-26
  • 打赏
  • 举报
回复
学习了。
田暗星 2010-04-12
  • 打赏
  • 举报
回复
感觉不是最好的方法
2*8 = 8*2
所以最快的应该是 8 << 1
junzhione 2010-03-30
  • 打赏
  • 举报
回复
移位。。。。
hilojack 2010-03-25
  • 打赏
  • 举报
回复
快不快全看指令占用的指令周期,这个问题我认为没什么可纠结的。

如果要纠结的话,你就得问为什么mul占用的周期会比较长(当然编译器把乘法优化为移位指令的情况除外),其实按照组合电路的设计方法,其实mul完全可以设计为一个周期,但是电路设计就相当的复杂,这样是得不偿失的。除法的情况同情是这样!
liqiong1 2010-01-18
  • 打赏
  • 举报
回复
编译出来的机器指令最快,仅此而已。
hfjighbg 2009-12-21
  • 打赏
  • 举报
回复
越是简单的问题,参与的人就越多呀。
wotur 2009-10-31
  • 打赏
  • 举报
回复
如果移位和乘法的指令周期是一样的,那就没有什么差别的,
不过据我所知arm核的目前应该是移位的效率高,
很多低版本的arm指令集甚至根本不支持乘法指令!
xiaoliang_c 2009-10-27
  • 打赏
  • 举报
回复
是位运算
CNCQ163 2009-10-23
  • 打赏
  • 举报
回复
嗯,顶一下。
gx168853 2009-10-21
  • 打赏
  • 举报
回复
一个小问题就可以引申出好多想法,好好好,来这里真是太棒了
加载更多回复(143)

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧