| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3601 人关注过本帖
标题:一个取16位数中的某几位的函数
只看楼主 加入收藏
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
结帖率:100%
收藏
 问题点数:0 回复次数:18 
一个取16位数中的某几位的函数
这是一个取16位数中的某几位的函数
main()
{getbits(unsigned value,int n1,int n2);
unsigned int a;
int n1,n2;
printf("input an number");
scanf("%o",&a);
prntf("input n1 and n2");
scanf("%d%d",&n1,&n2);
prntf("output:%o\n",getbits(a,n1-1,n2));
}

getbits(unsigned value,int n1,int n2)
{unsigned int z;
z=~0;
z=(z>>n1&(z<<(16-n2));
z=value&z;
z=z>>(16-n2);
return(z);
}
在编译时不能通过,不知哪里出了错误,请给予指教……

[此贴子已经被作者于2006-6-17 0:24:20编辑过]

搜索更多相关主题的帖子: 函数 位数 
2006-06-17 00:21
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-17 00:26
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
收藏
得分:0 
错误找到了:应该为如下:(红色代码是改动的)
main()
{
unsigned int a;
int n1,n2;
printf("input an number");
scanf("%o",&a);
printf("input n1 and n2");
scanf("%d%d",&n1,&n2);
printf("output:%o\n",getbits(a,n1-1,n2));
}
getbits(unsigned value,int n1,int n2)
{unsigned int z,z1,z2;
z=~0;
z1=z>>n1;
z2=z<<(16-n2);
z=z1&z2;
z=value&z;
z=z>>(16-n2);
return(z);
}
原来是:z=(z>>n1)&(z<<(16-n2); (z>>n1)和(z<<(16-n2)是同时进行,所以z不可能既向左移动又向右移动

[此贴子已经被作者于2006-6-17 0:43:09编辑过]


2006-06-17 00:39
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-17 00:48
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

注意风格!别写这么乱!

unsigned int getbits(unsigned int value,int n1,int n2) 应该这样声明
尽量把函数声明定义等,都放在主函数外,增加通用性
而且不管TC系列的要求如何,应该加上头文件,基于一个良好的习惯
关于这个程序,我没仔细看。不过要取其中某几位,直接操作这个数就行,不需要写函数

还有换换你的头像,虽然有名,但这张看起来实在.......


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-06-17 00:49
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
收藏
得分:0 
按照4楼的说法,如果i=3;j=i++*++i+i--*--i;求j的值;

2006-06-17 01:07
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-17 01:10
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-17 01:14
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
收藏
得分:0 

7楼说的有道理,是我错了,但是我第一次的程序无法运行,但改动后怎么又能够运行了呢?是哪里出了错误吗?


2006-06-17 01:15
han2y
Rank: 1
来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
收藏
得分:0 
在tc下是18


2006-06-17 01:15
快速回复:一个取16位数中的某几位的函数
数据加载中...
 
   



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

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