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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© My_work 中级黑马   /  2014-3-3 17:18  /  769 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 My_work 于 2014-3-3 19:57 编辑
  1. public static int getResult(int num1, int num2)  
  2.     {  
  3.             
  4.         int result = 0;  
  5.         for(int i = 0; i < num2 ; i++)  
  6.         {  
  7.             result += num1;  
  8.         }  
  9.         
  10.         return result;  
  11.     }  
  12.    
复制代码
  1.   
  2.     public static int getResult_2(int num1, int num2)  
  3.     {  
  4.         int times = 0;  
  5.         int result2 = 0;
  6.         while(num2 != 1)  
  7.         {  
  8.             num2 = num2 >> 1;  
  9.             times++;  
  10.         }  
  11.         result2 = num1 << times;  
  12.         return result2;  
  13.     }  
复制代码
的效率哪个要高一些??

5 个回复

倒序浏览
你这个方法是算num1+num1+num1+。。num1 一直加num2次?
我觉得你这两种的效率都低的吓人。。。你直接return num1*num2;可能效率要高一点。。
回复 使用道具 举报
乔青山 发表于 2014-3-3 18:06
你这个方法是算num1+num1+num1+。。num1 一直加num2次?
我觉得你这两种的效率都低的吓人。。。你直接retur ...

做的测试题上问3x8的效率高的计算方式,我从网上查的这个,一个加法,一个位运算,我还是不明白怎么比较它们的效率
回复 使用道具 举报
My_work 发表于 2014-3-3 19:32
做的测试题上问3x8的效率高的计算方式,我从网上查的这个,一个加法,一个位运算,我还是不明白怎么比较 ...

你这个题的意思就是问你,3*8和3<<3哪个更效率
效率高的那就是3<<3了呗,不需要写个方法。。而且方法也写的挺麻烦,那就很难看出来效率了
回复 使用道具 举报
乔青山 发表于 2014-3-3 19:45
你这个题的意思就是问你,3*8和3

谢谢啦,我以为都要用代码证明呢
回复 使用道具 举报
本帖最后由 吴涛 于 2014-3-3 20:15 编辑

如果这个程序只是想看看,关于乘法的实现,效率较高的方式的话,不妨,这样想:乘法是基于加法实现的,计算机做乘法,也是像我们算一样,在加法基础上实现乘法,而关于位移,计算机是二进制的,对位的操作,很容易实现,一般我们做加法,里面的数,计算机没有十进制,操作起来二进制应该是最方便的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马