| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1326 人关注过本帖
标题:移位的速度比除法快吗
只看楼主 加入收藏
llsh77
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2021-8-21
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
移位的速度比除法快吗
今天在看书的时候,看到书上说:temp>>1 比 temp/2快。但是编译器不会对其进行优化吗,这两个应该是一样的吧?
搜索更多相关主题的帖子: 除法 速度 temp 移位 优化 
2021-08-21 19:49
自由而无用
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:61
专家分:1456
注 册:2021-8-9
收藏
得分: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
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分: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
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2021-8-21
收藏
得分:0 
回复 2楼 自由而无用
感谢回复的例程,学到很多
2021-08-22 19:22
llsh77
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2021-8-21
收藏
得分:0 
回复 3楼 吹水佬
谢谢,确实对于有符号数来说这两个有着明显不同。
2021-08-22 19:23
快速回复:移位的速度比除法快吗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.183817 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved