社区
Java EE
帖子详情
用最有效率的方法算出2乘以8等於几? 为什么是2 < < 3 ?
windylcx
2009-06-24 12:57:30
如题~~是在一个贴子上看到的~~难道跟机器指令有关~
...全文
785
20
打赏
收藏
用最有效率的方法算出2乘以8等於几? 为什么是2 < < 3 ?
如题~~是在一个贴子上看到的~~难道跟机器指令有关~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
youjianbo_han_87
2009-06-25
打赏
举报
回复
因为转换成机器码运行时,都是做移位操作,所以 移位最快
zhouzongjiu
2009-06-24
打赏
举报
回复
2<<3
2是10
移三位是10000(十进制的16)
免去计算步骤所以快
wu_jia_08
2009-06-24
打赏
举报
回复
我们写的乘法和除法在底层就是移位运算实现的。
而java语言本身支持移位运算,所以运算速度当然快。
dinghun8leech
2009-06-24
打赏
举报
回复
二进制码的位置转换
2 < < 3等于2乘以2的三次方,就是位移运算
楼主知道有这个东西即可,不一定常用,欲知详情请翻阅java基础类的书籍,大多都能找到答案,表述2的二进制字符串的那几位这样一移动,就正好成了表述16的二进制字符串(怎么个移法我也忘了)
HinanaiTenshi
2009-06-24
打赏
举报
回复
这是没道理的,计算2*8最快的办法是在算法上优化为int re=16;
简单运算人为优化结果....
qsrock
2009-06-24
打赏
举报
回复
[Quote=引用 1 楼 jastby 的回复:]
2 < <3表示把二进制的2左移3为,即2*2^3(2乘以2的三次方)=16
http://www.blogjava.net/Unmi/archive/2006/06/18/124098.html
[/Quote]
就是因为系统对2进制的操作是最直接的,所以最快!
yhjhoo
2009-06-24
打赏
举报
回复
[Quote=引用 7 楼 steedhorse 的回复:]
二进制左移三位不就是乘以8么。在处理器上,这比调用乘法器来算会快一点。当然,只能限于跟2的整数次幂相乘。
[/Quote]
支持
lxl308288406
2009-06-24
打赏
举报
回复
楼主貌似不懂汇编吧,<<是移位指令,二进制范畴,相当于编译好后的程序,机器直接执行效率当然要高
晨星
2009-06-24
打赏
举报
回复
二进制左移三位不就是乘以8么。在处理器上,这比调用乘法器来算会快一点。当然,只能限于跟2的整数次幂相乘。
xnjnmn
2009-06-24
打赏
举报
回复
移位运算符快些这是肯定的
0101010。。。。的换
算术运算符号就是屏蔽这些细节的方便使用
myairland
2009-06-24
打赏
举报
回复
[Quote=引用 15 楼 windylcx 的回复:]
引用 8 楼 lxl308288406 的回复:
楼主貌似不懂汇编吧, < <是移位指令,二进制范畴,相当于编译好后的程序,机器直接执行效率当然要高
我知道移位指令。。只是不知道乘法为什么比移位慢~~现在明白了
[/Quote]
移位指令 SHR OPR , CNT,操作一个寄存器就行了
如果是乘法指令,虽然写话也是一个指令,但要把乘数,被乘数,积放在相应的寄存器里,而且做乘法运算还要调用很多子程序,计算机不会做乘法,它要把乘法解释成若干个移位指令和反转指令,又是一部分开销,所以慢
火龙果被占用了
2009-06-24
打赏
举报
回复
2 乘以 8,为什么不直接使用 2 * 8 呢?
写成 2 << 3 天知道这是在写 2 乘以 8。
而且把 2 乘以 8 写成 2 << 3 没有丝毫的必要,编译器、CPU 都会进行优化的根本不许手工去处理,而且处理了也是白处理,没有任何快的迹象。
Monkey_D_Luffy
2009-06-24
打赏
举报
回复
< <就是移位运算符
mianfeidog
2009-06-24
打赏
举报
回复
楼上,8 < <2结果变成32了。
小霍夫
2009-06-24
打赏
举报
回复
路过学习..
APOLLO_TS
2009-06-24
打赏
举报
回复
8<<2 这不更快??
yuxinglian
2009-06-24
打赏
举报
回复
左移n,就是乘n次2, 2<<3, 就是 2*2*2*2
右移反之
APOLLO_TS
2009-06-24
打赏
举报
回复
[Quote=引用 4 楼 mianfeidog 的回复:]
楼上,8 < <2结果变成32了。
[/Quote]
是错了!!1 位就行!!
windylcx
2009-06-24
打赏
举报
回复
[Quote=引用 8 楼 lxl308288406 的回复:]
楼主貌似不懂汇编吧, < <是移位指令,二进制范畴,相当于编译好后的程序,机器直接执行效率当然要高
[/Quote]
我知道移位指令。。只是不知道乘法为什么比移位慢~~现在明白了
jastby
2009-06-24
打赏
举报
回复
2 < <3表示把二进制的2左移3为,即2*2^3(2乘以2的三次方)=16
http://www.blogjava.net/Unmi/archive/2006/06/18/124098.html
用最
有效率
的
方法
算出
2
乘以
8等于几?
用最
有效率
的
方法
算出
2
乘以
8等于几? 2<< 3,(左移三位)因为将一个数左移n位,就相当于
乘以
了2的n次方,那么,一个数
乘以
8 只要将其左移3位即可,而位运算cpu直接支持的,效率最高,所以,2
乘以
8等
於
几的最效率的
方法
是2<< 3。 ...
java面试篇8、用最
有效率
的
方法
算出
2
乘以
8 等于几?
直接使用乘法运算符是计算2
乘以
8的最
有效率
的
方法
。这种
方法
简单、直观且高效。
用最
有效率
的
方法
算出
2
乘以
8等
於
几?
最快的
方法
就是位运算了,将2进行左移运算,2<<3,便可得到8。 因为将一个数左移n位,相当于
乘以
2的n次方。位运算是cpu直接支持的,所以速度是贼快的。 ...
用最
有效率
的
方法
算出
2
乘以
8等于几?(C#移位运算)
出处:http://www.cnblogs.com/flydoos/archive/2011/09/06/2169280.html C#移位运算(左移和右移) 这是网上流传的“变态级JAVA程序员面试32问”的其中一题(二十八题),然后下面给出来的答案是 第二十八,编程题: 用最
有效率
的
方法
算出
2
乘以
8等
於
几? 有C背景的程序员特别喜欢问这种问题。
Java中用最
有效率
的
方法
算出
2
乘以
8
Java中用最
有效率
的
方法
算出
2
乘以
8 等
於
几?2 << 3,因为将一个数左移n 位,就相当于
乘以
了2 的n 次方,那么,一个数
乘以
8 只要将其左移3 位即可,而位运算cpu 直接支持的,效率最高,所以,2
乘以
8 等
於
几的最效率的
方法
是2 << 3。 //计算2*8=2*23 System.out.println(2<<3);//8=2的3次方为8 /...
Java EE
67,538
社区成员
225,852
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章