비트 시프트 계산기
정수에 왼쪽 시프트, 논리적 오른쪽 시프트, 산술적 오른쪽 시프트를 적용하고 결과를 2진수, 10진수, 16진수로 표시합니다.
숫자를 입력하고 시프트 종류와 양을 선택하면 세 가지 수 체계로 된 결과를 즉시 확인할 수 있습니다.
비트 시프트 계산기
정수에 왼쪽 시프트, 논리적 오른쪽 시프트, 산술적 오른쪽 시프트를 적용하고 결과를 2진수, 10진수, 16진수로 표시합니다.
비트를 n칸 왼쪽으로 이동합니다. 숫자에 2ⁿ을 곱하는 것과 같습니다. 오른쪽으로 비워진 비트는 0으로 채워집니다.
비트 시프트란
비트 시프트는 컴퓨터 프로그래밍과 디지털 하드웨어 설계에서 가장 기본적인 연산 중 하나입니다. 비트 시프트는 2진수의 모든 비트를 지정한 만큼 왼쪽이나 오른쪽으로 이동시키고, 한쪽 끝에서 빠져나간 비트는 버리며 반대쪽의 빈 자리는 시프트 종류에 따라 채웁니다.
왼쪽 시프트 연산자(<<)는 모든 비트를 n칸 왼쪽으로 이동합니다. 왼쪽에서 빠져나간 n비트는 버려지고 오른쪽에는 0이 n개 붙습니다. 왼쪽 시프트 n칸은 오버플로가 없는 한 수학적으로 정수를 2ⁿ배 하는 것과 같습니다. 예를 들어 5(2진수 101)를 2칸 왼쪽 시프트하면 20(2진수 10100)이 됩니다. 5 × 4 = 20이기 때문입니다. 컴파일러는 2의 거듭제곱 곱셈을 왼쪽 시프트로 바꾸는 경우가 많습니다. 보통 CPU 한 클록 사이클만으로 실행되기 때문입니다.
논리적 오른쪽 시프트(>>>)는 모든 비트를 n칸 오른쪽으로 이동합니다. 오른쪽에서 빠져나간 n비트는 버려지고 왼쪽에는 0이 n개 붙습니다. 이는 숫자를 부호 없는 값으로 취급하며 2ⁿ으로 나눈 뒤 내림하는 것과 같습니다. 예를 들어 40(2진수 101000)을 3칸 논리적 오른쪽 시프트하면 5(2진수 000101)가 됩니다. Java 같은 언어에서는 부호 없는 정수에 대해 논리적 오른쪽 시프트가 표준 동작이므로 >>>를 명시적으로 사용합니다.
산술적 오른쪽 시프트(>>)도 비트를 n칸 오른쪽으로 이동하지만, 왼쪽에는 0 대신 부호 비트, 즉 최상위 비트를 복제합니다. 양수(부호 비트 0)에서는 0이 채워져 논리 시프트와 동일하게 동작합니다. 음수(2의 보수에서 부호 비트 1)에서는 1이 채워져 부호가 유지됩니다. 예를 들어 −16(32비트 2의 보수: ...11110000)을 2칸 산술적 오른쪽 시프트하면 −4(2진수 ...11111100)가 됩니다. 이렇게 하면 숫자의 부호가 유지되며, 부호 있는 정수를 2ⁿ으로 나누고 음의 무한대로 내림하는 것과 같습니다.
비트 시프트는 성능이 중요한 코드에서 널리 사용됩니다. 해시 함수, 암호 알고리즘, 이미지 처리, 오디오 인코딩, 네트워크 프로토콜 파싱 모두 효율을 위해 시프트를 활용합니다. 하드웨어에서는 시프트 레지스터가 기본 회로이며, 직렬 통신 프로토콜, CRC 생성기, 그리고 난수 생성과 데이터 스크램블링에 쓰이는 선형 피드백 시프트 레지스터(LFSR)의 기반이 됩니다.
비트 시프트 예시
시프트와 2의 거듭제곱 곱셈 또는 나눗셈의 관계를 보여 주는 일반적인 연산입니다.
| 연산 | 2진수 결과 | 10진수 확인 |
|---|---|---|
| 5 << 2 (2칸 왼쪽 시프트) | 10100 | 5 × 4 = 20 ✓. 2칸 왼쪽 시프트는 2² = 4를 곱하는 것과 같습니다. |
| 40 >>> 3 (3칸 논리적 오른쪽 시프트) | 101 | 40 ÷ 8 = 5 ✓. 3칸 논리적 오른쪽 시프트는 2³ = 8로 나누는 것과 같습니다. |
| −16 >> 2 (2칸 산술적 오른쪽 시프트) | 11111100 (−4) | −16 ÷ 4 = −4 ✓. 산술 시프트는 부호 비트를 유지하므로 결과가 음수로 남습니다. |
| 2진수 1010 << 1 (1칸 왼쪽 시프트) | 10100 | 2진수 1010(10진수 10)은 10100(10진수 20)이 됩니다. 1칸 왼쪽 시프트하면 값이 두 배가 됩니다. |
비트 시프트 계산기 사용 방법
- 입력 형식을 선택합니다. 10진수 정수(음수 가능)를 입력하려면 '10진수'를, 이진 문자열을 입력하려면 '2진수'를 선택하세요.
- 입력 칸에 숫자를 넣습니다. 이진 입력의 경우 0과 1만 사용하세요.
- 시프트 종류를 선택합니다. '왼쪽 시프트 (<<)'는 2의 거듭제곱 곱셈, '논리적 오른쪽 시프트 (>>>)'는 부호 없는 나눗셈, '산술적 오른쪽 시프트 (>>)'는 부호 있는 나눗셈에 사용합니다.
- 시프트 양, 즉 몇 비트 이동할지(0~31)를 입력합니다.
- '시프트 계산'을 클릭합니다. 결과는 2진수, 10진수, 16진수로 표시됩니다.
비트 시프트 계산기 FAQ
논리적 오른쪽 시프트와 산술적 오른쪽 시프트의 차이는 무엇인가요?
논리적 오른쪽 시프트는 비워진 상위 비트를 항상 0으로 채워서 피연산자를 부호 없는 값으로 취급합니다. 산술적 오른쪽 시프트는 비워진 상위 비트를 부호 비트의 복사본으로 채웁니다. 양수는 0, 2의 보수에서 음수는 1입니다. 음이 아닌 수에서는 두 연산의 결과가 같고, 피연산자가 음수일 때만 다릅니다. C/C++에서는 부호 있는 타입에 대한 >> 연산자가 대부분의 아키텍처에서 산술적 오른쪽 시프트를 수행합니다.
왼쪽 시프트가 왜 2의 거듭제곱 곱셈과 같나요?
2진수에서는 각 비트 위치가 2의 거듭제곱을 나타냅니다. 모든 비트를 한 칸 왼쪽으로 이동하면 각 비트의 값이 두 배가 되므로 전체 값도 두 배가 됩니다. n칸 왼쪽 시프트는 2ⁿ을 곱하는 것과 같습니다. 예를 들어 6(110₂)을 3칸 왼쪽 시프트하면 110000₂ = 48이 되고, 6 × 8 = 48입니다. 컴파일러는 곱셈 인자가 2의 거듭제곱 상수일 때 더 비싼 곱셈 명령을 더 저렴한 시프트 명령으로 바꿉니다.
비트가 끝을 넘어가면 어떻게 되나요?
레지스터 폭을 벗어난 비트는 그냥 버려집니다. 왼쪽 시프트에서는 레지스터 폭을 넘겨 넘친 상위 비트가 사라지므로, 결과가 목표 타입에 들어가지 않으면 예상치 못한 값이 나올 수 있습니다. 오른쪽 시프트에서는 0보다 아래로 내려간 하위 비트가 버려지며, 이는 0 쪽으로의 절단(논리 시프트) 또는 음의 무한대로의 내림(산술 시프트)에 해당합니다.
비트 시프트로 나눗셈을 할 수 있나요?
네. n칸 논리적 오른쪽 시프트는 부호 없는 정수를 2ⁿ으로 나누는 것과 같습니다(소수 부분은 버림). n칸 산술적 오른쪽 시프트는 부호 있는 정수를 2ⁿ으로 나누고 음의 무한대로 내립니다. 이는 음수에 대한 C의 정수 나눗셈과는 다릅니다. 예를 들어 −7 >> 1 = −4(산술 시프트)이지만, −7 / 2 = −3(C는 0 쪽으로 절단)입니다. 필요에 따라 내림 또는 절단을 선택하세요.
최대 시프트 양은 얼마인가요?
32비트 정수의 경우 32비트 이상 시프트하면 C/C++에서 정의되지 않은 동작이며, 하드웨어에서는 보통 32로 나눈 나머지처럼 처리됩니다(n칸 시프트는 n mod 32칸 시프트와 같음). 이 계산기는 0에서 31비트까지를 지원하여 32비트 범위를 모두 커버합니다. 더 큰 시프트가 필요하면 다중 워드 연산이나 64비트 정수 형식이 필요합니다.
실제 프로그램에서 비트 시프트는 어떻게 사용되나요?
비트 시프트는 다양한 곳에서 사용됩니다. 정수 안의 비트 필드 패킹/언패킹(네트워크 패킷 헤더, 픽셀 색상 채널), 2의 거듭제곱으로 빠르게 곱셈·나눗셈, 해시 값 계산, AES와 SHA 같은 암호 원시 구현, 더 큰 워드에서 니블과 바이트 추출, 비트 마스크 계산 등이 대표적입니다. 특정 비트를 분리하거나 설정해야 할 때는 시프트와 비트 AND/OR가 가장 적합한 도구입니다.
관련 도구
합차 삼각 항등식 계산기
합차 항등식으로 sin, cos, tan 값을 계산합니다. 도와 라디안을 지원하며 단계별 공식을 표시합니다.
복소수 근 계산기: 드무아브르 정리로 n제곱근
드무아브르 정리로 임의의 복소수의 모든 n제곱근을 구하고, 극형식·주근·켤레근을 한 번에 보여줍니다.
구의 방정식 계산기
중심 좌표와 반지름으로 3D 구의 표준형 방정식을 만들고 부호 처리와 전개형을 정확히 표시합니다.
유한소수 계산기 - 분수 판별
분수가 유한소수인지 순환소수인지 판별합니다. 분모의 소인수분해와 기약분수를 즉시 보여줍니다.
조건수 계산기 - 행렬 조건과 안정성
2×2 또는 3×3 행렬의 조건수를 1-노름, 무한노름, Frobenius 노름으로 계산해 수치 안정성을 즉시 확인합니다.
행렬 대각화 계산기
2×2 및 3×3 행렬을 온라인으로 대각화해 고유값, 고유벡터, 변환 행렬 P와 대각 행렬 D를 단계별로 보여줍니다.
수직선 부등식 그래프 계산기
단순·복합 부등식을 수직선에 즉시 표시합니다. 빈 원/채운 원, 음영 방향, 구간 표기를 모두 확인하세요.
촐레스키 분해 계산기
대칭 양의 정부호 행렬의 Cholesky 분해 A = LLᵀ를 계산합니다. 2×2, 3×3, 4×4 입력을 지원하며 선형대수와 통계에 유용합니다.