진수 변환기
2진수·10진수·16진수·8진수와 2~36진법을 상호 변환. 아주 큰 정수도 오차 없이, 순환소수는 괄호로 표시하고 8~128비트 2의 보수를 지원합니다. 잘못 입력한 자리를 알려 줍니다.
- 브라우저에서 처리
- 데이터가 브라우저 밖으로 나가지 않습니다
- 무료 · 회원가입 불필요
WeChat으로 스캔하여 공유
예시·자세한 설명·자주 묻는 질문 실제 출력이 있는 예시, 다른 도구와의 차이, 자주 묻는 질문.
예시 1: C의 printf가 찍은 16진수를 음수로 되돌리기
C에서 int x = -10;을 printf("%x", (unsigned)x)로 출력하면 int가 32비트인 환경에서 fffffff6이 나옵니다. 로그에서 이 값을 봤다면 16진수를 고르고 2의 보수를 32비트로 정한 뒤 “입력을 부호 있는 수로 읽기”를 체크합니다.
10진수 줄에 -10이 나오고, 체크하지 않으면 같은 값을 4294967286으로 읽습니다. 반대로 -10을 입력하면 32비트 16진수 줄에 FFFFFFF6, 8비트로 바꾸면 F6이 나옵니다.
예시 2: 64비트 최댓값이 바뀌지 않는지 확인하기
JavaScript의 Number는 2^53 − 1까지만 정수를 정확히 담습니다(MDN). 이 도구는 BigInt로 한 자리씩 읽기 때문에 16진수 FFFFFFFFFFFFFFFF(부호 없는 64비트 최댓값)가 정확히 다음 값이 됩니다.
18446744073709551615. Python의 int()는 기본 설정에서 10진수 4,300자리를 넘는 문자열을 거부합니다(Python 문서). 이 도구는 20,000자리까지 변환합니다.
예시 3: 띄어 쓴 2진수 그대로 붙여 넣기
교재나 데이터시트는 2진수를 4자리씩 띄어 씁니다. 1101 0110을 그대로 붙여 넣으면 공백을 구분 기호로 보고 10진수 214, 16진수 D6을 냅니다. 밑줄(1101_0110)과 C++14의 작은따옴표(1101'0110)도 같은 방식으로 처리합니다.
예시 4: 소수 변환
10진수 0.75는 2진수 0.11, 16진수 0.C로 딱 끝납니다. 0.1은 2진수 0.0(0011), 16진수 0.1(9)처럼 괄호 안이 끝없이 반복됩니다. JavaScript의 수는 IEEE 754 배정밀도라서 0.1을 근삿값으로 저장하고, 그래서 0.1 + 0.2가 0.3이 되지 않습니다. 이 도구는 분수로 정확히 계산하며 반올림하지 않습니다.
입력 규칙과 오류 메시지
| 입력 | 읽는 방법 |
|---|---|
1111_0000, 1111 0000 | 숫자 사이의 구분 기호는 무시 |
1,234,567 | 10진수의 세 자리 구분으로만 읽음 |
0x1F, 0o17, 0b101 | 입력 진법과 맞는 접두사는 떼어 냄. 10진수를 고른 상태에서는 접두사로 진법을 판단 |
255, FF | 전각 문자를 반각으로 읽음 |
#FF5733 | 16진수에서 색상 코드로 읽음 |
그 밖의 문자가 있으면 변환을 멈추고 위치를 알려 줍니다. 10진수에서 1F를 입력하면 “2번째 문자 “F”는 10진수 숫자가 아닙니다(사용 가능: 0–9). 16진수라면 16진법을 고르거나 앞에 0x를 붙이세요.”라고 표시합니다.
다른 도구와의 차이
Bing에서 “진수 변환” 상위에 나오는 calculkorea 진법 변환기에 2026-10-01 같은 값을 넣었습니다. 10진수 9007199254740993은 10진수 칸에 9,007,199,254,740,992로, 2진수 칸에는 마지막 1이 빠진 값으로 나왔습니다. 16진수 FFFFFFFFFFFFFFFF는 18,446,744,073,709,552,000이 되었고 16진수 칸은 0x10000000000000000으로 바뀌었습니다. 음수 -10, 소수 0.1, 전각 255, 1111_0000, 0x1F는 “입력한 진법에 맞지 않는 문자가 포함되어 있습니다”로 거부되었고 어느 문자인지는 나오지 않았습니다. 이 도구는 앞의 두 값을 정확히 변환하고, 나머지도 모두 변환합니다.
제한 사항
- 2~36진법(숫자 0–9와 영문 A–Z)을 지원하며 Python
int(), JavaScripttoString()과 같은 범위입니다. 58진법, 62진법, Base64 문자 표는 지원하지 않습니다. - 한 수에 20,000자리까지.
0.0(0011)의 괄호는 읽기용 표기라서 입력란에 다시 붙여 넣을 수 없습니다.- 부동소수점 수의 IEEE 754 비트 구성(부호·지수·가수)은 보여 주지 않습니다.
- 2의 보수는 정수에만 쓸 수 있고, 비트 수는 8·16·32·64·128 중에서 고릅니다.
문자열을 2진수로 바꾸려면 이진수 변환기 (텍스트 ↔ 2진수)나 ASCII 변환기를, 파일 권한의 8진수는 Chmod 계산기를, 서브넷 마스크의 2진수 표기는 IP 서브넷 계산기를 쓰세요.
FAQ
2진수를 10진수로 바꾸는 방법은?
각 자리의 숫자에 자리값(오른쪽부터 1, 2, 4, 8, 16…)을 곱해 더합니다. 11010110은 128 + 64 + 16 + 4 + 2 = 214입니다. 도구 아래의 "계산 과정 보기"를 열면 입력한 수의 전개식과 반대 방향의 나눗셈 과정을 볼 수 있습니다.
0.1이 2진수에서 0.0(0011)이 되는 이유는?
0.1은 1/10이고 분모에 5가 들어 있습니다. 2진수로 끝나는 소수는 분모가 2의 거듭제곱인 분수뿐이라 0.1은 끝없이 반복됩니다. 괄호 안이 반복되는 부분이며, 0.0(0011)은 0.000110011…을 뜻합니다.
음수의 2의 보수는 어떻게 구하나요?
음수(예: -10)를 입력하고 "2의 보수"에서 비트 수를 고릅니다. 8비트는 11110110(F6), 32비트는 FFFFFFF6입니다. 반대로 F6을 입력하고 8비트를 고른 뒤 "입력을 부호 있는 수로 읽기"를 체크하면 -10이 됩니다.
몇 자리까지 변환할 수 있나요?
한 수에 20,000자리까지입니다. 정수는 BigInt로 계산하므로 오차가 없습니다. 소수 부분이 64자리 안에서 끝나지도 반복되지도 않으면 64자리에서 잘라 …를 붙입니다.
큰 수에서 다른 변환기와 결과가 다른 이유는?
많은 변환기는 값을 JavaScript Number로 저장합니다. Number가 정확히 나타낼 수 있는 정수는 2^53 − 1(9,007,199,254,740,991)까지이고, 그보다 큰 수는 끝자리가 바뀝니다. 이 도구에 9007199254740993을 넣으면 16진수 결과는 20000000000001이지만, Number로 계산하는 도구는 20000000000000을 냅니다.
입력한 숫자가 전송되거나 저장되나요?
전송되지 않습니다. 변환은 브라우저 탭 안에서 이루어집니다. 브라우저의 localStorage에는 설정(입력 진법, 그 밖의 진법, 자릿수 묶기, 접두사, 소문자, 2의 보수 비트 너비, 부호 있는 수로 읽기, 계산 과정의 진법)만 저장하고 숫자 자체는 저장하지 않습니다. 페이지 통계는 도구 이름과 동작만 기록합니다. 입력이 1.5초 멈추면 convert를 한 번, 복사하면 copy를 기록하며 숫자는 포함하지 않습니다.