/*****************************************
int A = 3;
int B = 17;
A = A ^ B; // 비트단위 xor 연산
B = A ^ B;
A = A ^ B;
******************************************/
위 함수를 세부적으로 살펴보면
int A = 3; int B = 17;
A = A ^ B; B = A ^ B; A = A ^ B; |
0000 0011 0001 0001
A = (0000 0011) XOR (0001 0001) = 0001 0010 B = (0001 0010) XOR (0001 0001) = 0000 0011 A = (0001 0010) XOR (0000 0011) = 0001 0001 |
위처럼 A와 B의 값이 바뀐것을 확인할 수 있다.
하지만 이런 방식의 경우 두 변수의 메모리 위치가 동일할 떄 동작하지 않는다는 문제점이 있다.
자료 참고 : http://hisjournal.net/blog/125
한동훈님의 프로그래밍 스타일