1. 题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示
方法中从右端开始的p1到p2位.
#include<stdio.h>
int exchange(int num) //将整数以二进制形式输出
{
int i;
i = num % 2;
if(num != 0 )
{
num /= 2;
exchange(num); //采用递归方法
}
printf("%d",i);
}
int main()
{
int num,p1,p2,temp;
int mask = ~0; //掩码补充位
int len = 0;
printf("Please enter an integer:\n");
scanf("%d",&num);
printf("Please enter two integer:\n");
scanf("%d%d",&p1,&p2);
temp = num;
while(temp) //判断输入的数有几位
{
temp /= 10;
len++;
}
len = 8 * len; //总的位数
mask <<= (len - p2); //将掩码p2左边置0
mask >>= (len - p2);
mask >>= (p1 - 1); //将掩码p1右边置0,得到p1~p2段为1
mask <<= (p1 - 1);
num &= mask;
num >>= (p1 - 1); //将区间移至最低位
exchange(num);
}