JS XOR 비트연산자

코몽·2022년 2월 16일
0

코딩테스트 답안을 보다가 ^를 사용하여 문제를 해결하는 경우를 보았다.
XOR연산자는 이진수에서 비트가 서로 같으면 0 다르면 1을 반환하는 방식이다.

고로 1 ^ 2를 하면 이진수로 변경되어 0001 XOR 0010이고
이중 앞에 두 0은 같고 뒤에 두 0은 다르기에
결과는 0011로 3이 된다.

여기서 재밌는 점을 2가지 발견하였다.

  • 첫 째는 a^b=c 인 경우에 a,b,c 끼리 xor연산을 하면 항상 결과는 나머지 하나라는 점이다.
    그도 당연한 것이 3과 2 즉, 0011과 0010을 xor하면 0001인 1이고 그 반대도 마찬가지이다.
    그러므로 c^a=b, c^b=a 인 셈이다.

  • 둘 째는 이를 이용해 a !== b 연산을 대체할 수 있다는 점이다.
    둘이 다르면 이진수로 변환되어 다른 부분들이 1로 변환되어 새로운 수가 나올 것이고
    둘이 같으면 이진수로 변환되어도 전부 같기에 그냥 0을 반환할 것이기 때문이다.
    그렇기에 a와 b가 같으면 0 (false) 다르면 양수 (true)가 나올 것이기 때문이다.

결론
a ^ b - 서로 같지 않을 때 true 반환
a !== b - 서로 같지 않을 때 true 반환

profile
프론트엔드 웹 개발자(React) https://code-d-monkey.tistory.com/

0개의 댓글