shift operator

agnusdei·2024년 10월 4일
0

Hardware & Software

목록 보기
4/136

JavaScript에서 쉬프트 연산자는 비트 단위로 값을 이동시키는 데 사용됩니다. 쉬프트 연산자는 주로 << (왼쪽 쉬프트)와 >> (오른쪽 쉬프트)로 구분됩니다. 아래에 각각의 예시와 원리를 설명하겠습니다.

1. 왼쪽 쉬프트 연산자 (<<)

왼쪽 쉬프트 연산자는 비트를 왼쪽으로 이동시키며, 오른쪽에는 0이 채워집니다.

예시:

let num = 5; // 이진수로 0101
let result = num << 1; // 왼쪽으로 1비트 이동
console.log(result); // 10 (이진수로 1010)

원리:

  • 5는 이진수로 0101입니다.
  • 왼쪽으로 1비트를 이동시키면 1010이 되며, 이는 10에 해당합니다.
  • 왼쪽 쉬프트는 2의 거듭제곱을 곱하는 효과가 있습니다. 즉, num << nnum * 2^n과 같습니다.

2. 오른쪽 쉬프트 연산자 (>>)

오른쪽 쉬프트 연산자는 비트를 오른쪽으로 이동시키며, 왼쪽에는 부호 비트(최상위 비트)가 채워집니다. 이진수가 음수일 경우, 부호 비트를 유지합니다.

예시:

let num = 10; // 이진수로 1010
let result = num >> 1; // 오른쪽으로 1비트 이동
console.log(result); // 5 (이진수로 0101)

원리:

  • 10은 이진수로 1010입니다.
  • 오른쪽으로 1비트를 이동시키면 0101이 되며, 이는 5에 해당합니다.
  • 오른쪽 쉬프트는 2로 나누는 효과가 있습니다. 즉, num >> nMath.floor(num / 2^n)과 같습니다.

3. 논리적 오른쪽 쉬프트 (>>>)

논리적 오른쪽 쉬프트 연산자는 부호 비트를 무시하고 항상 0을 채웁니다.

예시:

let num = -10; // 이진수로 11111111111111111111111111110110 (32비트)
let result = num >>> 1; // 논리적 오른쪽으로 1비트 이동
console.log(result); // 2147483645

요약

  • 왼쪽 쉬프트 (<<): 값을 왼쪽으로 이동, 2의 거듭제곱 곱하기.
  • 오른쪽 쉬프트 (>>): 값을 오른쪽으로 이동, 2로 나누기, 부호 유지.
  • 논리적 오른쪽 쉬프트 (>>>): 값을 오른쪽으로 이동, 0으로 채우기.

0개의 댓글