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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

练习:高效的算出 2*8 = 2<<3;这道练习题的这么写对吗?

~G@V0V%5N(`NNQI~QX6LH(7.jpg (41.85 KB, 下载次数: 104)

不知道理解的对不

不知道理解的对不

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 明显是错的!

查看全部评分

9 个回复

正序浏览
就算是数据很大
16777215*16777215  或者16777215<<23
这个计算对于现在的电脑来说 还真心是可以忽略.......
我循环了一千万次......都是3毫秒.....


  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 long l1 = System.currentTimeMillis();
  4.                 show1();
  5.                 long l2= System.currentTimeMillis();
  6.                 sop(l2-l1);
  7.                
  8.         }
  9.         public static void show1(){
  10.                 for (int i = 0; i < 10000000; i++) {
  11.                         long n=16777215*16777215;
  12.                 }

  13.         }
  14.         public static void show2(){
  15.                 int j=0;
  16.                 for (int i = 0; i < 10000000; i++) {
  17.                         j++;
  18.                         long n=16777215<<23;
  19.                 }
  20.         }
  21.         public static void sop(Object obj) {
  22.                 System.out.println(obj);
  23.         }
  24. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 0 1
乔青山 发表于 2014-3-3 20:14
.....不会,感觉就是判断,怎么高效真不知道

哦,那就按你跟我说的那个意思了。。。高效算出2*8,后面应该是给出的答案;
谢谢你的耐心解答
回复 使用道具 举报
king2042 发表于 2014-3-3 20:12
练习:高效的算出 2*8 = 2

.....不会,感觉就是判断,怎么高效真不知道
回复 使用道具 举报
king2042 发表于 2014-3-3 20:12
练习:高效的算出 2*8 = 2

就这个了这是在毕老师Java基础总结中的一个
回复 使用道具 举报
乔青山 发表于 2014-3-3 20:07
。。。。高效算出2*8=2

练习:高效的算出 2*8 = 2<<3;
回复 使用道具 举报
king2042 发表于 2014-3-3 19:56
我知道位运算效率高,但是你看一下练习题的题目是:高效的算出 2*8 = 2

。。。。高效算出2*8=2<<3.。。。。?好吧,求练习题截图  - - 这个题好让人纠结
回复 使用道具 举报
乔青山 发表于 2014-3-3 19:47
。。。。。位运算自然更高效,这个和2*8==2

我知道位运算效率高,但是你看一下练习题的题目是:高效的算出 2*8 = 2<<3;而不是高效的算出 2*8;很不解;
回复 使用道具 举报
。。。。。位运算自然更高效,这个和2*8==2<<3有什么关系。。。
高效的算出2*8
那就System.out.ptintln(2<<3);不就完了么- -

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
额。。。楼主。。这样看吧:
十进制8的二进制:1000,位移就是乘以或者处以2的次幕。。
2*8-->2<<3:位移3次可以看成是2*2*2=8....就是2*8.。。。而且它是直接就在2的二进制:10后面加上3个0:10000:转成十进制就是16,高效~~
而2*8.。。。可以看成:   1000
                                       *0010    这样得计算多次。。效率就低了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马