temp 변수 없이 swap 하기

2019. 10. 16. 22:57PL/C++

XOR 연산의 의미를 깊게 바라볼 필요가 있다

1. 0과 연산하면 자기 자신이, 1과 연산하면 비트가 반전된다

2. 교환, 결합 법칙이 성립된다

 

#include <iostream>

using namespace std;

void swap(int* a, int* b) {
	*a = *a ^ *b;
	*b = *a ^ *b;
	*a = *a ^ *b;
}

int main(void) {
	int a = 100, b = 5;
	cout << a << ' ' << b << '\n';
	swap(&a, &b);
	cout << a << ' ' << b << '\n';
	return 0;
}