1+10000和10000+1有区别嘛,如果有区别是什么?

yu3350360 2010-06-09 06:21:00
如题
...全文
657 65 打赏 收藏 举报
写回复
65 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shihunjiangjie 2010-06-12
牛人再现[Quote=引用 35 楼 jekhn 的回复:]
引用 30 楼 icansaymyabc 的回复:

哈哈,这是出题者的自作聪明。

直接怀疑出题者想考的是这个知识点:
a=1;
a=a+10000;
经过优化后会编译成 ADD 指令

a=10000;
a=a+1;
经过优化后会编译成 INC 指令

在8086时代的破CPU上,INC 指令比 ADD 指令快1倍;可是到了386时代,这两条指令的执行时间已经没有差……
[/Quote]
  • 打赏
  • 举报
回复
yu3350360 2010-06-11
还是结贴吧,貌似讨论也没什么意义了
  • 打赏
  • 举报
回复
yu3350360 2010-06-11
[Quote=引用 58 楼 softman11 的回复:]
引用 33 楼 lei35151 的回复:
28: int m = 1000 + 1 ;
00401688 mov dword ptr [ebp-4],3E9h
29: int n = 1 + 1000 ;
0040168F mov dword ptr [ebp-8],3E9h

反汇编出来的信息,哪位高手能够解释一下


就是完全一样的嘛。
1+1000
还是1000+1
……
[/Quote]
也没搞出题目的意图来
哈哈,学习了呀。。
  • 打赏
  • 举报
回复
softman11 2010-06-10
[Quote=引用 33 楼 lei35151 的回复:]
28: int m = 1000 + 1 ;
00401688 mov dword ptr [ebp-4],3E9h
29: int n = 1 + 1000 ;
0040168F mov dword ptr [ebp-8],3E9h

反汇编出来的信息,哪位高手能够解释一下
[/Quote]

就是完全一样的嘛。
1+1000
还是1000+1
编译器最后都是给你搞成1001的,也就是3E9H

两条指令只是目标单元地址不同,都是一个MOV指令周期的时间。
没有任何区别。
  • 打赏
  • 举报
回复
softman11 2010-06-10
[Quote=引用 54 楼 visualeleven 的回复:]
引用 30 楼 icansaymyabc 的回复:
哈哈,这是出题者的自作聪明。

直接怀疑出题者想考的是这个知识点:
a=1;
a=a+10000;
经过优化后会编译成 ADD 指令

a=10000;
a=a+1;
经过优化后会编译成 INC 指令

在8086时代的破CPU上,INC 指令比 ADD 指令快1倍;可是到了386时代,这两条指令的执行时间已经没有差别了……
[/Quote]

是的,如果是变量的话确实是如此。

但是如果是常量的话,编译器肯定是直接给你搞成10001了。

我觉得这个出题的人绝对是个半罐水。

  • 打赏
  • 举报
回复
赵4老师 2010-06-10
1+10000 means big gain
先挣1元后挣10000元意味着大有收获
10000+1 means I don't care
先挣10000元后挣1元意味着我不在乎
  • 打赏
  • 举报
回复
softman11 2010-06-10
[Quote=引用 27 楼 wuweiyin 的回复:]
一般的编译环境应该都是从右向左进行的.
计算机运算过程如下:
取值到寄存器->取第二个值到寄存器并与第一个值进行位运算->给出结果

所以我觉得就是寄存器中位运算效率的差异.
10000+1//寄存器中存的是1,再将10000加上,每一个位都要计算到.
1+10000//寄存器中存的是10000,再将1加上,可能只要计算最后一个位即可.效率较高
[/Quote]

这个解释不通。
都是二进制,怎么可能位数不同。
1在寄存器里面如果8位的话,也是00000001啊。
一样是八位。
加法器计算的时候可都是两个输入数直接翻转的,不会还会去判断你有几个0,几个1。
  • 打赏
  • 举报
回复
Eleven 2010-06-10
[Quote=引用 30 楼 icansaymyabc 的回复:]
哈哈,这是出题者的自作聪明。

直接怀疑出题者想考的是这个知识点:
a=1;
a=a+10000;
经过优化后会编译成 ADD 指令

a=10000;
a=a+1;
经过优化后会编译成 INC 指令

在8086时代的破CPU上,INC 指令比 ADD 指令快1倍;可是到了386时代,这两条指令的执行时间已经没有差别了。

可见这个出题者不仅自作聪明,还愚昧、……
[/Quote]
NX
  • 打赏
  • 举报
回复
ffllaagg 2010-06-10
有点想不明白、
  • 打赏
  • 举报
回复
comrdliyang 2010-06-10
不懂!!!
  • 打赏
  • 举报
回复
Yizhoujimoqitian 2010-06-10
[Quote=引用 30 楼 icansaymyabc 的回复:]
哈哈,这是出题者的自作聪明。

直接怀疑出题者想考的是这个知识点:
a=1;
a=a+10000;
经过优化后会编译成 ADD 指令

a=10000;
a=a+1;
经过优化后会编译成 INC 指令

在8086时代的破CPU上,INC 指令比 ADD 指令快1倍;可是到了386时代,这两条指令的执行时间已经没有差别了。

可见这个出题者不仅自作聪明,还愚昧、……
[/Quote]

NB啊............
  • 打赏
  • 举报
回复
dream17953 2010-06-10
不明白,可能在串行加法器中有区别。
  • 打赏
  • 举报
回复
董小尾 2010-06-10
[Quote=引用 30 楼 icansaymyabc 的回复:]
哈哈,这是出题者的自作聪明。

直接怀疑出题者想考的是这个知识点:
a=1;
a=a+10000;
经过优化后会编译成 ADD 指令

a=10000;
a=a+1;
经过优化后会编译成 INC 指令

在8086时代的破CPU上,INC 指令比 ADD 指令快1倍;可是到了386时代,这两条指令的执行时间已经没有差别了。

可见这个出题者不仅自作聪明,还愚昧、……
[/Quote]

--!~ 高手
  • 打赏
  • 举报
回复
cymlife 2010-06-10
问君能有几多愁,恰似一江春水向东流
  • 打赏
  • 举报
回复
记得以前看到有位“砖家”分析邮箱地位为什么都是
XXXXXXX @ XXX.XXX 也就是为什么要用@
分析了好大一篇
结果后来采访邮件的创始人
他说:“就觉得@这个符号看着顺眼。”
  • 打赏
  • 举报
回复
铁匠梁 2010-06-10
结果一样,重要的结果。
  • 打赏
  • 举报
回复
saiweng198 2010-06-10
本来1块钱工资,10000块钱奖金
本来10000块钱工资,1块钱奖金
那个爽??????
  • 打赏
  • 举报
回复
崇山峻岭_ 2010-06-10
有区别吗?

void main( void )
{
int a = 0;
a = 10000 + 1;
a = 1 + 10000;
}


17: void main( void )
18: {
00401800 push ebp
00401801 mov ebp,esp
00401803 sub esp,44h
00401806 push ebx
00401807 push esi
00401808 push edi
00401809 lea edi,[ebp-44h]
0040180C mov ecx,11h
00401811 mov eax,0CCCCCCCCh
00401816 rep stos dword ptr [edi]
19: int a = 0;
00401818 mov dword ptr [ebp-4],0
20: a = 10000 + 1;
0040181F mov dword ptr [ebp-4],2711h
21: a = 1 + 10000;
00401826 mov dword ptr [ebp-4],2711h
22: }
  • 打赏
  • 举报
回复
x396448534 2010-06-10
[Quote=引用 58 楼 softman11 的回复:]
引用 33 楼 lei35151 的回复:
28: int m = 1000 + 1 ;
00401688 mov dword ptr [ebp-4],3E9h
29: int n = 1 + 1000 ;
0040168F mov dword ptr [ebp-8],3E9h

反汇编出来的信息,哪位高手能够解释一下


就是完全一样的嘛。
1+1000
还是1000+1
……
[/Quote]

NX
  • 打赏
  • 举报
回复
kkmqj 2010-06-10
58楼正解。
  • 打赏
  • 举报
回复
加载更多回复(43)
相关推荐
发帖
C++ 语言

6.2w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2010-06-09 06:21
社区公告
暂无公告