진법 변환에서 자주 생기는 실수는 숫자값과 표기법을 같은 것으로 생각하는 데서 시작합니다. 255라는 값은 10진수로 쓰면 255지만, 2진수에서는 11111111, 8진수에서는 377, 16진수에서는 FF가 됩니다. 여기에 프로그래밍 언어가 숫자의 진법을 알려 주는 접두사를 붙이면 같은 값이 또 다른 모양으로 보입니다.
이 글은 디버깅 값 255를 16진수 FF로 바꾸고 코드에는 0xFF로 기록하는 상황을 기준으로 합니다. 변환기를 누르는 순서뿐 아니라 입력 형식, 접두사, 음수, 안전한 숫자 범위, CSS 색상 표기의 차이까지 확인해 숫자를 잘못 복사하는 일을 줄이는 것이 목표입니다.
숫자값과 코드 표기 토큰을 분리해서 보기
진법은 숫자를 표현하는 규칙이고 접두사는 그 숫자를 어떤 규칙으로 읽어야 하는지 알려 주는 표식입니다. 255와 FF는 값이 다르게 보이지만 같은 정수를 표현할 수 있습니다. 반면 FF라는 문자열만 보면 일반 문서의 글자인지 16진수 숫자인지 결정할 수 없으므로, 입력 진법을 함께 기록해야 합니다.
| 표현 | 의미 | 읽는 방식 |
|---|---|---|
| 255 | 10진수 값 | 0부터 9까지 사용 |
| 11111111 | 2진수 값 | 0과 1만 사용 |
| 377 | 8진수 값 | 0부터 7까지 사용 |
| FF | 16진수 값 | 0부터 9와 A부터 F 사용 |
소스 코드에서는 언어가 접두사를 통해 입력 진법을 구분할 수 있습니다. 그러나 화면에 표시되는 모든 숫자 앞에 접두사를 붙이는 것은 아닙니다. 진법을 알고 있는 변환기 결과와 실제 언어의 리터럴 문법을 오가는 순간마다 사람이 읽는 값, 도구에 넣는 값, 코드에 붙여 넣는 값을 분리해 메모하세요.
255를 네 가지 진법으로 직접 검산하기
255를 2진수로 바꾸면 각 자릿수가 2의 거듭제곱을 나타냅니다. `128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255`이므로 여덟 자리가 모두 1인 `11111111`이 됩니다. 16진수에서는 4개의 2진수 자리가 1개의 16진수 자리와 대응하므로 `1111 1111`은 `F F`, 즉 `FF`입니다.
8진수는 오른쪽부터 3자리씩 묶어 생각할 수 있습니다. 255를 8진수로 표현하면 3과 7과 7이 되고, 각 자리의 값은 `3×8² + 7×8 + 7 = 192 + 56 + 7 = 255`입니다. 같은 값인지 확인할 때 변환 결과 한 줄만 믿지 말고 원래 진법으로 다시 계산해 보는 습관을 들이세요.
| 진법 | 변환 결과 | 코드에서 흔한 표기 |
|---|---|---|
| 2진수 | 11111111 | 0b11111111 |
| 8진수 | 377 | 0o377 |
| 10진수 | 255 | 255 |
| 16진수 | FF | 0xFF |
이 표에서 접두사가 붙은 값은 코드 리터럴의 예시이고, 표의 변환 결과는 도구가 보여 주는 숫자 부분입니다. 입력 영역에 0xFF를 그대로 넣을 수 있는지와 코드에서 0xFF를 사용할 수 있는지는 별개의 문제입니다.
2진수 네 자리와 16진수 한 자리 연결하기
16진수 한 자리는 0부터 15까지 표현하므로 2진수 네 자리와 정확히 대응합니다. 0000은 0, 0001은 1, 1010은 A, 1111은 F입니다. 긴 2진수를 오른쪽부터 네 자리씩 묶으면 계산기를 사용하지 않고도 16진수로 옮길 수 있습니다.
- 오른쪽 끝에서 네 자리씩 묶습니다.
- 왼쪽에 남는 자리는 필요하면 0을 채웁니다.
- 각 묶음을 0부터 F 중 하나로 바꿉니다.
- 변환한 자리를 왼쪽부터 이어 붙입니다.
- 코드에 넣을 때 언어 문법에 맞는 접두사를 별도로 붙입니다.
예를 들어 `10110110`은 `1011 0110`으로 묶이고, 1011은 B, 0110은 6이므로 `B6`입니다. 다시 `B×16 + 6 = 182`를 계산하면 원래 2진수의 값과 일치하는지 확인할 수 있습니다. 그룹 사이에 공백을 넣어 계산하더라도 실제 입력창은 공백이나 밑줄을 허용하지 않을 수 있으므로 최종 입력 전에 형식을 정리하세요.
접두사 표를 언어별 사용 맥락으로 읽기
2진수의 `0b`, 8진수의 `0o`, 16진수의 `0x`는 숫자 앞에서 해석 규칙을 알려 주는 관례입니다. 10진수에는 일반적으로 같은 역할의 접두사가 필요하지 않습니다. 언어와 파일 형식에 따라 허용 문법이 다르므로, 변환 결과를 코드에 넣기 전 해당 언어의 숫자 리터럴 규칙을 확인하세요.
JSON 숫자는 일반적인 데이터 교환 형식에서 16진수 리터럴을 그대로 허용하지 않는 경우가 많습니다. `0xFF`를 JavaScript 코드에는 넣을 수 있어도 JSON 파일에는 문자열이나 10진수 255로 바꿔야 할 수 있습니다. 진법 변환기에서 얻은 숫자를 설정 파일, CSS, SQL, 쉘 명령에 넣을 때는 대상 문법을 먼저 확인해야 합니다.
접두사와 단위 표시는 서로 다른 기능입니다. `0xFF`는 진법을 표시하지만, `255ms`에서 ms는 시간 단위입니다. 숫자만 바꿔야 하는 필드에 접두사나 단위를 덧붙이면 파서가 오류를 낼 수 있으므로, 값과 표시 메타데이터를 별도 필드로 관리하는 것이 안전합니다.
변환기 입력 검증 규칙을 먼저 확인하기
현재 변환기는 입력 진법을 2, 8, 10, 16 중에서 고르고 선택한 진법에 맞는 숫자만 입력받습니다. 2진수는 0과 1, 8진수는 0부터 7, 10진수는 0부터 9, 16진수는 0부터 9와 A부터 F를 허용합니다. 음수 기호는 허용되지만 접두사가 포함된 `0xFF`, 밑줄이 포함된 `1111_1111`, 소수점이 있는 값은 입력 규칙과 맞지 않을 수 있습니다.
진법 버튼을 바꾸면 기존 입력값이 비워지고 새 진법의 입력을 기다립니다. 10진수 화면에서는 0, 1, 10, 42, 127, 255, 256, 1024, 65535 프리셋을 사용할 수 있습니다. 프리셋을 눌렀을 때 값이 어떻게 네 가지 결과로 변하는지 보면 입력 진법과 출력 진법을 혼동하기 어렵습니다.
유효하지 않은 값을 넣으면 결과 대신 올바른 형식이 아니라는 안내가 표시됩니다. 오류를 무시하고 앞뒤 문자를 잘라 다시 넣기보다 어떤 진법의 값인지, 접두사를 제거했는지, 허용되지 않는 문자가 있는지 확인하세요. 입력값을 고친 뒤에는 한 번 더 원래 숫자와 역산 결과를 대조해야 합니다.
음수와 안전한 숫자 범위에서 멈춰야 할 지점
음수는 양수와 같은 방식으로 문자열을 읽은 뒤 부호를 적용하지만, 언어마다 음수 리터럴의 접두사 위치와 내부 표현이 다를 수 있습니다. 사람이 읽는 `-FF`와 코드에서 기대하는 `-0xFF`를 같은 문법으로 취급하지 마세요. 음수의 비트 표현이 필요한 작업이라면 단순 진법 변환이 아니라 비트 폭과 2의 보수 규칙까지 정해야 합니다.
이 도구는 내부적으로 BigInt를 사용해 계산을 시도하지만 결과가 JavaScript의 안전한 정수 범위를 넘으면 거부합니다. 안전한 상한은 `9,007,199,254,740,991`, 즉 `2^53 - 1`입니다. 큰 식별자나 비트마스크를 변환하려는 경우 결과가 없다는 이유로 숫자를 임의로 줄이지 말고, BigInt를 지원하는 별도 코드와 저장 형식을 사용하세요.
진법 변환에서 가장 위험한 것은 계산 실패보다 조용한 잘림입니다. 큰 값을 여러 줄로 나누거나 복사하는 과정에서 앞의 0, 부호, 접두사가 사라질 수 있습니다. 결과를 다른 시스템에 전달할 때는 원본 값, 입력 진법, 변환 결과, 대상 문법을 한 묶음으로 남기세요.
색상 HEX와 숫자 HEX를 구별하기
웹 색상 코드의 `#RRGGBB`도 16진수 두 자리 묶음을 사용하지만, 일반 숫자 리터럴의 `0x` 접두사와 같은 문법은 아닙니다. `#FF0000`은 빨강의 세 채널을 나타내는 색상 토큰이고, `0xFF0000`은 하나의 16진수 정수입니다. 둘의 숫자 부분이 같아 보여도 어떤 시스템에 넣느냐에 따라 의미가 완전히 달라집니다.
색상 채널 하나는 00부터 FF까지 표현하므로 0부터 255 사이의 값이 들어갑니다. 예를 들어 `#3366CC`는 R=51, G=102, B=204로 나누어 읽을 수 있습니다. 이 값을 진법 변환기로 확인할 때는 채널을 각각 분리하고, 앞의 `#`를 제거한 뒤 16진수 입력으로 넣는 방식이 안전합니다.
반대로 디자인 토큰에 `0xFF`를 넣고 색상으로 기대하면 CSS가 요구하는 `#` 표기와 맞지 않습니다. 진법 변환 결과를 곧바로 스타일 파일에 복사하지 말고, 값의 목적과 대상 문법을 확인하세요. 색상 변환과 일반 진법 계산은 서로 다른 검수 흐름으로 관리하는 편이 좋습니다.
복사 전후에 남길 변환 기록
- 원본 숫자와 입력 진법을 적습니다.
- 변환 결과에서 숫자 부분과 접두사를 구분합니다.
- 255와 11111111처럼 역산 가능한 작은 값으로 검산합니다.
- 대상 언어와 파일 형식이 해당 표기를 허용하는지 확인합니다.
- 음수·큰 수·색상 코드처럼 예외가 있는지 점검합니다.
- 복사 후 주변 구분자와 줄바꿈이 문법을 깨지 않는지 읽습니다.
값을 직접 변환하려면 진법 변환기에서 입력 진법과 숫자를 먼저 선택하세요. 결과가 색상 토큰으로 쓰이는 값이라면 색상 코드 변환기에서 HEX·RGB·HSL의 목적에 맞게 다시 확인할 수 있습니다. JSON이나 설정 파일에 숫자를 넣는 과정이 헷갈린다면 JSON 완벽 이해 가이드에서 데이터 형식과 코드 표기의 차이를 이어서 살펴보세요.