题目描述
编写一个函数getbits,从一个32位的整数中取出某几位,即取出的这些位保留原值,其余位为0。取出的位数定义为从右边数的第n1位到第n2位,请注意最右边的位是第0位。函数的调用形式为getbits(value, n1, n2)。给定value、n1和n2,输出getbits的返回值的10进制表示。
请务必注意本题中的整数是32位无符号整数,输入和输出时可以使用%u进行处理。
输入格式
3个用空格隔开的整数value、n1和n2。其中value是正整数,n1和n2为非负整数。保证n1不大于n2,且均不大于30。
输出格式
getbits(value, n1, n2)的返回值的10进制表示。
请注意行尾输出换行。
样例输入
1023 5 15
样例输出
992
#include<stdio.h>
void getbits(unsigned int value,unsigned int n1,unsigned int n2);
int main(){
unsigned int value,n1,n2;
scanf("%u%d%d",&value,&n1,&n2);
getbits(value,n1,n2);
return 0;
}
void getbits(unsigned int value,unsigned int n1,unsigned int n2){
unsigned int mask=0;
for(unsigned int i=n1;i<=n2;i++){
mask += 1<<i;
}
printf("%u\n",value & mask);
}