JS - bit 연산자
어떻게 보면 가장 근본적이라고 할 수 있는 비트 연산자에 대해 메모하려한다.
간단하게 데이터의 기본 단위 Byte 는 8bit 가 모여서 이루는 단위이고, 1bit 의 값은 0, 1 이다.
기본 연산자
& (AND 연산자)
피연산자 둘 다 1일 경우 1을 반환
console.log(7 & 1); // 1
| (OR 연산자)
피연산자 둘 중 하나만 1이라도 1을 반환
console.log(7 | 1); // 7
^ (XOR 연산자)
피연산자 값이 같으면 0, 다르면 1을 반환
console.log(7 ^ 1); // 6
~ (NOT 연산자)
양수이면 음수로 변환 후 -1, 음수이면 양수로 변환 후 -1
console.log(~4); // -5
console.log(~-3); // 2
이동 연산자
이동하면서 발생하는 빈자리는 0으로 채워진다.
<< (왼쪽 이동 연산자)
연산자 우측에 지정한 수만큼 좌측 비트를 왼쪽을 이동
console.log(4 << 2); // 16
>> (오른쪽 이동 연산자)
연산자 우측에 지정한 수만큼 좌측 비트를 사인 부호를 제외하고 오른쪽을 이동
console.log(7 >> 1); // 3
console.log(-8 >> 1); // -3
>>> (오른쪽 이동연산자)
연산자 우측에 지정한 수만큼 좌측 비트를 사인 부호를 포함하고 오른쪽을 이동
이동된 MSB 는 0 이 된다.
console.log(7 >>> 1); // 3
console.log(-8 >>> 1); // 2147483644