<C++ 기준>
int 변수는 32비트(비트란? 0 혹은 1로 되어있음) => 0 혹은 1로 되어있는 비트가 32개 붙어 있는 것.
ex) 0이 32개 (2진법)
0000 0000 0000 0000 0000 0000 0000 0000(원래 다 붙어있음)
int a = 0
0000 0000 0000 0000 0000 0000 0000 0001
int a = 1
0000 0000 0000 0000 0000 0000 0000 0010
int a = 2
0000 0000 0000 0000 0000 0000 0000 0011
int a = 3
0000 0000 0000 0000 0000 0000 0000 0100
int a = 4
0000 0000 0000 0000 0000 0000 0000 0101
int a = 5
0000 0000 0000 0000 0000 0000 0000 0111
int a = 7
0000 0000 0000 0000 0000 0000 0000 0110
int a = 6
< OR 연산자 >
101010
010101
------
111111
/* OR 연산자는 둘중에 하나가 1이면 무조건 1 */
< AND 연산자 >
101010
010101
------
000000
/* AND 연산자는 둘중에 하나가 0이면 모두 0 그러나 둘다 1이면 1 */
< XOR (exclusive OR) 연산자 >
0 XOR 0 = 0
1 XOR 1 = 0
1 XOR 0 = 1
/* XOR는 같으면 0 다르면 1 */
<연산자 표시>
AND | & |
OR | | |
XOR | ^ |
XOR을 통해서 임시변수 혹은 추가 변수 없이 변수를 swap 할 수 있다.
2021/01/19 - [CS] - tmp(추가 변수)없이 swap 하기
tmp(추가 변수)없이 swap 하기
a = 4 b = 2 a = a ^ b # = a XOR b b = a ^ b # = a XOR b XOR b # = a XOR 0 # = a a = a ^ b # = a XOR b XOR a # = a XOR a XOR b # = 0 XOR b # = b print(a) # 2 print(b) # 4
parase.tistory.com
'CS' 카테고리의 다른 글
tmp(추가 변수)없이 swap 하기 (0) | 2021.01.19 |
---|
최근댓글