진법 변환기
2·8·10·16진수 및 임의 진법을 큰 수까지 변환합니다.
| 2진수 (binary) | - |
|---|---|
| 8진수 (octal) | - |
| 10진수 (decimal) | - |
| 16진수 (hex) | - |
코드를 보다가 0xFF를 만났는데 이게 몇인지 바로 떠오르지 않을 때가 있습니다. 색상 코드, 파일 권한, 비트 플래그처럼 개발 현장에서는 10진수가 아닌 표기가 자주 등장하죠.
이 도구는 값 하나와 그 값의 진법만 지정하면 2진수·8진수·10진수·16진수 결과를 한 화면에 함께 보여줍니다. 손으로 나누어 계산할 필요 없이 입력하는 즉시 네 가지가 동시에 갱신됩니다.
어떻게 계산되나요
입력 방법
화면에는 항목이 두 개(경우에 따라 세 개) 있습니다.
| 항목 | 설명 |
|---|---|
| 입력 값 | 변환할 숫자. 16진법이라면 ff처럼 알파벳도 사용합니다 |
| 입력 진법 | 방금 넣은 값이 어떤 진법인지 선택합니다 (10·2·8·16진수) |
| 기타 진법(2~36) | 입력 진법에서 '기타(직접)'를 고르면 나타나며, 2부터 36까지 지정할 수 있습니다 |
값을 입력하는 즉시 아래에 2진수·8진수·10진수·16진수 결과가 표시됩니다. 16진수 결과는 대문자(A~F)로 나옵니다.
변환이 이루어지는 순서
진법 변환은 두 단계로 나뉩니다. 먼저 입력한 값을 자리별 가중치로 풀어 하나의 수량으로 만들고, 그 수량을 목표 진법으로 다시 나누어 표기합니다.
예를 들어 16진수 2AF는 각 자리를 이렇게 해석합니다.
- 2 × 16² = 512
- A(=10) × 16¹ = 160
- F(=15) × 16⁰ = 15
- 합계 687
이 687을 다시 2로 계속 나누면 2진수 1010101111, 8로 나누면 8진수 1257이 됩니다. 어떤 진법에서 출발하든 중간에 한 번 공통된 값으로 모였다가 흩어지는 구조입니다.
큰 수와 문자 표기
자릿수가 매우 긴 값도 정수 연산으로 처리하기 때문에 일반적인 실수 계산에서 생기는 끝자리 오차가 나지 않습니다. 2진법을 넘어서는 진법에서는 10 이상의 값을 알파벳으로 적으며, 10=A, 11=B … 35=Z 순서라서 36진법까지 표현됩니다.
주의할 점
- 정수만 다룹니다. 소수점이나 음수 부호를 넣으면 유효하지 않은 값으로 처리됩니다.
- 해당 진법에 없는 문자를 넣으면(예: 8진법에
9) 오류 메시지가 표시되고 결과가 비워집니다. 진법 선택이 맞는지 먼저 확인해 보세요. - 대문자·소문자는 구분하지 않으므로
ff와FF는 같은 값입니다.
용어 정리
- 진법(base)
- 한 자리에 몇 개의 기호를 쓰는지를 정한 수 표기 방식입니다. 10진법은 0~9 열 개, 16진법은 0~9와 A~F 열여섯 개를 씁니다.
- 2진수(binary)
- 0과 1만 사용하는 표기로, 컴퓨터가 실제로 값을 저장하는 방식과 가장 가깝습니다.
- 8진수(octal)
- 0~7을 쓰는 표기. 리눅스 파일 권한 `755`처럼 세 비트씩 묶어 읽을 때 쓰입니다.
- 16진수(hex)
- 0~9와 A~F를 쓰는 표기. 네 비트를 한 글자로 줄여 쓸 수 있어 색상 코드(#FF8800)나 메모리 주소에 자주 등장합니다.
- 자리 가중치
- 각 자리가 '진법의 거듭제곱'만큼의 값을 가진다는 규칙입니다. 16진수 세 번째 자리는 16²=256의 무게를 갖습니다.
- 36진법
- 숫자 10개와 알파벳 26개를 모두 써서 만들 수 있는 가장 큰 진법이라 이 도구의 상한이 36입니다.
자주 묻는 질문
16진수 ff는 왜 255인가요?
f는 15를 뜻하므로 앞자리 f는 15×16=240, 뒷자리 f는 15×1=15가 됩니다. 두 값을 더하면 255입니다. 1바이트(8비트)가 표현할 수 있는 가장 큰 값이라 프로그래밍에서 자주 보입니다.
음수나 소수도 변환할 수 있나요?
아니요. 이 도구는 0 이상의 정수만 처리합니다. 부호(-)나 소수점(.)을 넣으면 유효하지 않은 값이라는 메시지가 나옵니다. 필요하다면 정수 부분만 먼저 변환해 보세요.
2~36진법의 '기타' 항목은 언제 쓰나요?
3진법·5진법·32진법처럼 기본 목록에 없는 진법을 다룰 때 사용합니다. 입력 진법에서 '기타(직접)'를 고르면 2부터 36 사이의 값을 직접 적을 수 있습니다.
아주 큰 수를 넣어도 정확한가요?
네. 정수 전용 연산으로 처리해 자릿수가 길어져도 끝자리가 반올림되지 않습니다. 다만 결과 문자열이 매우 길어질 수 있습니다.
결과가 '-'로만 나옵니다.
입력한 문자가 선택한 진법에 존재하지 않는 경우입니다. 예를 들어 입력 진법을 2진수로 두고 `123`을 넣으면 2진법에는 2와 3이 없으므로 결과가 비워집니다. 진법 선택을 다시 확인해 보세요.
어떤 문제가 있었는지 알려주시면 빠르게 고치겠습니다. (회신이 필요하면 이메일을 남겨주세요)