10302

来源:互联网 发布:java方法定义 编辑:程序博客网 时间:2024/05/16 12:19
//

1.   输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.

#include <stdio.h>


int main()
{
int a,p,v;
int mask = 1 << 31,i;
//构造一个最高位为1,其余各位为0的整数
int tmp;//不改变a的值设置一个临时变量




//输入要求的三个数字
printf("please input an integer:");
scanf("%d",&a);
printf("please input another integer p(p<32):");
scanf("%d",&p);
printf("which number will you change No.%d into(1/0):");
scanf("%d",&v);


//输出原a的二进制表示
printf("%d=",a);
tmp = a;
for(i = 1; i <= 32; i++)
{
putchar(tmp&mask?'1':'0');//输出最高位的值
tmp <<= 1;//将次高位移到最高位
if(i % 4 == 0)
{
printf(",");//4位写一个,
}
}
printf("\bB\n");
   
//将p位设置为v
    if(v == 0)
{
a &= ~(1 << p-1);//x&0==0
}
else
{
a |= 1 << p-1;//x|1==1
}


//输出修改后a的二进制表示
printf("%d=",a);
tmp = a;
for(i = 1; i <= 32; i++)
{
putchar(tmp&mask?'1':'0');
tmp <<= 1;
if(i % 4 == 0)
{
printf(",");
}
}
printf("\bB\n");


    return 0;
}


0 0
原创粉丝点击