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으로 채우기.