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