์.. ์ด๊ฑฐ ๋ณด๋ฉด์ ๊ฐํํ์ด์
์ด์ ๊ป ์ ๋ง ๊ฒฝํํด๋ณด์ง ๋ชปํ ์ฝ๋์๊ฑฐ๋ ์.
๋ ๋ณ์์ ๊ฐ์ ๋ฐ๊พผ๋ค.. ํ๋ฉด Swapํจ์๋ง์ ์๊ฐํ์๋๋ฐ ..
"์ฐ์ฐ๋ง"์ ํตํด ์๋ฆฌ ๊ฐ์ ๋ฐ๊พผ๋ค๋ฉด ?
#include <stdio.h>
int main()
{
char a = 3, b = 7;
printf("Before : a = %d, b= %d\n", a, b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("After : a = %d, b = %d\n", a, b);
return 0;
}
/*
1byte๋ก ํํํ๋ฉด
a = 0000 0011
b = 0000 0111
๋๊ฐ์ง ์๋ฆฌ ๋ฐ๊พธ๋ ค๋ฉด?
xor์ ๋๋ฒ ์ฐ์ฐ ์ ๋ณธ๋ ์์ ์ด ์ ์ฅํ ๊ฐ์ ๊ฐ์ง
(๊ฐ์ผ๋ฉด 0, ๋ค๋ฅด๋ฉด 1)
0000 0011 (a)
0000 0111 (b)
---------
0000 0100 (4)
--> 4
a = a^b; -> a๊ฐ 4๋ก ๋ฐ๋
0000 0111 (b)
0000 0100 (4)
----------
0000 0011 (a)
--> ๋ค์ 3์ด๋จ.
b = b^a; -> b๊ฐ 3์ผ๋ก ๋ฐ๋
0000 0011 (b) ์๋ a
0000 0100 (a) ์ถ๊ฐ์ ์ผ๋ก ์๊ธด ๊ฐ
---------
0000 0111 (7) ์๋ b
a = b^a ; -> a๊ฐ 7๋ก ๋ฐ๋
*/
XOR์ฐ์ฐ์๋ฅผ ์์๋์?
xor ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์, ์ด๋ ๊ฒ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉ์ด ๋ ์ ์๋ต๋๋ค.. ์ ๋ ์ฒ์ ๋ณด๋ค์ ใ
ใ
ํจ์๋ก ์ ์ํด์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค!
์๊ฐํ๋ ๋ฐฉ๋ฒ๊ณผ ๋๋ฌด ๋ค๋ฅด๋ค๊ณ ๋๋ผ์ง ๋ง์ธ์ ใ
ใ
#include <stdio.h>
#define SWAP(a,b) {a ^= b; b ^= a; a ^= b;}
int main()
{
char a = 3, b = 7;
printf("Before : a = %d, b= %d\n", a, b);
SWAP(a, b)
printf("After : a = %d, b = %d\n", a, b);
return 0;
}
๊ตฟ !