XOR 交换算法
逻辑异或:
使用 XOR 按位操作交換具有相同數據類型的不同變量的值,而不使用臨時變量:
X := X XOR Y
Y := X XOR Y
X := X XOR Y
异或有这个特性:
0 ⊕ y === y
假设满足结合律(应该是定理):
(x ⊕ y) ⊕ y === x ⊕ y ⊕ x === (y ⊕ y) ⊕ x
下面证明 XOR swap 算法:
x1 = x ⊕ y
y1 = x1 ⊕ y
x2 = x1 ⊕ y1
=>
x2 = (x ⊕ y) ⊕ ((x ⊕ y) ⊕ y) === y
y1 = (x ⊕ y) ⊕ y === x