MCP로 연결 →

계산 입력

공식

광고

결과

시프트 결과
64
10진수 값
입력 정수 16
시프트 비트 수 2

비트 시프트란?

비트 시프트는 정수의 2진수 자릿값을 원하는 칸수만큼 왼쪽 또는 오른쪽으로 이동시키는 연산입니다. 시프트 연산은 프로그래밍, 저수준 최적화, 그래픽, 해싱, 임베디드 시스템 등에서 자주 쓰이는 기본 연산입니다. 왼쪽 시프트(n << k)는 비트를 최상위(MSB) 방향으로 밀어내고 빈자리를 0으로 채우며, 오른쪽 시프트(n >> k)는 비트를 최하위(LSB) 방향으로 이동시킵니다.

8개의 2진수 칸이 한 줄로 있고 화살표가 비트의 좌우 이동을 표시
비트 시프트는 모든 비트를 정해진 수만큼 왼쪽이나 오른쪽으로 옮깁니다.

계산기 사용법

정수 n과 시프트할 비트 수 k를 입력한 뒤 이동 방향을 선택하세요. 계산기가 결과를 10진수 값으로 보여줍니다. 이 도구는 대부분의 프로그래밍 언어와 동일하게 64비트 부호 있는 정수(signed integer) 연산을 사용합니다.

공식 이해하기

한 칸 왼쪽으로 시프트할 때마다 값은 2배가 되므로, k칸 왼쪽 시프트는 \(2^{k}\)를 곱하는 것과 같습니다:

$$\text{Result} = \text{Number (n)} \ll \text{Shift (k)} = n \times 2^{k}$$

반대로 한 칸 오른쪽으로 시프트할 때마다 값은 절반이 되며 소수점 이하는 버려지므로, k칸 오른쪽 시프트는 \(2^{k}\)로 정수 나눗셈을 한 것과 같습니다:

$$\text{Result} = \text{Number (n)} \gg \text{Shift (k)} = \left\lfloor \frac{n}{2^{k}} \right\rfloor$$

그래서 하드웨어에서 시프트 연산이 곱셈이나 나눗셈보다 훨씬 빠른 것입니다.

광고
한 자리 왼쪽 시프트로 비트가 왼쪽으로 이동하고 오른쪽에 0이 채워짐; 값이 두 배가 됨
한 자리 왼쪽 시프트는 값을 두 배로, 오른쪽 시프트는 절반으로 만듭니다.

예제로 보기

n = 16을 k = 2만큼 왼쪽으로 시프트해 보겠습니다. 16을 2진수로 쓰면 10000입니다. 왼쪽으로 두 칸 밀면 끝에 0이 두 개 붙어 1000000, 즉 64가 됩니다. 수식으로 보면 $$16 \times 2^{2} = 16 \times 4 = 64$$ 이죠. 반대로 \(64 \gg 2 = \left\lfloor 64 / 4 \right\rfloor = 16\)이 되어 원래 값으로 돌아옵니다.

광고

2의 거듭제곱 참고표

좌측 시프트 \(k\)는 숫자에 \(2^k\)를 곱합니다. 우측 시프트 \(k\)는 \(2^k\)로 나눕니다 (정수의 경우 나머지는 버립니다). 주어진 시프트 양의 곱수 또는 제수를 즉시 읽기 위해 이 표를 사용하세요.

시프트 \(k\) \(2^k\) (십진법) \(\ll k\) / \(\gg k\)의 의미
0 1 변화 없음
1 2 \(\times 2\) / \(\div 2\)
2 4 \(\times 4\) / \(\div 4\)
3 8 \(\times 8\) / \(\div 8\)
4 16 \(\times 16\)
5 32 \(\times 32\)
6 64 \(\times 64\)
7 128 \(\times 128\)
8 256 \(\times 256\) (1 바이트)
9 512 \(\times 512\)
10 1,024 \(\times 1024\) (1 KiB)
11 2,048 \(\times 2048\)
12 4,096 \(\times 4096\)
13 8,192 \(\times 8192\)
14 16,384 \(\times 16384\)
15 32,768 \(\times 32768\)
16 65,536 \(\times 65536\) (2 바이트)
17 131,072
18 262,144
19 524,288
20 1,048,576 \(\times\) 1 MiB
32 4,294,967,296 32비트 경계
63 9,223,372,036,854,775,808 64비트 부호 있는 정수의 최상위 비트

자주 묻는 질문

왼쪽 시프트를 하면 데이터가 사라질 수 있나요? 네. 정수의 비트 폭을 넘어간 비트는 버려집니다(오버플로). 다만 64비트 범위 안에서는 이 계산기가 값을 그대로 보존합니다.

음수를 오른쪽 시프트하면 어떻게 되나요? 이 계산기는 산술(부호 있는) 오른쪽 시프트를 사용합니다. 따라서 부호 비트가 유지되어 음수는 그대로 음수로 남습니다.

곱셈·나눗셈 대신 시프트를 쓰는 이유는? 비트 시프트는 대부분의 CPU에서 한 사이클 만에 처리되는 연산이라, 2의 거듭제곱으로 곱하거나 나눌 때 매우 빠른 방법이 됩니다.

최종 업데이트: