请帮我讲解一下C语言中的异或运算

与其它语言不同,C语言和C++语言的异或不用xor,而是用“^”,键入方式为Shift+6。(而其它语言的“^”一般表示乘方)若需要交换两个变量的值,除了通常使用的借用中... 与其它语言不同,C语言和C++语言的异或不用xor,而是用“^”,键入方式为Shift+6。(而其它语言的“^”一般表示乘方)
若需要交换两个变量的值,除了通常使用的借用中间变量进行交换外,还可以利用异或,仅使用两个变量进行交换,如:

1
2
3

a=a^b;
b=b^a;
a=a^b;

详解:

1
2
3

a1=a^b
b=a1^b
a=a1^b=a1^(a1^b)=a1^a1^b=b

集合:

1

a=a^b^(b=a);

这样就完成了a与b的交换。
综上:同一变量与另一变量和其异或值异或等于自身。
用例:可使用于加密算法某一环节或更多环节,使算法更复杂,不易被破解,安全性更高
展开
 我来答
fiyshow
推荐于2016-07-07 · TA获得超过224个赞
知道答主
回答量:251
采纳率:0%
帮助的人:152万
展开全部
首先,我们看一下异或的原理:
a = 3 ^ 5;
3的二进制是0011,5的二进制是0101。异或发现两者的不同之处,所以a最终为0110b(4)。
了解了异或的基本原理后,接下来看上述的代码。
a^=b;
这一句使得a被赋值为“数值a”与“数值b”的“差异值”。
然后:b^=a;
这一句用异或利用“差异值”来还原a的数值,并赋值给b。此时b等于a先前的数值。
最后一句:a^=b;
因为a仍然保存着“差异值”,这一句通过异或使得b的初始值被还原,并赋值给a。
。。。。。
这样,异或就将a与b的数值“巧妙”地交换了……
我也是百度的,和楼主一起学习…………
kitty0702
2014-09-14 · TA获得超过1086个赞
知道小有建树答主
回答量:646
采纳率:66%
帮助的人:267万
展开全部
这是为运算符,变量做运算时要以二进制进行运算例如:a=5,b=6;我以四个二进制位来表示这两个变量(当然在c 的编译环境下,一般用16或者是32个二进制位来表示)a:0101 b:0110
异或的原理是相同为 0 不同为1;所以 a1=a^b 的结果为0011;b=b^a;的结果为0101;a=a^b;的结果为0110 达到了a 和b 交换的目的。
追问
请问他们合起来怎么缩写呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式