搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 移位的速度比除法快吗
标题:
移位的速度比除法快吗
只看楼主
llsh77
等 级:
新手上路
帖 子:5
专家分:4
注 册:2021-8-21
结帖率:
0
楼主
已结贴
√
问题点数:20 回复次数:3
移位的速度比除法快吗
今天在看书的时候,看到书上说:temp>>1 比 temp/2快。但是编译器不会对其进行优化吗,这两个应该是一样的吧?
搜索更多相关主题的帖子:
除法
速度
temp
移位
优化
2021-08-21 19:49
自由而无用
等 级:
贵宾
威 望:
14
帖 子:61
专家分:1456
注 册:2021-8-9
第
2
楼
得分:10
//online parser:
https://www.bccn.net/run/
int system(const char *command);
#define GCC_O1_FLAG
int main(int argc, char *argv[])
{
int param = 0x80ABCDEF;
param >>= 1;
param /= 2;
#ifndef GCC_O1_FLAG
system("gcc -S *.c -o v.s");
#else
system("gcc
-O1
-S *.c -o v.s");
#endif
system("cat v.s");
return 0;
}
2021-08-21 20:51
吹水佬
等 级:
版主
威 望:
432
帖 子:10064
专家分:41463
注 册:2014-5-20
第
3
楼
得分:10
以下是引用
llsh77
在2021-8-21 19:49:03的发言:
今天在看书的时候,看到书上说:temp>>1 比 temp/2快。但是编译器不会对其进行优化吗,这两个应该是一样的吧?
可能是编译器的问题
通常来说,无符号的temp>>1与temp/2一样,做逻辑右移就可以。有符号的temp>>1与temp/2可能不一样,temp>>1做算术右移,temp/2可能还要先考虑符号位做逻辑右移,运算后再做算术右移。
[此贴子已经被作者于2021-8-21 22:31编辑过]
2021-08-21 22:23
llsh77
等 级:
新手上路
帖 子:5
专家分:4
注 册:2021-8-21
第
4
楼
得分:0
回复 2楼 自由而无用
感谢回复的例程,学到很多
2021-08-22 19:22
llsh77
等 级:
新手上路
帖 子:5
专家分:4
注 册:2021-8-21
第
5
楼
得分:0
回复 3楼 吹水佬
谢谢,确实对于有符号数来说这两个有着明显不同。
2021-08-22 19:23
4
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-506601-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.216618 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved