看到很多面试题有这个,
毕老师的基础教程也有。
然后给出的结果是无符号位移,
那天没事上网搜了下,有个帖子说的太深,大概讲的是计算机底层运算方法,
看完各种不懂,
自己小白级别,想到一个不知道算不算办法的办法。
刚看到可以获取时间方法。
就象获取两种运算的时间来判断运算是否是最快,
精确值是毫秒。。
第一次代码如下:- class MinTimeText
- {
- public static void main (String[] args)
- {
-
- long time1=System.currentTimeMillis();//得到开始时间
- System.out.println("开始时间是"+time1);//输出开始时间
- int mun1=2<<3;//第一中方法
- long time2=System.currentTimeMillis();//得到结束时间
- System.out.println("结束时间是"+time2);//输出结束时间
- System.out.println("2<<3结果是"+mun1+"运行时间是"+(time2-time1));//完整输出
- //----------------------------------------
- System.out.println();
- long time3=System.currentTimeMillis();//得到开始时间
- System.out.println("开始时间是"+time3);////输出开始时间
- int mun2=2*8;
- long time4=System.currentTimeMillis();//得到结束时间
- System.out.println("结束时间是"+time4);//输出结束时间
- System.out.println("2×8运行结果是"+mun2+"运行时间是"+(time4-time3));//完整输出
-
- }
- }
复制代码 运行了几次结果不同。
如图:
感觉不是很爽。
是不是和CPU运行有关?
然后加了循环想看看时间是不是有变化。
然后改了下。
代码如下:- class MinTimeText
- {
- public static void main (String[] args)
- {
- int num1,num2;
- long time1=System.currentTimeMillis();//得到开始时间
- System.out.println("开始时间是"+time1);//输出开始时间
- for(int a=1;a<=1000;a++);
- {
- num1=2<<3;//第一中方法
- }
- long time2=System.currentTimeMillis();//得到结束时间
- System.out.println("结束时间是"+time2);//输出结束时间
- System.out.println("2<<3结果是"+num1+"运行时间是"+(time2-time1));//完整输出
- //----------------------------------------
- System.out.println();
- long time3=System.currentTimeMillis();//得到开始时间
- System.out.println("开始时间是"+time3);////输出开始时间
- for(int b=1;b<=1000;b++);
- {
- num2=2*8;
- }
- long time4=System.currentTimeMillis();//得到结束时间
- System.out.println("结束时间是"+time4);//输出结束时间
- System.out.println("2×8运行结果是"+num2+"运行时间是"+(time4-time3));//完整输出
-
- }
- }
复制代码 发现运行结果时间还是很少。
是不是我循环写错?
哪位大大讲解一下
谢谢
先睡 明天再看。
|