두 정수형 변수의 값을 서로 교환하기 위해서
보통은 추가적인 메모리를 만들어서 사용한다.
그 예는 다음과 같다.
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연산으로 가능하다.
'C/C++ > 비트/쉬프트' 카테고리의 다른 글
Integer의 부호 판별 (0) | 2012.09.02 |
---|---|
비트수가 같은 다음 수(Next Higher or Lower Number with same number of binary bits set) (0) | 2012.06.05 |
int형 변수에서 1인 비트수(비트개수) 구하기 (0) | 2011.11.12 |
Double Dabble(Shift and add 3) Algorithm (2) | 2011.09.30 |
[비트/쉬프트 - 1] 쉬프트 연산 정의 (0) | 2011.09.01 |