진법 변환기
2진수, 8진수, 10진수, 16진수를 실시간으로 상호 변환합니다.
빠른 참조표
| 10진수 | 2진수 | 8진수 | 16진수 |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 8 | 1000 | 10 | 8 |
| 10 | 1010 | 12 | A |
| 15 | 1111 | 17 | F |
| 16 | 10000 | 20 | 10 |
| 255 | 11111111 | 377 | FF |
진법 변환기란?
진법 변환기는 2진수, 8진수, 10진수, 16진수 사이를 실시간으로 상호 변환해주는 도구입니다. 프로그래밍을 하거나 컴퓨터 과학을 공부할 때 진법 간 변환은 피할 수 없는 과정인데, 이 도구를 사용하면 수동 계산 없이 빠르게 결과를 확인할 수 있습니다. 어떤 진법 필드에 값을 입력하든 나머지 진법 값이 동시에 계산되어 편리합니다.
왜 하필 2·8·16진법인가
컴퓨터가 2진법을 쓰는 것은 전기 신호가 켜짐과 꺼짐 두 상태로 가장 안정적이기 때문입니다. 문제는 사람이 읽기 어렵다는 점입니다. 십진수 255가 2진법으로는 11111111이라 자릿수가 길고 눈으로 세기 힘듭니다.
그래서 16진법을 씁니다. 16은 2의 4제곱이라 2진수 네 자리가 정확히 16진수 한 자리에 대응합니다. 1111은 F, 1010은 A로 기계적으로 묶어 읽으면 되므로 계산 없이 변환됩니다. 8진법도 같은 이유(2의 3제곱)로 세 자리씩 묶입니다. 십진법은 2의 거듭제곱이 아니라 이런 대응이 없어서 실제 계산이 필요합니다.
실무에서 만나는 자리
- 색상 코드 —
#FF5733은 빨강·초록·파랑 각각을 16진수 두 자리(0~255)로 적은 것입니다.FF는 255로 최대치입니다. - 파일 권한 — 리눅스의
chmod 755는 8진수입니다. 읽기 4, 쓰기 2, 실행 1을 더한 값을 소유자·그룹·기타 순으로 적습니다. 7은 4+2+1이라 전부 허용이라는 뜻입니다. - 유니코드 —
U+AC00(가)처럼 16진수로 표기합니다. - 서브넷 마스크 —
255.255.255.0을 2진수로 펼쳐 보면 앞에서부터 1이 몇 개인지가 곧/24의 24입니다.
아주 큰 수는 정확하지 않습니다
알아두셔야 할 한계입니다. 변환에 자바스크립트의 기본 숫자 타입을 쓰기 때문에 안전하게 다룰 수 있는 정수는 2의 53제곱 −1(약 9007조)까지입니다. 이보다 큰 값을 넣으면 뒷자리가 조용히 반올림되어 틀린 결과가 나옵니다.
2진수로는 53자리, 16진수로는 13~14자리쯤이 한계선입니다. 64비트 정수나 긴 해시값을 다루신다면 이 도구 대신 정밀도 손실이 없는 프로그래밍 언어의 큰 정수 타입을 쓰세요. 일상적인 색상 코드나 권한 계산 범위에서는 문제되지 않습니다.
자주 묻는 질문
16진수에 왜 알파벳이 들어가나요?
한 자리에 열여섯 가지 값을 표현해야 하는데 숫자 기호는 0~9 열 개뿐입니다. 모자라는 여섯 개를 A부터 F까지로 채운 것이며, A가 10이고 F가 15입니다. 대소문자는 구분하지 않습니다.
음수나 소수도 되나요?
양의 정수만 지원합니다. 음수는 컴퓨터 내부에서 2의 보수 방식으로 표현되어 비트 수를 함께 정해야 하고, 소수는 부동소수점 표준을 따라야 해서 단순 진법 변환과 규칙이 다릅니다.
입력이 빨갛게 표시됩니다
그 진법에 없는 문자가 들어간 경우입니다. 2진법 칸에는 0과 1만, 8진법 칸에는 0~7만 들어갈 수 있습니다. 16진법 칸에 G 이상의 알파벳을 넣어도 마찬가지입니다.
작동 원리
진법 변환기는 숫자를 다른 기수(base) 체계로 변환합니다. 10진수를 목표 진법으로 변환할 때 숫자를 기수로 나누고 나머지를 역순으로 배열합니다. 예를 들어 255를 16진법으로 변환하면 255÷16=15 나머지 15이므로 FF가 됩니다. 2진법(컴퓨터), 8진법(유닉스 권한), 16진법(색상 코드, 메모리 주소)이 주로 사용됩니다.
같이 보면 좋은 도구
- ASCII/유니코드 변환 - 문자와 코드 변환
- 단위 변환기 - 길이, 무게, 온도 등 단위 변환
- 퍼센트 계산기 - 백분율 계산
- 모스 부호 변환기 - 텍스트와 모스 부호 변환