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

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

사용 팁

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