永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-01-26 01:09
与其它语言不同,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的交换。
综上:同一变量与另一变量和其异或值异或等于自身。
用例:可使用于加密算法某一环节或更多环节,使算法更复杂,不易被破解,安全性更高
最佳答案
首先,我们看一下异或的原理:
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的数值“巧妙”地交换了……
我也是百度的,和楼主一起学习…………
全部回答
位运算共有与或非还有就是异或。 异或指的是不同则取1.相同取0; 或是有1则为1,若两个都为1,还为1.两个都为零才为0 与是两个都为1,结果为1;其他结果为0
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
iPhone6给抢了怎么办
福建省电信公司永春县电信局停车场(出入口)地
英语翻译“我将以总统制为主线,来比较两种制
已知钍234的半衰期为24天,则质量m0=1g的钍234
泉州市永春新新园艺有限公司停车场(出入口)地
我记得QQ飞车里面有一个BGM的一句是ha ji ma
江西庆源实业有限公司地址在什么地方,想过去
如果有很多块硬盘比如20块以上,想要一起使用,
请问各位高人,我一位朋友有一方古砚,其背铭
患者女性,23岁。一周前无意中发现左乳有一无
自己开车谷饶到司马怎么走最近
永春县永春老醋有限责任公司停车场(出入口)地
怎么把手机里面已安装的应用 像qq这样的,把a
迪彩老姜护发素怎么样
嘉兴工商银行车贷利率多少贷5万怎么贷贷一年
推荐资讯
甲公司2014年1月1日以4500万元购入乙公司30%
【人体结构与功能】举出一类说明人体结构与功
学大教育中小学课外辅导专家地址有知道的么?
老顾修车地址在什么地方,想过去办事
啊死神 朽木白哉居然死了~坑爹啊
设计题目:体育俱乐部任务概述用地位于北方某
停车场(迎宾大道)(迎宾大道229号附近停车场)
设立质权的当事人可以采取书面或口头形式订立
设X~N(0,1),Y~b(20,0.1),X与Y独立
异地恋的情侣多吗
海鸥老人碑文请教帮写“海鸥老人”的碑文
小丑怎么出装
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?