【C++】XOR交換

XOR交換的優點是不用額外開一個變數空間,只需要原本的兩個變數即可。

#include <iostream>
using namespace std;
int main(){
    int a = 1, b = 2;
    cout << a << ' ' << b << '\n';
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    cout << a << ' ' << b << '\n';
}

原理

a = a ^ b

b = (a ^ b) ^ b
= a ^ (b ^ b)
= a ^ 0
= a

a = (a ^ b) ^ a
= b ^ (a ^ a)
= b ^ 0
= b

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *