java中a=a^b;b=a^b;a=a^b;它的变化详细过程是怎样的?

而且java中不是说“^”是异或运算符吗,相同为0,不同为1,是不是我理解错误了啊?... 而且java中不是说“^”是异或运算符吗,相同为0,不同为1,是不是我理解错误了啊? 展开
 我来答
帐号已注销
2020-10-30 · TA获得超过77.1万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:166万
展开全部

^int a= 10; // 00001010(二进制)

int b= 5; // 00000101(二进制)

∵0^du0=0,1^1=0,0^1=1,1^0=1

∴00001010^00000101=00001111

∵二进制00001111=十进制15

∴a^b = 15

例如:

位运算是C语言的一大特色,利用异或运算可以实现交换两个数,原理是一个整数与另外一个数进行两次异或运算仍然是其本身,基本原理用式子表达如下:

(1) A ^ A = 0;

(2) A = A ^B;

(3) B = A ^B;(相当于B = A ^ B ^ B ,即 B = A)

(4) A= A ^ B;(相当于A = A ^B ^A ,即A = B)

利用位运算不仅提高了代码的执行速度,而且此处还减少了对辅助变量的需求,因此提高了程序的效率。

扩展资料:

归零律:a ⊕ a = 0

恒等律:a ⊕ 0 = a

交换律:a ⊕ b = b ⊕ a

结合律:a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;

自反:a ⊕ b ⊕ a = b.

d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c.

若x是二进制数0101,y是二进制数1011;

则x⊕y=1110

只有在两个比较的位不同时其结果是1,否则结果为0

即“两个输入相同时为0,不同则为1”!

参考资料来源:百度百科-异或

artintin
推荐于2017-11-25 · TA获得超过1.2万个赞
知道大有可为答主
回答量:7508
采纳率:80%
帮助的人:2872万
展开全部
是按位异或,每个二进制位上做 都是如此。

不是判断整个a和b是否相等。
结果应该是a和b的数值互换。
追问
我知道是a和b的数值互换,但是其互换的最详细的过程是怎么样的,麻烦分析一下,谢谢!
追答
第一步:  a=a^b   现在a中记录下了原a和原b每位上相同不相同的标志(0代表相同1代表不同)
第二步:b=a^b
注意0^0=0 0^1=1 a中若第i位为0,则结果b中保留和原b一样,
但0又表示代表相同原a中第i位和原b第i位一样,所以结果b中第i位和原a中第i位一样
又1^0=1 1^1=0 a中若第i位为1,则结果b中第i位和原b第i位是相反的,
但1又表示代表相同原a中第i位和原b第i位不同,所以结果b中第i位和原a中第i位一样
这样第二步的结果新b就是原来的a
第三步和第二步是类似的,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
扶圣44
2019-02-18
知道答主
回答量:48
采纳率:0%
帮助的人:15.3万
展开全部
int a = 10; // 00001010(二进制)
int b = 5; // 00000101(二进制)
∵0^0=0,1^1=0,0^1=1,1^0=1
∴00001010^00000101=00001111
∵二进制00001111=十进制15
∴a^b = 15
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式