C/C++/비트/쉬프트2012. 6. 1. 15:55

두 정수형 변수의 값을 서로 교환하기 위해서


보통은 추가적인 메모리를 만들어서 사용한다.


그 예는 다음과 같다.


int a = 3, b = 10;


int temp  = a;

a = b;

b = temp;



하지만, xor 연산을 사용하면 추가적인 메모리 없이 a와 b, 두 값을 교환할 수 있다.


길게 끌거 없이 그 예를 보자.


int a = 3, b = 10;

// a = 3, b = 10


a = a ^ b;

b = a ^ b;

a = a ^ b;

// a = 10, b = 3



세번의 xor연산을 통해서 두 값을 교환할 수 있다.


이 원리를 간단히 설명하면


두 변수의 xor 연산값과 두 변수중 한 변수의 값을 알고 있다면

두 값을 xor 연산하여 나머지 변수의 값을 알 수 있다.


이다.


결론


두 변수의 메모리 교환은 세번의 xor연산으로 가능하다.

Posted by 투명테잎