XOR
: x,y가 있을 때, 각 비트가 서로 다르면 1, 서로 같으면 0
x : 101
y : 011
------- XOR
110
NOT(~), OR(|) , AND(&) 로 XOR 표현하려면?
- XOR = (x'y + xy')
하나씩 의미를 확인해보자.
x'y : x의 반대와 y의 AND. 즉 x'y의 결과 값은, x의 반대의 비트와 y 비트 중 똑같이 1인 곳의 값이 1이 된다.
x' : 010
y : 011
-------- AND
010
즉 , 의미는 x,y 두 비트를 비교했을 때, 값이 서로 다면서, x의 비트가 0인곳의 위치가 , 결과적으로 1이 나오게 하는 것이다.
반대로 xy'은, x,y 원본의 비트가 서로 다른데, y의 비트값이 0인 위치가 1이 되도록 하는것이 xy'이다.
결론
XOR = (x'y + xy') 은
(x,y의 비트값이 서로 다른데, x쪽이 0인 위치 + x,y의 비트값이 서로 다른데, y쪽 비트가 0인 위치) 를 더해준 값이된다.
(어차피 둘다 1이여도, XOR는 0 이 되야 하기 떄문에, x,y의 비트가 서로 다르면서 한쪽이 0인 부분만 찾아서 합침으로써, 결과를 얻는다)
'알고리즘' 카테고리의 다른 글
Algorithm - 순열과 조합 (0) | 2016.08.29 |
---|---|
DFS,BFS (0) | 2015.07.09 |
KMP 알고리즘 (문자열 패턴 검색) (0) | 2015.05.29 |
[알고리즘] 퀵 정렬(Quick Sort) (0) | 2014.12.01 |