异或替换的原理?

来源:7-2 项目作业

铜雀春深7748616

2021-07-12 11:51:34

不太明白异或替换是什么原理,x=x^y;之后x变成y了,不会造成x变量内数值的丢失吗?为什么最后还要再来一遍x=x^y;呀?

int x=3,y=4;

System.out.println("x="+x+",y="+y);

x=x^y;

y=x^y;

x=x^y;

System.out.println("交换后x="+x+",y="+y);


写回答

1回答

好帮手慕小小

2021-07-12

同学你好,x=x^y;执行一次此语句时,x是不会变成y的,此时x的值是x与y异或之后的结果,y值无变化。

异或是一种基于二进制的位运算符,其运算法则是对运算符两侧数的每一个二进制单位,同值取0,异值取1。

异或运算符重要的性质是自反性:A^B^B=A,即对给定的数A,用同样的运算因子(B)做两次异或运算后仍得到A的本身。上述代码的运算过程如下:
http://img.mukewang.com/climg/60ebfd04093b775209150416.jpg

祝学习愉快~

3

0 学习 · 9886 问题

查看课程