2진수 8진수 변환기란?
이 도구는 2진수(밑이 2, 0과 1만 사용)로 표기된 숫자를 8진수(밑이 8, 0~7 사용)로 변환해 줍니다. 8진수는 2진수를 간결하게 나타내는 방법으로, 2진수 세 자리가 정확히 8진수 한 자리에 대응하기 때문입니다. 이 변환기는 결과를 다시 확인할 수 있도록 10진수(밑이 10) 값도 함께 보여줍니다.
사용 방법
입력란에 101110 같은 2진수를 입력하고 실행하세요. 계산기는 모든 문자가 0 또는 1인지 검사한 뒤 8진수 값, 입력한 2진수, 그리고 10진수 값을 반환합니다. 앞자리 0은 자동으로 처리됩니다.
변환 공식 풀이
2³ = 8이므로 2진수 세 자리가 8진수 한 자리를 나타냅니다. 오른쪽 끝에서부터 2진수 문자열을 세 비트씩 묶고, 가장 왼쪽 그룹이 모자라면 0으로 채웁니다. 각 그룹은 \( d = 4 \cdot b_2 + 2 \cdot b_1 + b_0 \) 공식으로 변환하면 0부터 7까지의 값이 나옵니다. 이렇게 얻은 자릿값을 이어 붙이면 8진수가 완성됩니다.
$$\text{Octal} = \left( \text{Binary}_2 \right)_{2 \to 8}$$$$\begin{gathered} \text{Octal}_8 = \sum_{i=0}^{k-1} g_i \cdot 8^{\,i} \\[1.5em] \text{where}\quad \left\{ \begin{aligned} \text{Binary} &= b_{n-1}b_{n-2}\cdots b_1 b_0 \;(\text{base }2) \\ g_i &= 4b_{3i+2} + 2b_{3i+1} + b_{3i} \\ k &= \lceil n/3 \rceil \text{ groups of 3 bits} \end{aligned} \right. \end{gathered}$$
예제로 풀어보기
101110을 예로 들어 보겠습니다. 오른쪽부터 세 자리씩 나누면 101과 110이 됩니다. 첫 번째 그룹은 \( 4 \cdot 1 + 2 \cdot 0 + 1 \cdot 0 = 5 \), 두 번째 그룹은 \( 4 \cdot 1 + 2 \cdot 1 + 1 \cdot 0 = 6 \)입니다. 따라서 8진수 결과는 56입니다. 확인 차원에서 10진수 값을 계산하면 \( 32 + 8 + 4 + 2 = 46 \)이 됩니다.
이진수에서 8진수로 변환 표
이진수에서 8진수로의 변환이 가능한 이유는 \(8 = 2^3\)이기 때문입니다. 각 8진 숫자는 정확히 3개의 이진 숫자 그룹(3비트)에 대응됩니다. 변환하려면 이진수를 오른쪽부터 3비트 단위로 나누고, 필요하면 왼쪽 그룹을 0으로 채운 후, 각 3비트 그룹을 아래의 해당하는 8진 숫자 하나로 바꾸면 됩니다.
| 3비트 이진수(3비트 그룹) | 8진 숫자 | 10진 값 |
|---|---|---|
| 000 | 0 | 0 |
| 001 | 1 | 1 |
| 010 | 2 | 2 |
| 011 | 3 | 3 |
| 100 | 4 | 4 |
| 101 | 5 | 5 |
| 110 | 6 | 6 |
| 111 | 7 | 7 |
각 3비트 그룹은 자리수 값 \(4,\ 2,\ 1\) (즉, \(2^2, 2^1, 2^0\))로 읽습니다. 예를 들어, \(101_2 = 1\times4 + 0\times2 + 1\times1 = 5\)이므로 8진 숫자는 \(5\)입니다.
더 많은 풀이 예제
예제 1: \(11_2\) → 8진수
오른쪽부터 3비트 단위로 나누고 왼쪽을 0으로 채웁니다: \(11 \to 011\).
$$011_2 = 0\times4 + 1\times2 + 1\times1 = 3$$
\(11_2 = \)3\(_8\). 10진수 값은 3입니다.
예제 2: \(11010110_2\) → 8진수
오른쪽부터 3비트 단위로 나누고 왼쪽 그룹은 0으로 채웁니다: \(11\,010\,110 \to 011\,010\,110\).
| 3비트 그룹 | 011 | 010 | 110 |
|---|---|---|---|
| 8진 숫자 | 3 | 2 | 6 |
왼쪽에서 오른쪽으로 숫자를 읽으면 \(11010110_2 = \)326\(_8\). 10진수 값은 214입니다.
예제 3: 더 긴 문자열 \(101110011001_2\)
이것은 12비트이고 이미 3의 배수이므로 패딩이 필요하지 않습니다. 오른쪽부터 나눕니다:
| 3비트 그룹 | 101 | 110 | 011 | 001 |
|---|---|---|---|---|
| 8진 숫자 | 5 | 6 | 3 | 1 |
따라서 \(101110011001_2 = \)5631\(_8\). 10진수로 같은 값을 확인하면 2969입니다.
자주 묻는 질문
왜 세 자리씩 묶나요? \( 8 = 2^3 \)이므로 8진수 한 자리가 정확히 세 비트를 나타냅니다. 덕분에 변환이 깔끔하고 손실 없이 이루어집니다.
자릿수가 3의 배수가 아니면 어떻게 되나요? 왼쪽에 0을 채워 넣습니다. 이렇게 해도 값은 변하지 않습니다.
소수점을 입력할 수 있나요? 이 변환기는 2진수 정수만 처리합니다. 변환하기 전에 소수 부분은 제거해 주세요.