Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
05-16 20:20
관리 메뉴

nomad-programmer

[Programming/C] XOR(^)를 이용한 데이터 교환 본문

Programming/C

[Programming/C] XOR(^)를 이용한 데이터 교환

scii 2021. 1. 20. 02:29

XOR를 이용하면 손쉽게 데이터를 교환할 수 있다. 예를 들어, 연산 결과를 F라 하면 F^a 는 b가 되고 F^b는 a가 된다.

다음의 예제를 살펴보자.

#include <stdio.h>

// 매크로를 이용한 데이터 교환
#define SWAP(a, b) { a^=b; b^=a; a^=b; }

// 함수를 이용한 데이터 교환
void Swap(int* a, int* b){
    *a ^= *b;
    *b ^= *a;
    *a ^= *b;
}

int main(int argc, const char * argv[]) {
    int a = 10;
    int b = 20;
    
    printf("a: %d, b: %d\n", a, b);
    Swap(&a, &b);
    printf("a: %d, b: %d\n", a, b);
    SWAP(a, b);
    printf("a: %d, b: %d\n", a, b);

    return 0;
}

/* 결과
a: 10, b: 20
a: 20, b: 10
a: 10, b: 20
*/

a와 b를 ^ 연산하여 결과를 a에 저장하고 다시 a와 b를 ^ 연산하여 b에 저장하면 b는 10이 된다. 다시 a와 b를 ^ 연산하여 a에 저장하면 20이 되어 두 수를 교환할 수 있다.

Comments