C语言里的按位异或运算符

c语言的按位异或运算符是啥意思啊,做什么用的啊,谢谢... c语言的按位异或运算符是啥意思啊,做什么用的啊,谢谢 展开
 我来答
浪尖讨生活9z
高粉答主

2018-10-05 · 每个回答都超有意思的
知道小有建树答主
回答量:298
采纳率:100%
帮助的人:14万
展开全部

按位异或,其操作符为^,形式为
a^b
计算时,根据操作数a和b每位的值,计算结果,当a,b的对应位上值相同时,结果的该位上值为0,否则值为1。

char a = 0x12, b = 0x34;
a^b
= 0x12 ^ 0x34
= B0001 0010 ^ B0011 0100
= B0010 0110
=0x26

扩展资料:

异或,英文为exclusive OR,缩写成xor异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。

参考资料:异或百度百科

隐秘却伟大
2021-02-16 · 苏格拉菲的歌谣
隐秘却伟大
采纳数:2 获赞数:16

向TA提问 私信TA
展开全部
第一、C语言中异或运算符为^,顾名思义就是不同为1,相同为0;具体就是0^0等于0,1^1等于0,0^1等于1,1^0等于1;

第二、异或运算的用途:First:可以是使一个数中的某些特定位进行翻转;例如对整数10100001(即整数161在进行位运算过程中,是以补码的形式操作的)中的第1位和第3位进行翻转(最低位【即权值最小,即最右侧】),用00000111与其做异或运算即可;Second:可以实现两个值的交换,而不需要借助temp,如 int a=12,b=161; a=a^b;b=b^a;a=a^b;进行操作后,a=161,b=12;Third:a=a^b^b;进行这波操作后a还是原来的a;
第三、谢谢各位看官,初来乍到,多多支持(点赞)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
guo383461559
2008-09-16 · TA获得超过153个赞
知道答主
回答量:10
采纳率:0%
帮助的人:0
展开全部
1:“按位与”运算符(&)用法是如果两个相应的二进制位都为1,则该位的结果值为1否则为0。0&0=0,1&0=0,1&1=1
2:“按位或”运算符(|)用法是如果两个相应的二进制位有一个为1,则该位的结果值为1否则为0。0&0=0,1&0=0,1&1=1
0,1&0=1,1&1=1
3:“异或”运算符(^)用法是如果两个相应的二进制位为同号,则该位的结果值为1否则为0。0&0=1,1&0=0,1&1=1
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜微空
2017-09-08 · TA获得超过177个赞
知道答主
回答量:40
采纳率:0%
帮助的人:16.2万
引用guo383461559的回答:
1:“按位与”运算符(&)用法是如果两个相应的二进制位都为1,则该位的结果值为1否则为0。0&0=0,1&0=0,1&1=1
2:“按位或”运算符(|)用法是如果两个相应的二进制位有一个为1,则该位的结果值为1否则为0。0&0=0,1&0=0,1&1=1
0,1&0=1,1&1=1
3:“异或”运算符(^)用法是如果两个相应的二进制位为同号,则该位的结果值为1否则为0。0&0=1,1&0=0,1&1=1
展开全部
1:“按位与”运算符(&)全1为1,有0则0。0&0=0,1&0=0,1&1=1
2:“按位或”运算符(|)有1则1,全0则0。0|0=0,1|0=1, 1|1=1
3:“异或”运算符(^)相同为0,不同为1。0^0=0,1^0=1,1^1=0
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无壳螃蟹
2008-09-16 · TA获得超过578个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:0
展开全部
C语言中^为按位异或运算符,若两个二进制位相同,则结果为0,不同为1

#include "stdio.h"
main()
{
int a=6,b=10,c;
c=a^b;
printf("%d",c);
}
函数输出结果为12

将6和10分别转换为2进制数为0110(前边补了个0)和1010。然后按照定义进行异或运算

0110 a
1010 b
1100 a和b最左边第一位和第二位不相同,所以分别为1,第三位和第四位相同,所以分别为0

二进制数1100转换为10进制数,结果是12。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式