글 수 3,386
bit연산자만을 이용하여 swap()을 구현하세요~!
ㅋㅋㅋ
swap(a,b)는 a와 의 내용을 서로 바꾸는 함수입니다.
ㅋㅋㅋ
swap(a,b)는 a와 의 내용을 서로 바꾸는 함수입니다.
본 게시물은 2011.01.04일 복구된 게시물 입니다. 첨부파일 및 이미지파일은 복구 되지 않았습니다. [자세한 내용 보기]
2007.10.22 14:37:52 (*.115.46.165)
#include
void swap(int*,int*);
int main()
{
int a=1,b=2;
printf("Swap Before : %d %dn",a,b);
swap(&a,&b);
printf("Swap After : %d %dn",a,b);
return 0;
}
void swap(int* a, int* b)
{
*a^=*b^=*a^=*b;
}
void swap(int*,int*);
int main()
{
int a=1,b=2;
printf("Swap Before : %d %dn",a,b);
swap(&a,&b);
printf("Swap After : %d %dn",a,b);
return 0;
}
void swap(int* a, int* b)
{
*a^=*b^=*a^=*b;
}
2007.10.22 14:38:26 (*.115.46.165)
위에처럼 했더니 잘 나오네요
결과 값
Swap Before : 1 2
Swap After : 2 1
Press any key to continue
결과 값
Swap Before : 1 2
Swap After : 2 1
Press any key to continue
2007.10.22 16:12:33 (*.30.145.207)
a ^= b;
b ^= a;
a ^= b;
a = a^b;
b = b^(a^b); // b = b^b^a
a = (a^b) ^ (b^(a^b) ); // a = a^a^b^b^b
a^a == b^b // 01 xor 01 = 11 , 11 xor 11 = 11
(a^a)^b == b // 1111 xor 1001 = 1001
헥헥...
b ^= a;
a ^= b;
a = a^b;
b = b^(a^b); // b = b^b^a
a = (a^b) ^ (b^(a^b) ); // a = a^a^b^b^b
a^a == b^b // 01 xor 01 = 11 , 11 xor 11 = 11
(a^a)^b == b // 1111 xor 1001 = 1001
헥헥...



