2진수 10진수 변환기란?
2진수 10진수 변환기는 0과 1만으로 표현된 2진수(base 2)를 우리가 일상에서 쓰는 10진수(base 10)로 바꿔주는 도구입니다. 컴퓨터는 모든 데이터를 2진수로 저장하고 처리하기 때문에, 원시 비트 값이나 메모리 덤프, 네트워크 마스크, 프로그래밍 출력값을 사람이 읽기 쉬운 숫자로 확인하려면 10진수 변환이 꼭 필요합니다.
사용 방법
입력란에 2진수를 입력하세요. 예를 들어 101101처럼요. 그러면 변환기가 10진수 값과 함께 비트 수를 알려줍니다. 0이나 1이 아닌 문자는 자동으로 무시되므로, 1011 0101처럼 띄어쓰기로 구분된 값을 그대로 붙여 넣어도 문제없습니다.
공식 풀이
각 2진수 자리(비트)는 오른쪽 끝부터 0번 자리로 세었을 때, 2의 거듭제곱에 해당하는 자릿값을 갖습니다. 10진수 값은 각 비트에 자릿값을 곱한 뒤 모두 더한 결과입니다.
$$\text{Decimal} = \sum_{i=0}^{n-1} d_i \cdot 2^{\,n-1-i}, \quad d_i \in \text{Binary Number}$$
맨 오른쪽 비트의 자릿값은 \(2^0 = 1\), 그다음은 \(2^1 = 2\), 이어서 \(2^2 = 4\), \(2^3 = 8\) 순으로 커집니다.
예제로 보는 변환
101101을 변환해 봅시다. 오른쪽부터 1, 2, 4, 8, 16, 32의 자릿값을 적용하면 다음과 같습니다.
$$(1 \cdot 32) + (0 \cdot 16) + (1 \cdot 8) + (1 \cdot 4) + (0 \cdot 2) + (1 \cdot 1) = 32 + 8 + 4 + 1 = \mathbf{45}$$ 따라서 2진수 101101은 10진수로 45입니다.
2의 거듭제곱 위치 가중치
이진수에서 각 비트는 2의 거듭제곱과 같은 위치 가중치를 가집니다. 가장 오른쪽 비트(위치 0)의 가중치는 \(2^0 = 1\)이고, 왼쪽으로 갈수록 각 위치의 가중치는 두 배씩 증가합니다. 수동으로 변환하려면 각 비트에 해당 가중치를 곱하고 그 결과를 더합니다:
$$\text{십진수} = \sum_{i=0}^{n-1} d_i \cdot 2^{\,i}$$
여기서 \(i\)는 오른쪽(최하위 비트)부터 0부터 시작하여 위치를 나타냅니다.
| 비트 위치 \(i\) | 거듭제곱 \(2^i\) | 십진수 가중치 |
|---|---|---|
| 0 | \(2^0\) | 1 |
| 1 | \(2^1\) | 2 |
| 2 | \(2^2\) | 4 |
| 3 | \(2^3\) | 8 |
| 4 | \(2^4\) | 16 |
| 5 | \(2^5\) | 32 |
| 6 | \(2^6\) | 64 |
| 7 | \(2^7\) | 128 |
| 8 | \(2^8\) | 256 |
| 9 | \(2^9\) | 512 |
| 10 | \(2^{10}\) | 1,024 |
| 11 | \(2^{11}\) | 2,048 |
| 12 | \(2^{12}\) | 4,096 |
| 13 | \(2^{13}\) | 8,192 |
| 14 | \(2^{14}\) | 16,384 |
| 15 | \(2^{15}\) | 32,768 |
| 16 | \(2^{16}\) | 65,536 |
8비트 바이트의 최댓값은 \(2^8 - 1 = 255\)이고(8개 비트가 모두 1로 설정), 16비트의 최댓값은 \(2^{16} - 1 = 65{,}535\)입니다.
더 많은 풀이 예제
각 예제마다 모든 비트를 위 표의 위치 가중치와 일렬로 정렬하고, 비트가 1인 가중치만 유지한 후, 이들을 더하여 십진수 값을 구합니다.
예제 1: 11111111 (8비트 모두 설정)
모든 비트가 1이므로 위치 7부터 위치 0까지의 8개 가중치를 모두 더합니다:
$$128 + 64 + 32 + 16 + 8 + 4 + 2 + 1$$
합계는 255이며, 이는 8비트 바이트가 보유할 수 있는 가장 큰 값입니다.
예제 2: 10000000
맨 왼쪽 비트(위치 7)만 1이고 다른 모든 위치는 0을 기여합니다:
$$1\cdot128 + 0\cdot64 + 0\cdot32 + 0\cdot16 + 0\cdot8 + 0\cdot4 + 0\cdot2 + 0\cdot1$$
이는 단일 가중치 \(2^7\)로 단순화되며, 128을 얻습니다.
예제 3: 110010101 (9비트)
비트를 위치 가중치와 함께 나타내면, 1비트는 위치 8, 7, 4, 2, 0에 위치합니다:
| 비트 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|---|
| 위치 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 가중치 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
비트가 1인 가중치만 더합니다:
$$256 + 128 + 16 + 4 + 1$$
십진수 결과는 405입니다. 십진수를 이진수로 변환기를 사용하여 역방향을 확인할 수 있습니다. 405를 입력하면 110010101이 반환되는 것을 확인할 수 있습니다.
자주 묻는 질문
8비트로 표현할 수 있는 가장 큰 2진수는? 11111111이며, 10진수로는 255입니다(\(2^8 - 1\)).
앞에 0을 붙여 입력해도 되나요? 네. 앞자리의 0은 값에 영향을 주지 않습니다. 0010은 10과 같고, 둘 다 10진수 2를 나타냅니다.
소수점이 있는 2진수도 변환되나요? 아니요. 이 도구는 정수 형태의 2진수만 변환합니다. 소수점 이하의 값은 지원하지 않습니다.