수학

진법 변환기

2진수, 8진수, 10진수, 16진수 사이에서 숫자를 즉시 변환하고, 각 자릿수가 전체 값에 어떻게 기여하는지 실시간 자릿값 분해로 보여줍니다.

이 계산기가 도움이 되었나요?

진법 변환기이란?

진법 변환기는 하나의 위치 기수법으로 표현된 숫자를 다른 진법으로 변환합니다 — 가장 흔한 것은 2진수(2진법), 8진수(8진법), 10진수(10진법), 16진수(16진법) 사이의 변환입니다. 모든 진법 체계는 같은 방식으로 작동합니다: 각 자릿수의 값은 그 위치에 따라 결정되며, 자릿수에 그 위치에 해당하는 진법의 거듭제곱을 곱한 값입니다. 컴퓨터는 모든 것을 2진수로 저장하고 처리하지만, 2진수 문자열은 길고 읽기 어려워지므로 프로그래머는 16진수를 간결한 표기법으로 사용하며, 8진수는 오래된 유닉스 파일 권한 표기에서 볼 수 있습니다. 이 계산기는 입력한 값을 네 가지 진법 모두로 즉시 변환하고, 각 자릿수에 그 자릿값 가중치를 곱한 자릿값 분해를 보여줍니다. 그래서 단순히 답만 얻는 것이 아니라 변환이 실제로 어떻게 이루어지는지 정확히 확인할 수 있습니다.

이 계산기를 사용해야 할 때

  • 16진수 출력이 관례인 소프트웨어 개발에서 메모리 주소와 바이트 값을 디버깅할 때.
  • 웹 디자인과 CSS 스타일링을 위해 16진수 색상 코드를 RGB 값으로 변환할 때.
  • 점으로 구분된 2진수나 16진수로 작성되는 IP 서브넷 마스크와 네트워크 주소 지정을 이해할 때.
  • 8진수 표기를 사용하는 Unix/Linux 파일 권한 코드(예: chmod 755)를 읽을 때.
  • 숫자 체계와 데이터 표현을 다루는 컴퓨터 과학 교과 과정과 시험.
  • 비트 연산을 2진수나 16진수로 표현하는 경쟁 프로그래밍과 저수준 코딩.

단계:

  1. 변환하려는 숫자를 입력하세요.
  2. 그 숫자가 현재 어떤 진법으로 쓰여 있는지 선택하세요 (2진수, 8진수, 10진수, 또는 16진수).
  3. 네 가지 진법으로 변환된 값을 즉시 확인하세요.
  4. 자릿값 분해를 펼쳐서 각 자릿수가 전체 값에 어떻게 기여하는지 확인하세요.

공식

값 = Σ (자릿수 × 진법^위치) 위치는 가장 오른쪽 자릿수를 0으로 하여 셉니다. 예시 (2진수 1011): 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 11 (10진수)

사용 사례

  • 소프트웨어 개발에서 메모리 주소와 바이트 값 디버깅
  • 웹 디자인에서 색상 코드를 16진수와 10진수 사이로 변환
  • 컴퓨터 과학 수업에서 2진수와 16진수를 다루는 작업
  • 8진수로 작성된 유닉스/리눅스 파일 권한 코드 읽기
  • IP 서브넷 마스크와 네트워크 주소 지정 이해

주요 이점

  • 2진수, 8진수, 10진수, 16진수를 동시에 즉시 변환
  • 시각적인 자릿값 분해로 계산 과정을 정확히 보여줌
  • 선택한 진법에서 유효하지 않은 자릿수를 즉시 감지
  • 수동으로 긴 나눗셈이나 반복적인 나머지 계산이 필요 없음

전문가 팁

  • 16진수를 읽을 때 각 자릿수가 정확히 4비트에 해당한다는 것을 기억하면 2진수로 암산 변환하는 데 유용합니다
  • 손으로 빠르게 16진수로 변환하려면 오른쪽부터 2진수 자릿수를 4개씩 묶으세요
  • 8진수는 2진수를 3개씩 묶는데, 이것이 예전 12/24비트 시스템에서 흔했던 이유입니다
  • 결과를 신뢰하기 전에 선택한 '원본' 진법이 실제로 입력한 것과 일치하는지 다시 확인하세요

피해야 할 일반적인 실수

  • 2진수나 8진수에 '9'처럼 선택한 진법에서 유효하지 않은 자릿수를 입력하는 것
  • 16진수 자릿수 A-F는 대소문자를 구분하지 않지만 고정된 값을 나타낸다는 점을 잊는 것
  • 오래된 프로그래밍 언어에서 8진수의 앞자리 0 표기를 10진수로 착각하는 것
  • 2의 보수 체계 없이도 2진수 변환이 음수를 처리한다고 가정하는 것

주요 용어 설명

기수(Radix): 숫자 체계의 진법을 가리키는 다른 용어
위치 기수법: 자릿수의 값이 그 위치에 따라 결정되는 체계
비트: 하나의 2진수 자릿수 (0 또는 1)
니블: 4비트로 이루어진 묶음으로, 정확히 16진수 한 자리에 해당

관련 개념

  • 색상 값: #FF5733과 같은 16진수 색상은 세 개의 16진수(16진법) 바이트입니다. 우리의 색상 변환기는 16진수, RGB, HSL, 색상 이름 형식 사이를 변환합니다.
  • 2진수와 데이터 크기: 16진수의 바이트 값은 데이터 양에 직접 대응됩니다. 우리의 데이터 변환기는 비트, 바이트, 저장 단위 사이를 변환합니다.
  • 에포크 타임스탬프: Unix 시간은 종종 10진수와 16진수로 표시됩니다. Unix 타임스탬프 변환기는 타임스탬프를 사람이 읽을 수 있는 날짜로, 그 반대로도 변환합니다.
  • 해시: MD5, SHA-256과 같은 암호화 다이제스트는 16진수 자릿수의 문자열입니다. 우리의 해시 생성기는 이러한 일반적인 해시 형식을 생성합니다.
  • 인코딩: URL의 퍼센트 인코딩은 각 특수 문자를 %2F와 같은 16진수 이스케이프로 기록합니다. URL 인코더/디코더는 URL 콘텐츠를 인코딩하고 디코딩합니다.

예시

16진수 2F를 10진수로 변환: 2×16¹ + 15×16⁰ = 32 + 15 = 47. 2진수로는 101111, 8진수로는 57입니다.

결과 해석 방법

변환기는 선택한 진법의 숫자 문자열로 모든 결과를 표시하며, 자릿값 분해는 각 자릿수를 "자릿수 × 진법^위치"로 확장하여 블랙박스를 믿는 대신 손으로 수학을 검증할 수 있게 합니다. 가장 오른쪽 자릿수가 위치 0이며 그 자릿값은 항상 1입니다. 왼쪽으로 이동할 때마다 자릿값에 진법이 한 번 더 곱해집니다(따라서 2진수에서는 자릿값이 1, 2, 4, 8…이 되고 16진수에서는 1, 16, 256…이 됩니다). 모든 "자릿수 × 자릿값"을 합하면 10진수 값을 정확히 재현합니다. 입력은 선택한 진법에서 유효한 자릿수만 사용해야 하며, 도구는 유효하지 않은 자릿수를 즉시 표시합니다. 이 도구는 음이 아닌 정수만 처리한다는 점에 유의하세요. 음수와 소수 값은 위치 기수법 정수 변환기로는 다룰 수 없는 2의 보수 또는 부동소수점 처리가 필요합니다.

자주 묻는 질문

2진수를 10진수로 어떻게 변환하나요?
각 2진수 자릿수에 그 위치(오른쪽부터 0으로 시작)에 해당하는 2의 거듭제곱을 곱한 후 결과를 모두 더합니다. 예를 들어 2진수 1011은 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 0 + 2 + 1 = 10진수 11이 됩니다.
컴퓨터 분야에서 왜 16진수를 사용하나요?
16진수(16진법)는 각 자릿수가 정확히 4비트를 나타내므로 2진수와 깔끔하게 대응됩니다. 그 덕분에 순수한 2진수만큼 길어지지 않으면서도 메모리 주소, 색상 코드, 바이트 값을 간결하고 사람이 읽기 쉬운 방식으로 표기할 수 있습니다.
각 진법에서 유효한 자릿수는 무엇인가요?
2진수는 0-1, 8진수는 0-7, 10진수는 0-9, 16진수는 0-9에 더해 A-F(10-15를 나타냄)를 사용합니다. 선택한 진법의 범위를 벗어나는 자릿수를 입력하면 오류가 표시됩니다.
음수나 소수점이 있는 숫자도 변환할 수 있나요?
이 도구는 음이 아닌 정수를 변환하며, 이는 대부분의 프로그래밍, 네트워킹, 학습용 사용 사례를 포괄합니다. 부호가 있거나 소수 형태의 2진수 표현을 다루려면 전용 2의 보수 또는 부동소수점 도구가 필요합니다.
16진수 색상 코드(예: #FF5733)를 RGB로 변환하려면 어떻게 하나요?
16진수 색상 코드는 빨강, 초록, 파랑이라는 세 개의 두 자리 16진수를 한데 묶은 것에 불과합니다. #FF5733를 FF, 57, 33으로 나누고 각 쌍을 10진수로 변환하면 FF = 255, 57 = 87, 33 = 51이 되어 rgb(255, 87, 51)이 됩니다. 각 쌍은 00(0)부터 FF(255)까지의 범위를 가지므로, 16,777,216가지의 가능한 색을 모두 여섯 자리의 16진수로 쓸 수 있습니다. 이것이 CSS가 16진수를 그토록 많이 사용하는 이유입니다 — 간결하고, 각 쌍이 브라우저가 해당 채널에 저장하는 바이트에 직접 대응되기 때문입니다.
2의 보수란 무엇이며 음의 2진수를 어떻게 나타내나요?
2의 보수는 컴퓨터가 음의 정수를 저장하는 표준적인 방식입니다. 수를 부정하려면 모든 비트를 반전시키고 1을 더합니다: 8비트의 +5(00000101)는 비트를 반전시키고(11111010) 1을 더하면 11111011이 되어 −5를 나타냅니다. 맨 왼쪽 비트는 부호 표시 역할을 합니다 — 0은 음수가 아님, 1은 음수임을 의미합니다 — 그러면서도 두 부호에 대해 덧셈 회로는 동일하게 유지됩니다. 4비트의 2의 보수 값은 0에서 15가 아닌 −8에서 +7까지의 범위를 가집니다. 범위의 절반이 음수에 사용되기 때문입니다. 이 도구는 음이 아닌 정수를 변환합니다. 부호가 있는 값이 필요하면 2진수 출력 위에 직접 2의 보수를 적용하세요.
변환기에 2진수의 앞에 불필요한 0이 표시되는 이유는 무엇인가요?
앞의 0은 숫자의 값을 바꾸지 않습니다 — 0011과 11은 모두 10진수 3입니다 — 하지만 의도적으로 표시되는 경우가 많습니다. 프로그래머는 2진수를 니블(4비트)이나 바이트(8비트)로 묶어서 16진수와 패턴이 맞도록 합니다: 0011 0011은 16진수로 33으로 읽히지만, 묶지 않은 110011은 파싱하기가 더 어렵습니다. 일부 도구는 컴퓨터의 실제 레지스터를 반영하여 고정 폭(8, 16, 32비트)으로 패딩합니다. 가장 짧은 형태를 선호한다면 출력에서 앞의 0을 그냥 제거하면 됩니다 — 값은 동일하게 유지됩니다.
8진수는 Unix 파일 권한(chmod)에서 어떻게 사용되나요?
Unix 권한은 소유자, 그룹, 기타 사용자를 위한 읽기(r), 쓰기(w), 실행(x)의 세 그룹입니다. 각 그룹은 3비트 2진수이므로 한 자리의 8진수에 대응됩니다: rwx = 7, rw- = 6, r-x = 5, r-- = 4. 따라서 chmod 755는 소유자 rwx, 그룹 r-x, 기타 r-x를 설정합니다. 이것이 바로 7, 5, 5가 세 개의 8진수로 나타나는 이유입니다. 각 자리가 정확히 3비트를 커버하여 각 당사자의 세 개의 권한 위치에 대응하므로 8진은 여기서 자연스러운 표기법입니다.
이 도구는 매우 큰 숫자를 정밀도를 잃지 않고 변환할 수 있나요?
이 변환기는 JavaScript가 정확하게 표현할 수 있는 가장 큰 정수인 2^53 − 1 = 9,007,199,254,740,991까지의 모든 정수에 대해 정확합니다. 그 경계를 넘는 값은 가장 가까운 표현 가능한 수로 반올림될 수 있으므로 출력이 정확한 변환 결과에서 벗어날 수 있습니다. 일상적인 작업 — 색상 코드, 메모리 주소, IP 마스크, 포트 번호, 학습용 숫자 — 에는 이 범위로 충분하고도 남습니다. 53비트를 넘는 변환이 필요하다면 표준 브라우저 내 변환기가 아니라 임의 정밀도 도구가 필요합니다.
10진수를 손으로 2진수로 변환하려면 어떻게 하나요?
숫자를 반복해서 2로 나누고 각 단계에서 나머지를 기록한 다음, 나머지를 아래에서 위로 읽습니다. 47의 경우: 47 ÷ 2 = 23 나머지 1, 23 ÷ 2 = 11 나머지 1, 11 ÷ 2 = 5 나머지 1, 5 ÷ 2 = 2 나머지 1, 2 ÷ 2 = 1 나머지 0, 1 ÷ 2 = 0 나머지 1입니다. 나머지를 위쪽으로 읽으면 101111이 되며, 이는 32 + 8 + 4 + 2 + 1 = 47과 같습니다. 동일한 반복 나눗셈 방법은 어떤 진법에도 적용됩니다 — 8진수라면 8로 나누고 16진수라면 16으로 나눕니다 — 나머지를 역순으로 모으면 됩니다.
10진수를 거치지 않고 2진수와 16진수 사이에서 직접 변환하려면 어떻게 하나요?
16진수 한 자리가 정확히 4비트와 같기 때문에 10진수 단계 없이 변환할 수 있습니다. 2진수 자릿수를 오른쪽에서 4개씩 묶고 각 묶음을 16진수 자릿수로 변환합니다: 101111 → 0010 1111 → 2F입니다. 각 4비트 묶음은 하나의 16진수 기호에 대응됩니다(0000=0부터 1111=F까지). 반대 방향에서는 각 16진수 자릿수를 4비트로 확장합니다: 2F → 0010 1111입니다. 같은 요령은 8진수에도 적용되는데, 8진수는 2진수를 세 비트씩 묶어 대응시킵니다 — 이것이 2진수, 8진수, 16진수가 그토록 쉽게 서로 변환되는 이유입니다.

더 많은 도구 살펴보기

전체 도구 라이브러리에서 엄선한 새로운 추천입니다.