社区
C++ 语言
帖子详情
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
问君能有几多愁,恰似一江春水向东流
打赏
举报
回复
赞
Xiaoloveliuforever
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)
相关推荐
Hadoop
1
.x
和
Hadoop 2.x
有
什么
区别
?
本文隶属于专栏《
1
000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足
和
错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构
和
参考文献请见
1
000个问题搞定大数据技术体系 正文 YARN Hadoop ...
-
1
和
255
有
什么
区别
?
了解了负数在计算机内存中的储存方式,也知道了计算机如何计算这些数,那么就生成了另外一个问题,-
1
和
255
有
什么
区别
,同理还
有
许多负数与正整数发生了重叠的问题,就像是-
1
和
255的在内存中的表示都是
1
1
1
1
1
1
1
1
,...
String中的
+
链接
和
StringBuilder中的append
有
什么
区别
?它们之间又
有
什么关系?
String中的
+
链接
和
StringBuilder中的append
有
什么
区别
?它们之间又
有
什么关系? 前言 我们知道在Java语言中,字符串的连接方式
有
很多种。其中最常用的则是String的
+
或者
+
=
和
...
什么是UPLC?
和
HPLC
有
什么
区别
?
网友G:各人觉得你要是做生物样品或者医药方面的UPLC还是
有
优势的,但是你如果是做残留分析,比如农残,兽残什么的就买HPLC就好,UPLC的确是快,但是食品蔬菜什么的基质比较复杂的你就甭想分离的很好,分离效果差很...
for循环中的i
+
+
和
+
+
i
有
什么
区别
最近看一些别人的源码,发现很多人使用for循环都会这么写: for(int i=0; i<...赶紧到网上查了下,2种写法的运行时间是
有
差别,因为“Java中i
+
+
语句是需要一个临时变量取存储返回自增前的...
发帖
C++ 语言
微信扫一扫
点击复制链接
分享社区
下载分享明细
6.2w+
社区成员
25.0w+
社区内容
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
帖子事件
创建了帖子
2010-06-09 06:21
社区公告
暂无公告