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

wanghousheng 2008-12-18 11:49:24
怎么样最快的算出一数字的七倍数



怎么样最快的算出一数字的七倍数
...全文
427 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
ErnestChen2go 2008-12-19
  • 打赏
  • 举报
回复
什么意思啊?

xupeiying 2008-12-19
  • 打赏
  • 举报
回复
我测的也是*7快点,不明显N重循环,时间大了更容易看
justindreams 2008-12-19
  • 打赏
  • 举报
回复
你们到底测试过没有????
测试机子
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
fengyecsdn 2008-12-19
  • 打赏
  • 举报
回复
三楼的兄弟 真是让人佩服!!

哈哈

不过楼主如果整个程序都用这个写。。。。。呵呵 真是叫人不寒而栗了。。。

完全ASM写吧。。。
wf_car 2008-12-19
  • 打赏
  • 举报
回复
这个问题得分开讨论,比如一般的单片机执行乘法指令周期相对加减法指令周期会比较长,而移位较快,所以x<<3 - x会比较快,但是有些MCU/DSP有专门的乘法器,可以单指令周期完成,这样直接x*7会比较快,因为别的计算指令多,时间就肯定超过一个指令周期。至于PC的CPU我不太了解,估计没有专门的乘法器吧。
HDNGO 2008-12-19
  • 打赏
  • 举报
回复
见到算法就头疼~
justindreams 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 xupeiying 的回复:]
谁说说cpu计算的时候是怎么算的?
[/Quote]
CPU都是转化成加法来算的。
myouuu 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 justindreams 的回复:]
你们到底测试过没有????
测试机子
CPU:E8200(默认频率)
内存:2G ddr667


C# code
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.Elapse…
[/Quote]


真的假的?
king4323210 2008-12-19
  • 打赏
  • 举报
回复
位移比较快点
int a = 123;
int b = (a << 3)-a;
MessageBox.Show(b.tostring());
wanghousheng 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 justindreams 的回复:]
你们到底测试过没有????
测试机子
CPU:E8200(默认频率)
内存:2G ddr667


C# code
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.Elapse…
[/Quote]
谢谢
Jack2013tong 2008-12-18
  • 打赏
  • 举报
回复
int b = a < < 3 - a;位移比较快点, 有更快的算法?
wanghui0380 2008-12-18
  • 打赏
  • 举报
回复
速算者,和差倍半也!
x*7=x*(5+2)=5x+2x=10*x/2+2x

155*7=1550/2+155*2=775+310=1085

玩心算滴,和差倍半是他们的基本功,就好像我们写程序滴if--else是我们的基本功
止戈而立 2008-12-18
  • 打赏
  • 举报
回复
LZ想要的是心算的方法吧。。。
Deathsign 2008-12-18
  • 打赏
  • 举报
回复
学习……
长沙三毛 2008-12-18
  • 打赏
  • 举报
回复
int a = 123455;
int b = a << 3 - a;
wsj1983920 2008-12-18
  • 打赏
  • 举报
回复
*7?
bgaidu 2008-12-18
  • 打赏
  • 举报
回复
数字*7 得到的数就是了!
xupeiying 2008-12-18
  • 打赏
  • 举报
回复
谁说说cpu计算的时候是怎么算的?
云想慕尘 2008-12-18
  • 打赏
  • 举报
回复
颜色怎样显示
云想慕尘 2008-12-18
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 huwei001982 的回复:]
引用 6 楼 wanghui0380 的回复:

速算者,和差倍半也!
x*7=x*(5+2)=5x+2x=10*x/2+2x

155*7=1550/2+155*2=775+310=1085

玩心算滴,和差倍半是他们的基本功,就好像我们写程序滴if--else是我们的基本功

没看出来这样会快
[/Quote]
[#ff0000]数大了就快了[/#ff0000]
加载更多回复(8)

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧