解题思路:
注意事项:
v&(~x<<a)&(~x>>31-b);//二进制左移低位补0,二进制右移高位补0
其实这里就相当于下面,这就是取反符号的作用
value >>= n1;//先右移去掉n1右边多余的数
value <<= n1;//再左移回到原位置,并将n1右边多余的数的都补为0
参考代码:
#include<stdio.h>
unsigned getbits(unsigned v,unsigned a,unsigned b)
{
unsigned x=0;
return v&(~x<<a)&(~x>>31-b);//二进制左移低位补0,二进制右移高位补0
}
int main()
{
unsigned value,n1,n2;
scanf("%u %u %u",&value,&n1,&n2);
printf("%u\n",getbits(value,n1,n2));
return 0;
}
0.0分
0 人评分
【绝对值排序】 (C++代码)(利用两个库函数——abs()求绝对值 和 sort()快排)浏览:1424 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:778 |
C语言程序设计教程(第三版)课后习题12.2 (C语言代码)浏览:810 |
P1002 (C语言代码)浏览:980 |
C语言训练-排序问题<1> (C语言代码)浏览:601 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1293 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:1229 |
1024题解浏览:809 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:1919 |
简单的a+b (C语言代码)浏览:830 |