C语言中 &和^是怎么回事?

intmain(){inta=1,b=2,c=3,x;x=(a^b)&c;printf("%d\n",x);}这个怎么做的?... int main(){
int a=1,b=2,c=3,x;
x=(a^b)&c;
printf("%d\n",x);
}
这个怎么做的?
展开
 我来答
百度网友24cdcaf
2020-03-04 · 超过18用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:4.4万
展开全部
C语言中^与&都是位运算符,^是按位或运算,&是按位和运算。要知道,在计算机实际进行运算时,是把用户输入的数据转化成2进制进行运算的。比如1就会转化为00000001 而2会转化为00000010 ,那么a^b就相当于对这两个二进制数字中每一位都对应进行或运算。例如
00000001和00000010或运算时,两个数每一位只要有一个是1就是1,只有都为0时才为0,
因此结果为00000011 ,而这个结果与c进行位的和运算,即:对应位都为1才是1,否则为0
因此,00000011与3的二进制数00000011的和运算结果为00000011
在输出的时候计算机把二进制数转化为%d所表示的十进制数,即3输出
MarsCode
2024-08-21 广告
```c#include int main() { int a, b; printf("请输入两个整数: "); scanf("%d %d", &a, &b); int sum = a + b; printf(... 点击进入详情页
本回答由MarsCode提供
凌志学长

2022-03-31 · TA获得超过114个赞
知道小有建树答主
回答量:266
采纳率:50%
帮助的人:13.2万
展开全部
^是按位或运算,&是按位和运算。要知道,在计算机实际进行运算时,是把用户输入的数据转化成2进制进行运算的。比如1就会转化为00000001 而2会转化为00000010 ,那么a^b就相当于对这两个二进制数字中每一位都对应进行或运算。例如
00000001和00000010或运算时,两个数每一位只要有一个是1就是1,只有都为0时才为0,
因此结果为00000011 ,而这个结果与c进行位的和运算,即:对应位都为1才是1,否则为0
因此,00000011与3的二进制数00000011的和运算结果为00000011
在输出的时候计算机把二进制数转化为%d所表示的十进制数,即3输出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2020-03-17
展开全部
& 是 按位与,两个都是 1 的时候结果为1,否则结果为0
^ 按位异或—— 若参加运算的两个二进制位值相同则为0,否则为1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GTA小鸡
高粉答主

2020-03-04 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.2亿
展开全部
&按位与,^按位异或
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式