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

来源:互联网 发布:国资委党员网络培训 编辑:程序博客网 时间:2024/06/06 04:19

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

程序如下:
/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co.,     Ltd. 
File name:
Author:fhb    Version:0.1    Date: 1027
Description:
Funcion List: 
*****************************************************/


#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(",");
}
}
printf("\bB\n");
   
//将p位设置为v
    if(v == 0)
{
a &= ~(1 << p-1);
}
else
{
a |= 1 << p-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
原创粉丝点击