| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 463 人关注过本帖
标题:有关C语言中将算数右移转变为逻辑右移,逻辑右移转变为算数右移的程序
只看楼主 加入收藏
jsj081203
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-2-9
结帖率:0
收藏
已结贴  问题点数:10 回复次数:2 
有关C语言中将算数右移转变为逻辑右移,逻辑右移转变为算数右移的程序
课本中给出了以下算数右移和逻辑右移相互转换的程序,请各位高手帮忙解释以下2个函数每个语句的意思,看了半天没有看懂。
#include <stdio.h>
main()
{
int a,n,m;
a=~0;
    if(a>>5 != a)
    {
        printf("逻辑右移!\n");
        m=0;
    }
    else
    {
        printf("算数右移!\n");
        m=1;
    }
    scanf("%o",&a);
    printf("请输入右移位数"");
    scanf("%d",&n);
    if(m == 0)
        printf("改变为算数右移后结果为:%o\n",getbits1(a,n));
    else
        printf("改变为逻辑右移后结果为:%o\n",getbits2(a,n));
}
   
getbits1(unsigned value, int n)   //这个函数没有看懂!! 请解释以下各个语句
        {
            unsigned z;
            z=~0;
            z=z>>n;
            z=~z;
            z=z|(avalue>>n);
            return z;
        }

   
    getbits2(unsigned num, int n)  // //这个函数没有看懂!!请解释以下各个语句
    {
        unsigned z;
        z=(~(1>>n))&(num>>n);
        return z;
    }
搜索更多相关主题的帖子: include C语言 课本 
2014-02-09 12:29
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
--- 说错了,致歉 ---


[ 本帖最后由 rjsp 于 2014-2-9 16:03 编辑 ]
2014-02-09 12:34
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:5 
多看看书
2014-02-09 14:08
快速回复:有关C语言中将算数右移转变为逻辑右移,逻辑右移转变为算数右移的程序
数据加载中...
 
   



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

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