题目:两个数字,不用中间变量,怎么把它们交换?
看到这个题目,还是先楞了一下,才想到解法。
其实解法就是图形编程中常见的消去法:
B=A⊕(A⊕B)
A=A⊕(A⊕B)⊕(A⊕B)
注意:异或运算是满足交换律和结合律的,因此,A⊕(A⊕B)=(A⊕A)⊕B=0⊕B=B
在两个图像A和B重叠时,重叠部分取色用异或(A⊕B),再用A异或一下A⊕(A⊕B),就把B还原了,在图形上经常用到。
题目:两个数字,不用中间变量,怎么把它们交换?
看到这个题目,还是先楞了一下,才想到解法。
其实解法就是图形编程中常见的消去法:
B=A⊕(A⊕B)
A=A⊕(A⊕B)⊕(A⊕B)
注意:异或运算是满足交换律和结合律的,因此,A⊕(A⊕B)=(A⊕A)⊕B=0⊕B=B
在两个图像A和B重叠时,重叠部分取色用异或(A⊕B),再用A异或一下A⊕(A⊕B),就把B还原了,在图形上经常用到。