진법 변환 (2진수·8진수·10진수·16진수)

숫자를 2진수·8진수·10진수·16진수 사이에서 서로 변환합니다. BigInt를 사용하여 자릿수가 큰 정수도 오차 없이 정확하게 변환합니다.

진법 변환 도구란? 2진수·8진수·10진수·16진수의 관계 이해하기

진법 변환 도구는 2진수·8진수·10진수·16진수 중 하나로 숫자를 입력하기만 하면, 나머지 세 가지 진법으로 표기한 값을 한 번에 확인할 수 있는 무료 도구입니다. 프로그래밍이나 네트워크 설정, 전자 회로 작업에서는 같은 숫자를 서로 다른 진법으로 다루어야 하는 경우가 많은데, 자릿수가 늘어날수록 수작업 변환은 실수하기 쉬워집니다. 이 도구는 입력값을 검증한 뒤 즉시 변환 결과를 보여주므로, 계산기 앱이나 종이 환산표 없이도 그 자리에서 확인할 수 있습니다.

진법 변환의 원리 자체는 단순합니다. 모든 진법은 "자릿값 × 각 자리의 숫자"의 합으로 같은 값을 나타낼 뿐입니다. 10진수 255는 2진수로 11111111, 8진수로 377, 16진수로 FF가 되지만, 표기만 다를 뿐 나타내는 수량은 완전히 동일합니다. 이 도구는 JavaScript의 Number 타입이 아닌 BigInt(자릿수에 제한이 없는 정수 타입)로 계산하므로, 2의 53제곱을 넘는 매우 큰 정수라도 오차 없이 정확하게 변환할 수 있습니다.

진법 변환 도구 사용법

  1. 입력할 숫자의 진법을 선택한다 앞으로 입력할 숫자가 2진수·8진수·10진수·16진수 중 어느 것으로 쓰여 있는지 드롭다운에서 선택합니다.
  2. 숫자를 입력한다 선택한 진법에서 사용할 수 있는 문자만 입력합니다. 16진수는 A~F의 영문자도 사용할 수 있습니다.
  3. 유효하지 않은 문자가 없는지 확인한다 선택한 진법에서 사용할 수 없는 문자가 포함되어 있으면 오류 메시지가 표시되므로 입력값을 수정합니다.
  4. 각 진법으로 변환된 결과를 확인한다 버튼 조작 없이 2진수·8진수·10진수·16진수 표기가 모두 자동으로 나열됩니다.
  5. 다른 숫자를 이어서 변환한다 입력값이나 진법을 변경하면 결과가 즉시 다시 계산되므로, 여러 값을 연속으로 확인할 수 있습니다.

더 잘 활용하기 위한 팁

  • 16진수를 입력할 때는 `0x` 같은 접두사를 붙이지 말고 숫자 부분만(예: `FF`) 입력하세요. 대문자와 소문자 모두 인식됩니다.
  • 이 도구는 BigInt를 사용해 계산하므로, JavaScript의 Number 타입에서는 오차가 발생하는 큰 자릿수의 정수(2^53을 초과하는 값)도 정확하게 변환할 수 있습니다.
  • 프로그래밍에서 자주 쓰이는 16진수 색상 코드(예: `#FF0000`)를 확인하거나, 비트 연산을 검증할 때 2진수 표기를 활용할 수 있습니다.
  • 8진수는 유닉스 계열 운영체제의 파일 권한 표기(예: `755`)에서 자주 사용됩니다. 10진수·2진수와 비교해 보면 권한의 의미를 이해하기 쉬워집니다.

진법 변환 도구 활용 예시

프로그래밍 학습·연습 문제 검산

정보과학 수업이나 자격시험에 나오는 진법 변환 연습 문제를 푼 뒤, 직접 계산한 결과가 맞는지 바로 검산할 수 있습니다.

비트마스크·색상 코드 확인

비트 연산 플래그 설계나 CSS·디자인 도구에서 쓰는 16진수 색상 코드(예: `#FF0000`)를 2진수로 변환해 어떤 비트가 켜져 있는지 확인할 수 있습니다.

네트워크 주소·서브넷 계산 사전 준비

IP 주소나 서브넷 마스크를 2진수로 변환해, 네트워크 부분과 호스트 부분의 경계를 확인하기 위한 사전 작업으로 활용할 수 있습니다.

유닉스 파일 권한 확인

`chmod 755`와 같은 8진수 권한 값을 2진수로 변환해, 읽기·쓰기·실행 권한이 어떻게 조합되어 있는지 시각적으로 파악할 수 있습니다.

큰 정수를 다루는 시스템의 디버깅

로그나 메모리 덤프에서 64비트 정수 같은 큰 값을 16진수로 확인할 때, 오차 없이 10진수로 변환해 실제 수량 감각을 파악할 수 있습니다.

진법 변환 관련 용어집

2진수(Binary)
0과 1 두 가지 숫자만으로 값을 나타내는 기수법입니다. 컴퓨터 내부에서는 전압의 높낮이나 스위치의 켜짐·꺼짐에 대응시켜 다룹니다.
8진수(Octal)
0~7까지 8가지 숫자로 값을 나타내는 기수법입니다. 2진수 3자리와 정확히 대응하기 때문에 초창기 컴퓨터와 유닉스 계열 운영체제의 파일 권한 표기에서 쓰입니다.
10진수(Decimal)
0~9까지 10가지 숫자를 사용하는, 우리가 일상적으로 쓰는 기수법입니다. 이 도구에서는 입력 진법으로도, 변환된 결과 중 하나로도 다룰 수 있습니다.
16진수(Hexadecimal)
0~9와 A~F까지 16가지 문자로 값을 나타내는 기수법입니다. 2진수 4자리와 정확히 대응하기 때문에, 메모리 주소나 색상 코드처럼 컴퓨터 내부의 값을 사람이 읽기 쉬운 형태로 표현할 때 자주 쓰입니다.
기수(Radix)
어떤 기수법에서 한 자리로 나타낼 수 있는 숫자 종류의 개수를 말합니다. 2진수의 기수는 2, 8진수는 8, 10진수는 10, 16진수는 16입니다.
BigInt
JavaScript에서 자릿수 제한 없이 정수를 정확하게 다룰 수 있는 데이터 타입입니다. 일반적인 Number 타입은 2의 53제곱을 넘으면 오차가 생기지만, BigInt를 사용하면 자릿수가 아무리 커도 정확하게 변환할 수 있습니다.
자릿값
숫자의 어떤 자리가 전체 값에 대해 갖는 크기를 말합니다. 예를 들어 10진수의 백의 자리는 "100"이라는 자릿값을 가지며, 진법 변환은 이 자릿값과 각 자리의 숫자를 곱해 합산함으로써 이루어집니다.
비트마스크
특정 비트 위치만 골라내거나 변경하기 위해 사용하는 2진수 패턴을 말합니다. 16진수나 색상 코드의 구성을 확인할 때 2진수로 변환하면 어떤 비트가 켜져 있는지 파악하기 쉬워집니다.

자주 묻는 질문

이들은 모두 숫자를 표현할 때 사용하는 "진법(기수)"의 차이입니다. 10진수는 0~9까지 10개의 숫자를 사용하는, 우리에게 익숙한 표기법이고, 2진수는 0과 1 두 가지만 사용하며 컴퓨터 내부 처리에 쓰이는 표기법입니다. 8진수는 0~7을, 16진수는 0~9와 A~F를 사용하며 컴퓨터 과학과 전자공학에서 자주 사용됩니다.

16진수 한 자리는 정확히 4비트(2진수 4자리)를 표현할 수 있어, 2진수 데이터를 사람이 읽기 쉬운 형태로 압축해 표기할 수 있다는 장점이 있습니다. 메모리 주소, 색상 코드(`#RRGGBB`), 문자 코드 등 컴퓨터 내부의 비트열을 다루는 상황에서 널리 사용됩니다.

일반적인 계산기나 JavaScript의 Number 타입을 이용한 변환에서는 2의 53제곱(약 900조)을 초과하는 정수에서 오차가 발생할 수 있습니다. 이 도구는 BigInt(자릿수 제한이 없는 정수 타입)를 사용해 계산하므로, 자릿수가 아무리 커도 오차 없이 정확하게 변환할 수 있습니다.

8진수는 주로 유닉스 계열 운영체제(리눅스·macOS 등)의 파일 권한 표기(예: `chmod 755`)에서 사용됩니다. 각 자리는 "읽기(4)·쓰기(2)·실행(1)" 권한의 조합을 나타내며, 8진수 한 자리로 소유자·그룹·기타 사용자 각각의 권한을 간결하게 표현할 수 있습니다.
툴군

여담 ― 컴퓨터는 왜 2진수로 동작할까

컴퓨터가 2진수(0과 1)를 기본으로 하는 이유는, 전자 회로가 "전압이 높다/낮다", "스위치가 켜짐/꺼짐"이라는 두 가지 상태를 안정적으로 구별하기 쉽기 때문입니다. 10진수처럼 10단계의 전압 수준을 정확히 구별하는 회로를 만드는 것보다, 두 가지 상태만 다루는 회로가 노이즈에 강하고 부품 구성도 단순해진다는 실용적인 이유로, 현대의 거의 모든 컴퓨터가 2진수를 채택하고 있습니다.

16진수가 프로그래밍에서 요긴하게 쓰이는 이유는, 2진수 4자리(0000~1111)가 정확히 16진수 1자리(0~F)에 대응한다는 수학적 성질에 있습니다. 예를 들어 1바이트(8비트) 데이터는 16진수로 정확히 2자리(`00`~`FF`)로 표현할 수 있어, 2진수로 쓰면 8자리가 되는 정보를 사람이 읽기 좋은 길이로 압축할 수 있습니다.

8진수는 역사적으로, 초창기 컴퓨터(1960년대의 PDP-8 등)가 12비트·36비트 등 3의 배수인 워드 크기를 채택했던 데서 널리 퍼졌다고 알려져 있으며, 당시에는 8진수가 2진수와 대응시키기 더 편리한 경우가 많았습니다. 이후 컴퓨터가 8비트·16비트·32비트 단위(4의 배수)를 주류로 채택하게 되면서, 8진수보다 16진수가 실용적으로 더 편리해졌고, 오늘날에는 16진수가 주류가 되었습니다. 다만 유닉스의 파일 권한 표기처럼, 8진수가 지금도 현역으로 쓰이는 곳이 남아 있습니다.