728x90
변수와 변수의 값을 바꿀 때 보통은 아래와 같이 한다.
void swap(int& a, int& b)
{
if (a != b)
{
int temp = a;
a = b;
b = temp;
{
}
XOR 연산자를 이용해서 연산할 경우에는 temp 변수를 생성하지 않고 할 수 있다. 방법은 아래와 같다.
void swap(int& a, int& b)
{
if(a != b)
{
a = a ^ b
b = b ^ a
a = a ^ b
}
}
XOR 연산은 교환법칙과 결합법칙이 성립한다.
이 법칙들을 이용해서 계산 과정을 살펴보면 아래와 같다.
c = a ^ b
d = b ^ c = b ^ (a ^ b) = b ^ a ^ b = a ^ b ^ b = a ^ 0 = a
e = c ^ d = (a ^ b) ^ a = a ^ b ^ a = a ^ a ^ b = 0 ^ b = b
따라서 XOR 연산을 위와 같이 진행하면 두 값은 swap 된다.
728x90
'IT > 프로그래밍' 카테고리의 다른 글
| Visual Studio와 erase 함수 (0) | 2019.09.15 |
|---|---|
| Visual Studio에서 CRT 라이브러리로 C++ 메모리 누수 검사 (0) | 2019.02.17 |
| [비주얼 스튜디오] 파일을 명령 인수로 지정하여 입출력 하기 (input / output redirection) (0) | 2019.01.21 |
| [자바 기본] Java 개발 환경 설치하기 (JRE, JDK 설치 및 세팅) (0) | 2018.12.09 |