왼쪽 시프트 (<<)

왼쪽 시프트 (<<) 연산자는 첫 번째 피연산자를 명시된 비트 수(32의 나머지)만큼 왼쪽으로 이동합니다. 왼쪽으로 이동된 초과 비트는 폐기됩니다. 오른쪽은 움직인 비트 수 만큼 0비트로 채워집니다.

시도해보기

구문

js
a << b

설명

이 연산자는 첫 번째 피연산자를 명시한 비트 수만큼 왼쪽으로 이동합니다. 왼쪽으로 이동된 초과 비트는 폐기됩니다. 오른쪽은 움직인 비트 수 만큼 0 비트로 채워집니다.

예를 들어, 9 << 2은 36이 도출됩니다.

     9 (10진수): 00000000000000000000000000001001 (2진수)
                  --------------------------------
9 << 2 (10진수): 00000000000000000000000000100100 (2진수) = 36 (10진수)

임의의 숫자 x를 왼쪽으로 y비트 단위로 이동하면 x * 2 ** y입니다. 그래서 예를 들어 9 << 39 * (2 ** 3) = 9 * (8) = 72으로 해석됩니다.

왼쪽 피연산자는 32비트 정수로 변환됩니다. 즉, 부동 소수점 숫자는 잘리고 32비트 경계 내에 있지 않은 숫자는 오버플로우/언더플로우됩니다.

오른쪽 피연산자는 부호 없는 32비트 정수로 변환된 다음 32 나머지 연산의 값을 가져오므로 실제 시프트 오프셋은 항상 0에서 31 사이의 양의 정수입니다. 예를 들어, 100 << 32100 << 0과 동일(이 결과값은 100입니다)합니다. 32 나머지 연산은 0이기 때문입니다.

예제

왼쪽 시프트 사용하기

js
9 << 3; // 72
// 9 * (2 ** 3) = 9 * (8) = 72

명세서

Specification
ECMAScript Language Specification
# sec-left-shift-operator

브라우저 호환성

BCD tables only load in the browser

같이 보기