XORを利用してみよう
-
2つのデータを入れ替えるには通常もう一つ別の変数を使って行います。それを2つの変数だけで入れ替える方法を考えましょう
AとBのXORを取ったものをCし、Cにもう一度AをXORするとBになります。またCにBをXORするとAになります。Cのようなマジックナンバーを使って、2つのデータの入れ替えを行ってみましょう#include <iostream> using namespace std; void swap(int* a, int* b); int main() { int a, b; cout << "2つの整数を入力してください\n"; cin >> a >> b; cout << "a=" << a << ",b=" << b << endl; swap(&a,&b); cout << "a=" << a << ",b=" << b << endl; return 0; } void swap(int* a, int* b) { *a ^= *b; *b ^= *a; *a ^= *b; }
実はswap関数は1行で書くこともできます。チャレンジしてみてください。