개발자

🔢 진법 변환기

2진수·8진수·10진수·16진수를 실시간으로 상호 변환합니다. 비트 토글 시각화·2의 보수·ASCII·비트 연산(AND/OR/XOR/SHIFT) + 자리값 분해와 나누기 방식 단계별 학습까지 한 도구에서.

참고: 정수 변환을 지원합니다. 부동소수점(IEEE 754) 변환은 별도 도구를 권장하며, 실제 시스템 구현 시 비트 폭·엔디안·부호 처리에 따라 결과가 다를 수 있습니다. 본 도구는 32-bit 정밀도로 동작합니다.
🔢 2진수 (Binary)0b

1111 1111

🔢 8진수 (Octal)0o

377

🔢 10진수 (Decimal)

255

🔢 16진수 (Hex)0x

FF

💡 의미:
  • 255 — 8비트 부호 없는 최대값 (2⁸ − 1)
C / C++ / Java0xFF0b111111110377
Python0xff0b111111110o377
JavaScript0xFF0b111111110o377
CSS 색상#0000FF
🎨 색상 코드: #0000FF   색상 코드 변환기에서 보기 →
📚 알아두면 좋아요

진법 변환 핵심 원리

# 자리값 (오른쪽이 0번째)
2진수: 1, 2, 4, 8, 16, 32, 64, 128, 256, ...
8진수: 1, 8, 64, 512, 4096, ...
10진수: 1, 10, 100, 1000, 10000, ...
16진수: 1, 16, 256, 4096, 65536, ...
📌 변환 원리:
  • N진수 → 10진수: 각 자리에 자리값 곱하고 합산 (1011₂ = 1×8 + 0×4 + 1×2 + 1×1 = 11)
  • 10진수 → N진수: N으로 계속 나누고 나머지를 역순 배열

진법 간 단축 변환 관계

2진수 ↔ 16진수 (가장 자주)

2진수 4자리 = 16진수 1자리
0000 = 0 / 0001 = 1 / 1010 = A / 1111 = F
8비트(1바이트) = 16진수 2자리 (예: 0xFF)

2진수 ↔ 8진수

2진수 3자리 = 8진수 1자리
000 = 0 / 111 = 7
Unix 권한(rwx)에 자주 사용 (chmod 755)

💡 왜 16진수를 자주 쓰나? 2진수는 너무 길어서 (8비트 = 16진 2자리), 메모리 주소·색상 코드·HEX 덤프 등에서 표준입니다.0xFF11111111보다 훨씬 읽기 쉽습니다.

비트 폭별 표현 범위

비트부호 없는 최대부호 있는 범위
8-bit (1B)255−128 ~ 127
16-bit (2B)65,535−32,768 ~ 32,767
32-bit (4B)약 42억−약 21억 ~ 약 21억
64-bit (8B)약 1.8 × 10¹⁹−9.2 × 10¹⁸ ~ 9.2 × 10¹⁸
🔢 2의 거듭제곱 (자주 쓰는 값):
  • 2⁸ = 256 (1바이트)
  • 2¹⁰ = 1,024 (1KiB)
  • 2¹⁶ = 65,536 (UTF-16 BMP, 16비트 포트)
  • 2²⁰ = 1,048,576 (1MiB)
  • 2³² = 약 42억 (32-bit 정수 한계, IPv4 주소)

2의 보수 (Two's Complement)

컴퓨터가 음수를 비트로 표현하는 가장 효율적인 방법입니다. 거의 모든 현대 CPU·언어에서 표준으로 사용됩니다.

# 8-bit 예시
+5 = 00000101
−5 = 11111011 (00000101 비트 반전 후 +1)
# 8-bit 표현 범위 — MSB가 부호 비트
00000000 (0) ~ 01111111 (+127)
10000000 (−128) ~ 11111111 (−1)

✓ 장점 1

0이 단 하나 (+0과 −0이 분리되지 않음, 부호+절대값 방식과 다름)

✓ 장점 2

덧셈·뺄셈을 같은 회로로 처리 (a − b = a + (−b))

✓ 장점 3

비트 반전 후 +1로 매우 간단히 변환

비트 연산 활용 가이드

연산동작활용 예시
AND (&)둘 다 1일 때만 1마스킹 — 0xFF & 0x0F = 0x0F (하위 4비트만 추출)
OR (|)하나라도 1이면 1비트 설정 — 0x10 | 0x01 = 0x11 (특정 비트 ON)
XOR (^)다르면 1, 같으면 0토글·암호화 — 같은 값 두 번 XOR하면 원복
NOT (~)0↔1 반전비트 반전, 마스크 생성
LSHIFT (<<)왼쪽 이동x << 1 = x × 2 (빠른 곱셈)
RSHIFT (>>)오른쪽 이동x >> 1 = x ÷ 2 (정수 나눗셈)
🛠️ 실전 활용:
  • 플래그 관리 (여러 옵션을 한 변수에): flags |= READ; if (flags & READ) ...
  • Linux 파일 권한 (chmod 755 = 0o755 = rwxr-xr-x)
  • RGB 채널 분리: r = (color >> 16) & 0xFF
  • 비트 연산은 일반 산술보다 훨씬 빠름 — 성능 최적화

ASCII 표준

ASCII = American Standard Code for Information Interchange (1963년 제정). 7비트로 영어·숫자·기본 기호 128개를 표현하는 표준이며, 8비트 확장 ASCII는 256개를 다룹니다.

0~31

제어 문자

NUL, TAB(9), LF(10), CR(13), ESC(27) 등

32

공백 (SPACE)

문자열 구분

48~57

숫자 0~9

ord('0') = 48

65~90

대문자 A~Z

ord('A') = 65

97~122

소문자 a~z

ord('a') = 97 (대문자+32)

127

DEL

구식 천공카드 삭제 표시

🌏 유니코드: ASCII 0~127은 유니코드와 완전 동일. 한글은 U+AC00 ~ U+D7A3 범위에 11,172개가 정의 (가~힣).

프로그래밍 언어별 진법 표기

언어16진수2진수8진수
C / C++ / Java0xFF0b11111111 (C++14+)0377 (앞 0)
Python0xff0b111111110o377
JavaScript / TS0xFF0b111111110o377
Rust / Go0xFF0b1111_11110o377
CSS 색상#FF0000
HTML 엔터티&#x41;
URL 인코딩%41

자주 묻는 질문 (FAQ)

Q1. 왜 16진수를 자주 사용하나요?

2진수는 길어서 사람이 읽기 어렵지만, 16진수는 짧고 직관적이기 때문입니다. 8비트(1바이트)는 16진수 2자리로 표현되며, 메모리 주소·색상 코드·암호화 키 등에 표준입니다. 또한 16진수와 2진수는 4비트 단위로 직접 변환되어 (1111 = F) 비트 패턴 분석에 매우 편리합니다. 0xFF11111111보다 훨씬 읽기 쉽습니다.

Q2. 2의 보수는 왜 사용하나요?

컴퓨터에서 음수를 표현하는 가장 효율적인 방법이기 때문입니다. ① 0이 단 하나(+0과 −0이 구분 X), ② 덧셈·뺄셈을 같은 회로로 처리(a − b = a + (−b)), ③ 비트 반전 후 +1로 간단히 변환. 거의 모든 현대 CPU·프로그래밍 언어에서 표준으로 사용합니다. 부호+절대값 방식이나 1의 보수 방식은 0의 표현이 두 가지가 되거나 회로가 복잡해 거의 쓰이지 않습니다.

Q3. ASCII와 유니코드의 차이는 무엇인가요?

ASCII는 7비트로 영어·숫자·기본 기호 128개를 표현하는 표준입니다(1963년 제정). 유니코드는 전 세계 모든 문자를 표현하기 위해 ASCII를 확장한 표준이며, 약 14만 개 이상의 문자(한글·한자·이모지 포함)를 정의합니다. ASCII 0~127번은 유니코드와 완전히 동일하므로 ASCII 호환성이 보장됩니다. 한글은 U+AC00 ~ U+D7A3 범위에 11,172개가 정의되어 있습니다.

Q4. 비트 연산은 언제 사용하나요?

비트 연산은 다음 상황에 자주 사용됩니다: ① 플래그 관리(여러 옵션을 한 변수에 OR로 설정·AND로 확인), ② 마스킹(특정 비트만 추출), ③ 빠른 곱셈·나눗셈(x << 1 = x×2), ④ 권한 시스템(Linux 파일 권한 0o755), ⑤ 암호화·해시(XOR 활용), ⑥ 그래픽 처리(RGB 채널 분리). 비트 연산은 일반 산술 연산보다 훨씬 빠르므로 성능 최적화에도 사용됩니다.

Q5. 16진수에서 A~F는 무엇을 의미하나요?

16진수는 0~15까지 16개 숫자를 사용하는 진법이지만, 한 자리에 두 자리 숫자(10~15)를 넣을 수 없어 알파벳을 빌려 사용합니다: A=10, B=11, C=12, D=13, E=14, F=15. 예를 들어 0xFF = 15 × 16 + 15 = 255입니다. 관습상 대문자(A~F)와 소문자(a~f) 모두 허용되며 같은 값을 의미합니다. CSS 색상은 대문자가 일반적이고, Python·Rust 등은 소문자를 선호합니다.

함께 쓰면 좋은 도구

🔡

글자수 세기

바이트·트위터 가중치·플랫폼 한도

🔐

Base64 인코더/디코더

텍스트·파일·JWT Base64 변환

📋

JSON 포맷터

JSON 정렬·트리·TS 변환

🎨

색상 코드 변환기

HEX·RGB·HSL 변환

🎨

CSS 단위 변환기

px·rem·em·clamp() 변환

옴의 법칙 계산기

직렬·병렬 회로 시각화