JavaScript에서 쉬프트 연산자는 비트 단위로 값을 이동시키는 데 사용됩니다. 쉬프트 연산자는 주로 << (왼쪽 쉬프트)와 >> (오른쪽 쉬프트)로 구분됩니다. 아래에 각각의 예시와 원리를 설명하겠습니다.
<<)왼쪽 쉬프트 연산자는 비트를 왼쪽으로 이동시키며, 오른쪽에는 0이 채워집니다.
let num = 5; // 이진수로 0101
let result = num << 1; // 왼쪽으로 1비트 이동
console.log(result); // 10 (이진수로 1010)
5는 이진수로 0101입니다.1010이 되며, 이는 10에 해당합니다.num << n은 num * 2^n과 같습니다.>>)오른쪽 쉬프트 연산자는 비트를 오른쪽으로 이동시키며, 왼쪽에는 부호 비트(최상위 비트)가 채워집니다. 이진수가 음수일 경우, 부호 비트를 유지합니다.
let num = 10; // 이진수로 1010
let result = num >> 1; // 오른쪽으로 1비트 이동
console.log(result); // 5 (이진수로 0101)
10은 이진수로 1010입니다.0101이 되며, 이는 5에 해당합니다.num >> n은 Math.floor(num / 2^n)과 같습니다.>>>)논리적 오른쪽 쉬프트 연산자는 부호 비트를 무시하고 항상 0을 채웁니다.
let num = -10; // 이진수로 11111111111111111111111111110110 (32비트)
let result = num >>> 1; // 논리적 오른쪽으로 1비트 이동
console.log(result); // 2147483645
<<): 값을 왼쪽으로 이동, 2의 거듭제곱 곱하기.>>): 값을 오른쪽으로 이동, 2로 나누기, 부호 유지.>>>): 값을 오른쪽으로 이동, 0으로 채우기.