XOR 交换算法

Tags
algorithm
Created
May 11, 2018 9:52 AM

逻辑异或:

逻辑算符互斥或闸(exclusive or)是对两个运算元的一种逻辑分析类型,符号为 XOR 或 EOR 或 ⊕。当两两数值相同为否,而数值不同时为真

使用 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

SuperMade with Super