当前位置: 代码迷 >> C语言 >> 一个取16位数中的某几位的函数
  详细解决方案

一个取16位数中的某几位的函数

热度:227   发布时间:2006-06-17 01:21:35.0
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-16 17:21:35
穆扬

等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
  得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-16 17:23:33
穆扬

等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
  得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-16 17:24:59
han2y

来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
  得分:0 
找到了:
main()
{unsigned getbits(unsigned,int,int);
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));
}
unsigned getbits(unsigned value,int n1,int n2)
{unsigned z,z1,z2;
z=~0;
z1=z>>n1;
z2=z<<(16-n2);
z=z1&z2;
z=value&z;
z=z>>(16-n2);
return(z);
}
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-16 17:37:41
SunShining

等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
  得分:0 

unsigned getbits(unsigned value,int n1,int n2)
{
return(value>>n1&~(~0<<n2-n1+1));
}

是这个意思吧.


----------------解决方案--------------------------------------------------------

/*楼主代码的简化(未经细致验证)*/
#include<stdio.h>
unsigned short getbits(unsigned short value,int n1,int n2)
{
return(value&0xffff>>n1)>>16-n2;
}
main()
{
unsigned short 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));
}


----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-16 23:46:37
han2y

来 自:山东德州
等 级:新手上路
帖 子:175
专家分:0
注 册:2006-5-4
  得分:0 
谢谢各位了
----------------解决方案--------------------------------------------------------
  相关解决方案