프로그래머스 문제 풀이 중에 다른 분의 풀이를 보던 중 '|single vertical line의 쓰임을 찾아보다가 비트 연산자라는 것을 알게 되었다.

 

비트 연산자 and 대응 되는 두 비트가 모두 '1'일 때만 '1'을 반환한다.

let num1 = 1; // 비트로 변환 시에 0000 0001
let num2 = 3; // 비트로 변환 시에 0000 0011

num1 & num2 //and는 모두 1일 경우에만 1을 반환하므로 0000 0001을 반환하고 10진수로는 1이다.

 

|

비트 연산자 or 대응 되는 두 비트중 하나라도 '1'이면 '1'을 반환한다.

let num1 = 1; // 비트로 변환 시에 0000 0001
let num2 = 3; // 비트로 변환 시에 0000 0011

num1 | num2 //or는 하나라도 1일 경우에만 1을 반환하므로 0000 0011을 반환하고 10진수로는 3이다.

 

비트 연산자 xor 두 비트가 모두 다르면 '1' 모두 같으면 '0'을 반환한다.

let num1 = 1; // 비트로 변환 시에 0000 0001
let num2 = 3; // 비트로 변환 시에 0000 0011

num1 ^ num2 //xor는 비트가 다를 경우에는 1을 반환하고 같으면 0을 반환한다. 0000 0010을 반환하고 10진수로는 2이다.