C语言中二进制指定的某一位数0变1,或者1变0,并输出该数值.给个详细的代码吧!谢谢!!! 10

 我来答
匿名用户
2013-04-11
展开全部
0变1其它位不变,位或一个该位为1其它位为0的数可得
1变0其它位不变,位与一个该位为0其它位为1的数可得
得到等N位为1其它位为0的数,可用1左移N位即得
得到等N位为0其它位为1的数,用前数位反一下即得

演示程序:
#include<stdio.h>
char*int2bin(int ,char* );
int main()
{
int x0,x1,n,flag;
char x0b[33]={0};
char x1b[33]={0};
while(1)
{
x0 = x1 = n = flag = -1;
printf("输入原始数值 操作位(0-31) 和操作方式(1置/0清)\n");
scanf("%d %d %d", &x0, &n, &flag);
if( n<0 || n>31 || flag!=0&&flag!=1 ) break;//无效输入将退出
if(flag==1)//置1
{
x1 = x0 | (1<<n); //n位置1
}
else//清0
{
x1 = x0 & ~(1<<n); //n位清0
}
printf("处理前十进制:%-10d 二进制:%s\n", x0,int2bin(x0,x0b));
printf("处理后十进制:%-10d 二进制:%s\n\n",x1,int2bin(x1,x1b));
fflush(stdin);
}
return 0;
}
char*int2bin(int x,char*out)
{
for(int i=0;i<32;i++)
out[i] = (x&(1<<(31-i))) ? '1' : '0';
out[32] = '\0';
return out;
}
Stillcalm
2013-04-11 · 超过15用户采纳过TA的回答
知道答主
回答量:115
采纳率:0%
帮助的人:53.8万
展开全部
int fun(int a,int x)
{
int c;
c=a|(1《x);
return c;
}
这里a是要操作的数,x是指定位(从右向左)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
馄饨978
2013-04-11 · TA获得超过538个赞
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:261万
展开全部
#define set_bit(val,bit) \
do{\
val |= 1<<bit;\
}while(0)
#define clr_bit(val,bit)\
do{\
val &= ~(1<<bit);\
}while(0)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunny秋千坠
2013-04-11 · TA获得超过766个赞
知道小有建树答主
回答量:388
采纳率:77%
帮助的人:236万
展开全部
最后一位1变0,0变1,
例如:32位下
int a;
printf("请输入a的值");
scanf("%d",&a);
a=a^1;
printf("%d",a);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式