#include <stdio.h>
void fun( int n, int p1, int p2)
{
int i;
if(p1>p2)
{
int tmp;
tmp=p2;
p2=p1;
p1=tmp;
}
for(i=p2;i>=p1;i--)
{
int tmp=0;
tmp=(n>>(i-1))&1;
if(tmp==1)
{
printf("1");
}
else
{
printf("0");
}
}
}
int main()
{
int n,p1,p2;
scanf("%d,",&n);
scanf("%d,",&p1);
scanf("%d,",&p2);
fun(n,p1,p2);
return 0;
}
本题是学习了位运算之后做的,首先我们得到一个整数,整数在内存里面占四个字节,32位,然后我们获得两个不等大并且在1--32之间的数,我们先比较这两个数的大小,保证是p2>p1的,然后我们就从p2开始,设置一个临时变量来保存移位后的内存表示。得到tmp之后,我们将tmp与1进行&运算,如果结果是1,那么这个位置上就是1,否则就是0,并进行打印。