진법 변환기 사용법
- 현재 가진 부호 없는 정수를 입력하세요. 원래 진법에서 2·8·10·16진법 중 해당하는 것을 선택합니다.
- 정수를 수정한 뒤 숫자 변환을 누르면 적용됩니다. 한 번 변환한 후에는 어느 진법을 바꾸든 추가 확인 없이 읽기 전용 결과가 바로 갱신됩니다. JavaScript Number의 안전 범위를 넘어도 모든 정수 자릿수를 보존합니다.
- 변환을 마친 뒤 진법 바꾸기를 누르면 방향을 뒤집습니다. 정확한 결과가 다음 입력이 되어 긴 정수를 다시 입력하지 않고 왕복 변환을 확인할 수 있습니다.
- 결과 복사는 두 값과 각각의 진법이 담긴 등식을 일반 텍스트로 복사합니다. 메모, 소스 주석, 학습지나 지원 문의에 붙여 넣을 수 있습니다.
자릿값 기수법의 원리
진법의 밑은 사용할 수 있는 숫자 값의 개수입니다. 2진법은 0과 1, 8진법은 0–7, 10진법은 0–9, 16진법은 여기에 10–15를 뜻하는 A–F를 더합니다. 각 자리의 값은 그 숫자에 밑의 위치별 거듭제곱을 곱한 것이며 오른쪽에서 0부터 셉니다. 예를 들어 16진수 2F는 2 × 16¹ + 15 × 16⁰으로 10진수 47입니다.
같은 정수를 다른 진법으로 나타내기 위해 정확한 정수 값에서 결과 진법의 각 자리를 구합니다. 2·8·16진법은 특히 잘 대응합니다. 8진수 한 자리는 2진수 세 자리, 16진수 한 자리는 2진수 네 자리입니다. 따라서 16진법은 부호 없는 크기를 유지하면서 긴 비트 패턴을 간결하게 적는 데 유용합니다.
계산에는 JavaScript Number 대신 BigInt를 사용합니다. Number는 9,007,199,254,740,991을 넘으면 이웃한 모든 정수를 구분할 수 없지만 BigInt는 페이지의 입력 제한 안에서 큰 정수 연산을 정확하게 유지합니다. 각 유효한 입력 자릿수를 읽고 부동소수점 연산 없이 결과를 만듭니다.
앞자리 0은 정수 값을 바꾸지 않으므로 0의 결과는 0 하나이며 나머지는 0이 아닌 숫자로 시작합니다. 16진수 문자는 대소문자 모두 입력할 수 있고 결과는 대문자로 표시합니다. 이는 표기만 바꾸며 값은 그대로입니다.
진법 변환 예제
예제 1: 10진수 255를 16진수로
255를 입력하고 원래 진법을 10진법, 결과를 16진법으로 선택하세요. 255 = 15 × 16 + 15이므로 결과는 FF입니다. F 하나가 15를 나타냅니다. 진법을 바꾸면 FF가 정확히 255로 돌아옵니다.
예제 2: Number의 안전 범위를 넘는 큰 2진수
2진수 100000000000000000000000000000000000000000000000000001을 입력해 10진수로 변환하세요. 결과는 9,007,199,254,740,993이며 구분자 없이 9007199254740993으로 표시됩니다. Number의 안전 정수 한계보다 2 큰 값도 정확히 보존하며 원래 2진수로 되돌릴 수 있습니다.
진법 변환의 활용
- 2진 플래그, 레지스터 값, 메모리 주소, 색상 채널 숫자나 프로토콜 필드를 문서와 비교하기 쉬운 형태로 바꾸세요.
- 반복 나눗셈, 자릿값 전개, 2·8·10·16진법 사이의 변환을 다루는 컴퓨터 과학 연습 문제를 확인하세요.
- 10진수 자료의 정확한 식별자나 큰 정수를 부동소수점 반올림 없이 16진수·2진수로 옮기세요.
- 방향을 뒤집어 정규화된 원래 값이 돌아오는지 확인하면 복사한 값을 검증할 수 있습니다.
입력 규칙과 제한
- 부호 없는 정수만 지원합니다. 음수·양수 부호, 소수점, 분수, 지수와 2의 보수 해석은 지원하지 않습니다.
- 숫자만 입력하세요. 원래 진법 선택이 유일하고 명확한 해석 기준이 되도록 0b·0o·0x 접두사, 공백, 쉼표와 밑줄 구분자는 허용하지 않습니다.
- 2진법은 0–1, 8진법은 0–7, 10진법은 0–9, 16진법은 0–9와 A–F만 허용합니다. 잘못된 문자를 몰래 제거하지 않고 오류를 안내합니다.
- 입력은 4,096자로 제한됩니다. 이 길이의 2진수는 약 1,233자리 10진수, 16진수는 최대 16,384자리 2진수가 될 수 있습니다. 긴 결과는 결과 칸 안에서 스크롤할 수 있습니다.
- 산술·비트 연산, 문자 인코딩, 부호 있는 고정 폭 변환, 부동소수점 해석과 소수 부분 진법 변환은 지원하지 않습니다. 부호 없는 정수 외의 표현 규칙이 필요하면 해당 작업용 도구를 사용하세요.
지원하는 모든 진법 변환
| 변환 방향 | 방법 | 정확한 예시 |
|---|---|---|
| 2진법 → 8진법 (bin → oct) | 입력 진법 2; 출력 진법 8. | 1010102 = 528 |
| 2진법 → 10진법 (bin → dec) | 입력 진법 2; 출력 진법 10. | 1010102 = 4210 |
| 2진법 → 16진법 (bin → hex) | 입력 진법 2; 출력 진법 16. | 1010102 = 2A16 |
| 8진법 → 2진법 (oct → bin) | 입력 진법 8; 출력 진법 2. | 528 = 1010102 |
| 8진법 → 10진법 (oct → dec) | 입력 진법 8; 출력 진법 10. | 528 = 4210 |
| 8진법 → 16진법 (oct → hex) | 입력 진법 8; 출력 진법 16. | 528 = 2A16 |
| 10진법 → 2진법 (dec → bin) | 입력 진법 10; 출력 진법 2. | 4210 = 1010102 |
| 10진법 → 8진법 (dec → oct) | 입력 진법 10; 출력 진법 8. | 4210 = 528 |
| 10진법 → 16진법 (dec → hex) | 입력 진법 10; 출력 진법 16. | 4210 = 2A16 |
| 16진법 → 2진법 (hex → bin) | 입력 진법 16; 출력 진법 2. | 2A16 = 1010102 |
| 16진법 → 8진법 (hex → oct) | 입력 진법 16; 출력 진법 8. | 2A16 = 528 |
| 16진법 → 10진법 (hex → dec) | 입력 진법 16; 출력 진법 10. | 2A16 = 4210 |
자주 묻는 질문
16진수 FF가 왜 10진수 255인가요?
왼쪽 F는 16이 15개, 오른쪽 F는 1이 15개라는 뜻입니다. 15 × 16 + 15 = 255이며 2진수로는 11111111입니다.
16진수 소문자를 입력해도 되나요?
네. a–f를 입력할 수 있으며 화면과 복사 결과에는 대문자로 표시됩니다.
앞자리 0이 사라진 이유는 무엇인가요?
앞자리 0은 부호 없는 정수 값을 바꾸지 않아 정규화된 표기를 반환합니다. 프로토콜이나 파일 형식에 고정 길이 채움이 필요하면 해당 규격을 확인한 뒤 0을 추가하세요.
아주 큰 정수는 반올림되나요?
아니요. 유효한 입력은 BigInt로 읽고 변환하므로 4,096자 제한 안에서 모든 정수 자릿수를 보존합니다. 부동소수점 Number 변환을 사용하지 않습니다.
16진수 입력을 텍스트나 색상으로 해석하나요?
아니요. 부호 없는 정수로만 처리합니다. 바이트를 문자로 해석하거나 RGB 채널을 나누거나 메모리 폭을 추정하거나 부호 있는 2의 보수 규칙을 적용하지 않습니다.