| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2701 人关注过本帖
标题:关于循环右移的问题
只看楼主 加入收藏
Law_Dark
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-3-4
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
关于循环右移的问题
我写了一段循环右移的代码,能编译出来,但是结果根本不对,结果总是得0。希望大侠们能指点一下。代码如下:
#include<stdio.h>

unsigned int rotate_right (unsigned int x, int n) /* x为要右移的数,n为右移的位数 */
{
    unsigned int high_bit = 0, low_bit = 0, result = 0;
    high_bit = (x & (~0u << n));
    low_bit = (x & ~(~0u << n));
    result = (high_bit >> n) & (low_bit << (32 - n)); /* result为右移后的结果 */
    return result;
}

int main()
{
    unsigned int x,result;
    int n;
    scanf("%x, %d", &x, &n);
    result = rotate_right (x, n);
    printf("%x\n", result);
}
   
搜索更多相关主题的帖子: return 
2011-03-04 19:57
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:10 
还没看代码,问下,你的编译器本身是循环右移还是算术右移
2011-03-04 20:01
Law_Dark
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-3-4
收藏
得分:0 
呃,我菜鸟一个,我还没知道编译器的是循环右移还是算术右移呢。但我觉得我的代码跟编译器是循环右移还是算术右移好像没有关系的。还请各位大侠看看我的代码有没有问题。
2011-03-04 20:14
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:0 
这跟编译器有关,我也做过类似的题,就是如果译器是循环右移,则写个算术右移,否则相反
然后我没弄清楚编译器是怎么移位的,结果给写反了。。。固然不对了。。。你先用负数试试到底是怎么移位的
2011-03-04 20:16
Law_Dark
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-3-4
收藏
得分:0 
哦,那我去试试吧。
2011-03-05 18:11
快速回复:关于循环右移的问题
数据加载中...
 
   



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

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