진법 변환
2·8·10·16진수를 상호 변환하고 텍스트↔2진수도 지원해요.
이럴 때 쓰세요
이렇게 사용하세요
결과가 예상과 다를 때
결과가 예상과 달라요
단위와 기준을 먼저 확인해 주세요. 값을 바꾸면 결과가 바로 갱신돼요.
처음 값으로 되돌리고 싶어요
초기화를 누르면 처음 상태로 돌아가요.
자주 하는 실수
- 16진수 한 자리는 4비트, 8진수 한 자리는 3비트입니다. 색상 코드를 2진수로 바꿀 때 16진수 두 자리씩(8비트) 끊어야 값이 맞아떨어집니다.
- 접두사 0x·0o·0b는 표기일 뿐 값에는 포함되지 않습니다. #FF00AA를 16진수로 읽으면 0xFF00AA이지, 앞에 붙인 #가 값인 것은 아닙니다.
- 앞쪽 0을 임의로 지우면 자릿수가 줄어듭니다. 메모리 주소를 볼 때 0x0A10과 0xA10은 같은 값이지만 표기가 달라 잘못된 위치를 읽게 됩니다.
- 10진수 칸에 16진수 값을 그대로 넣으면 다른 값이 됩니다. 0xFF는 십진수 255이지 'FF'가 아니므로, 진법을 바꿀 때 결과를 확인하고 넘어가세요.
계산 근거
진법은 자릿값의 가중합입니다. N진법 숫자는 각 자리 숫자에 해당 자리의 거듭제곱을 곱해 더한 값이며, 10진수는 10ⁿ, 16진수는 16ⁿ, 2진수는 2ⁿ을 가중치로 씁니다. 16진수 한 자리가 16가지 값(0~15)을 나타내므로 4비트(2⁴ = 16)와 정확히 맞아떨어집니다.
실제로 계산해 보면
255를 각 진법으로?
255 = 2진수 11111111 = 8진수 377 = 16진수 FF입니다. 2⁸ = 256에서 1을 뺀 값이라 8비트가 모두 1이 되고, 같은 값이 16진수에서는 두 자리로 압축됩니다. 8진수는 3 × 64 + 7 × 8 + 7 = 255로 확인됩니다.
1000을 16진수로?
0x3E8입니다. 자릿값을 확인하면 3 × 16² + 14 × 16 + 8 = 768 + 224 + 8 = 1000. E가 14를 나타내므로 3E로 줄여 쓸 수 있습니다.
문자를 2진수로 보면?
'Hi'는 UTF-8에서 72, 105 두 바이트입니다. 72는 64 + 8이라 01001000, 105는 64 + 32 + 8 + 1이라 01101001이 되어 두 묶음으로 나옵니다. 한글 한 글자는 3바이트라 자릿수가 훨씬 길어집니다.
더 궁금한 것
왜 하드웨어에서 2진수만 쓰나요?
전기는 켜짐과 꺼짐 두 상태만 안정적으로 구분할 수 있기 때문입니다. 스위칭 회로의 비용과 오류율 면에서 두 상태가 가장 단순해, 실제 회로는 전압을 2진수 자릿값으로 해석합니다. 16진수는 사람이 네 비트씩 묶어 읽기 편해 널리 쓰이는 표기일 뿐입니다.
음수는 어떻게 표현하나요?
부호 있는 정수는 2의 보수(2's complement)로, 모든 비트를 뒤집은 뒤 1을 더합니다. 그래서 −1의 16비트 표현이 1111…1로 나옵니다. 32비트 전체면 FFFFFFFF처럼 커 보입니다. unsigned 범위를 넘어선 16진수 리터럴을 다룰 때는 부호에 주의하세요.
소수점 근처의 값이 이상하게 나와요.
정수 진법 변환은 값이 정확히 떨어질 때만 깔끔합니다. 0.1은 2진수에서 무한히 이어지는 소수라 0.0001100110011…처럼 반복 표시되고, 뒤에서 자르면 원래 값과 다릅니다. 소수를 다룰 때는 16진수 부동소수점 표기가 따로 필요합니다.
알아둘 경계값
- 2진수 칸에 2가 섞여도 앞부분만 읽어 12가 1로 바뀌니 훑어야 해요.
- 공백 구분 입력에 다른 글자가 섞여도 앞에서 잘라 전혀 다른 글자가 되니 봐요.
- 접두사는 진법과 무관하게 벗겨져 10진수 모드의 0x10이 10이 되니 주의해요.
- 9007199254740991을 넘기면 1 단위가 반올림돼 큰 정수가 어긋나니 나눠요.
- 텍스트 변환은 바이트 사이 공백 한 칸 고정이라 형식을 맞춰 붙여야 하니 확인해요.
- 출력 16진수는 대문자에 접두사가 없어 쓰는 곳 모양과 다를 수 있으니 봐요.
결과를 믿기 전 확인 목록
- 2진수 입력에 0·1 외 글자가 없는지 끝까지 훑어봐요.
- 입력한 접두사는 고른 진법과 맞는지 다시 확인해요.
- 16자리를 넘는 큰 수는 다른 계산기로 꼭 교차 확인해요.
- 한글·이모지는 바이트 묶음 수를 먼저 세 봐야 해요.
- 공백 구분 입력은 한 칸씩 띄웠는지 다시 확인해요.
- 출력 HEX를 코드에 쓸 때는 0x가 필요한지 미리 확인해요.
- 소수는 정수부와 소수부를 나눠 따로 변환해야 해요.
- 8비트면 255 이하인지 어림셈으로 꼭 확인해요.
- 숫자 변환과 텍스트 변환 중 어느 칸인지 미리 확인해요.
자주 묻는 질문
0x·0b 접두어도 되나요?
네. 0x·0o·0b 접두사를 자동으로 인식합니다.
소수점·음수도 변환되나요?
이 도구는 정수 진법 변환만 다룹니다. 소수점이 있는 값은 정수부만 변환되니 주의하세요.