题目:输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.
#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, p, v,temp1,temp2,len,mask;
printf("Please enter a integer:\n");
scanf("%d",&num);
printf("Please enter other two integers(p<32,v=0/1):\n");
scanf("%d%d",&p,&v);
if(v == 0) //&0 将该位 置0
{
mask = 1;
mask <<= (p - 1); //将mask移到p位
mask = ~mask; //p位为0,其余为1 ,数不变
num &= mask;
}
else
{
mask = 1; //使用|运算将该位 置1
mask <<= (p - 1);
num |= ~(~mask);
}
exchange(num);
}