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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张会文 中级黑马   /  2012-12-30 20:40  /  9986 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个最有效的方式指得是什么意思?
我的方法是:public class Test1 {
public static void main(String[] args) {
  System.out.println("2*8="+2*8);
}
}
不知道对不对?请指教?

评分

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

查看全部评分

7 个回复

倒序浏览
本帖最后由 马志军 于 2012-12-30 20:49 编辑

System.out.println(2<<3);

点评

大哥,你的回答最终结果怎么是0啊?  发表于 2012-12-30 20:49
回复 使用道具 举报
搞错了,应该左移
回复 使用道具 举报
最有效率的就要说位的运算了。
2*8
可以看成
2*2*2*2
2的3次方
也就是2左移3位,
写成:2<<3;

点评

但是求的是2乘以8怎么用2<<3而没有2和8的运算呢?  发表于 2012-12-30 21:57
回复 使用道具 举报
8>>1     这样就行了  位移操作 最快

点评

大哥你好像也写反了吧?System.out.println(8<<1);我运算这个是16,你那个是4呀?还有那个 System.out.println(2 << 3);这个也是16;求解释一下。  发表于 2012-12-30 22:02
回复 使用道具 举报
本帖最后由 冉世友 于 2012-12-30 21:51 编辑

位移运算最快的,是最有效率的,用 2 << 3.
回复 使用道具 举报
谢毅 中级黑马 2012-12-30 22:16:37
7#
2的二进制0000-0000 0000-0000 0000-0000 0000-0010  左移3位 图如下:
              0000-0000 0000-0000 0000-0000 0000-0010
         0000-0000 0000-0000 0000-0000 0000-0010   
----------------------------------------------------------------------------------
              0000-0000 0000-0000 0000-0000 0001-0000
1*2(4)=16
回复 使用道具 举报
王玮 中级黑马 2012-12-30 22:29:24
8#
王玮 发表于 2012-12-30 21:04
8>>1     这样就行了  位移操作 最快

。。。汗。。8<<1  这样就行了   左移 就是 乘2 ,8*2=16
2<<3     左移三位 也是 2*2*2*2=16
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马