怎么样最快的算出一数字的七倍数
   
怎么样最快的算出一数字的七倍数

解决方案 »

  1.   

    int a = 123455;
    int b = a << 3 - a;
      

  2.   

    速算者,和差倍半也!
    x*7=x*(5+2)=5x+2x=10*x/2+2x155*7=1550/2+155*2=775+310=1085玩心算滴,和差倍半是他们的基本功,就好像我们写程序滴if--else是我们的基本功
      

  3.   

    int b = a < < 3 - a;位移比较快点, 有更快的算法?
      

  4.   


    int a = 123456
    int b = a*7
      

  5.   

    谁说说cpu计算的时候是怎么算的?
      

  6.   

    这个问题得分开讨论,比如一般的单片机执行乘法指令周期相对加减法指令周期会比较长,而移位较快,所以x<<3 - x会比较快,但是有些MCU/DSP有专门的乘法器,可以单指令周期完成,这样直接x*7会比较快,因为别的计算指令多,时间就肯定超过一个指令周期。至于PC的CPU我不太了解,估计没有专门的乘法器吧。
      

  7.   

    三楼的兄弟 真是让人佩服!!哈哈不过楼主如果整个程序都用这个写。。呵呵 真是叫人不寒而栗了完全ASM写吧
      

  8.   

    你们到底测试过没有????
    测试机子
    CPU:E8200(默认频率)
    内存:2G ddr667
                int a = 1000;
                int result = 0;
                Stopwatch sw = new Stopwatch();
                sw.Start();
                for (long i = 0; i < 10000000000; i++)
                {
                    result = a * 7;
                }
                sw.Stop();
                MessageBox.Show(sw.Elapsed.ToString());
                int a = 1000;
                int result = 0;
                Stopwatch sw = new Stopwatch();
                sw.Start();
                for (long i = 0; i < 10000000000; i++)
                {
                    result = (a << 3) - a;
                }
                sw.Stop();
                MessageBox.Show(sw.Elapsed.ToString());
    每个方法做了6次测试,直接×7,平均时间是27.36s,而第二种方法位运算然后减去本身,平均时间是31.16s我暂时找到的最快的,就是直接×7
      

  9.   

    位移比较快点
    int a = 123;
    int b = (a << 3)-a;
    MessageBox.Show(b.tostring());