arrow_back필드 노트로 돌아가기
COMPUTER SCIENCE 게시됨 5 Aug 2026

이진법, 16진법, 데이터 단위 설명

프로그래밍, 네트워킹, 포렌식 작업에 사용되는 이진법, 16진법, 데이터 단위 규칙의 실용 용어집.

hex 에디터에서 검사하는 모든 바이트, 계산하는 모든 서브넷 마스크, 도구가 보고하는 모든 파일 크기는 작은 집합의 수 체계와 단위 규칙에 의존한다. 이것을 잘못 이해하면 버퍼 크기를 잘못 판단하고, 메모리 덤프를 잘못 읽거나, 1 KB가 1000 바이트인지 1024 바이트인지에 대해 동료와 싸우게 될 것이다.

Binary: 모든 컴퓨터가 실제로 사용하는 기수

Binary는 기수 2이며, 0과 1만 있다. 단일 이진 숫자는 비트(bit)이다. 8개의 비트를 그룹화하면 바이트(byte)가 되는데, 이는 256개의 서로 다른 값(부호 없음 0~255, 또는 부호 있음 2의 보수 -128~127)을 나타낼 수 있다.

01001000을 보면 이는 십진법으로 72이고, ASCII 코드 'H'에 해당한다. 손으로 변환하는 것은 오른쪽 비트에서부터 2의 거듭제곱을 합산하는 것이다: 2^6 + 2^3 = 64 + 8 = 72. python3 -c "print(bin(72))"나 파일에 대한 xxd 같은 도구가 이를 즉시 수행하지만, 비트마스크를 역설계하거나 TCP 헤더의 플래그 값을 계산할 때는 수학을 이해하는 것이 중요하다.

Hexadecimal: 이진법의 약칭

Hex는 기수 16으로, 0-9와 A-F를 사용한다. Binary는 대규모에서 읽을 수 없고 decimal은 바이트 경계에 깔끔하게 매핑되지 않기 때문에 존재한다. 하나의 hex 숫자는 정확히 4비트를 나타내므로, 두 hex 숫자는 하나의 전체 바이트를 나타낸다. 0x00부터 0xFF까지 낭비되는 공간 없이 256개의 바이트 값을 모두 포함한다.

이것이 xxd, hexdump -C, 또는 disassembler의 메모리 뷰에서 hex dump가 기본인 이유이다. 파일의 시작 부분에서 0x4D 0x5A를 보면, 그것은 Windows PE 실행 파일을 식별하는 MZ 헤더이다. 메모리 주소, 색상 코드(#FF5733), MAC 주소, IPv6 주소는 모두 관례적으로 hex로 작성된다. 왜냐하면 기본 바이트 및 니블 구조에 깔끔하게 매핑되기 때문이다.

Hex를 십진법으로 변환: 0x4D = (4 × 16) + 13 = 77. Python에서 int('4D', 16)으로 손 계산 없이 변환할 수 있고, hex(77)로 역변환한다.

이진법, 십진법, 16진법이 실제로 만나는 곳

IP 주소는 세 가지 모두 충돌하는 좋은 예이다. 192.168.1.1 같은 IPv4 주소는 실제로 4개의 바이트이다: 이진법으로 11000000.10101000.00000001.00000001, 또는 16진법으로 C0.A8.01.01. Subnetting 수학 — 두 주소가 같은 네트워크에 있는지 알아내기 — 은 기본적으로 서브넷 마스크에 대한 이진법 AND 연산이지만, 편의상 모든 것을 점으로 구분된 십진법으로 작성한다.

Digital forensics와 malware 분석에서, 이 표현들 사이를 지속적으로 변환한다. Disassembler는 opcode를 hex로 표시하지만, CPU는 원시 이진법을 실행하고, 레지스터 값은 컨텍스트에 따라 십진법 오프셋 또는 ASCII 문자열로 해석된다. 0x41이 숫자 65와 ASCII 문자 'A' 모두라는 것을 아는 것은 수동 분석 속도를 상당히 높이는 종류의 패턴 인식이다.

Data units: 1000 대 1024 문제

이것이 사람들을 실제로 태운다. Storage 제조업체, 파일시스템, 운영 체제는 항상 무엇이

AI 도움을 받아 작성했으며, Michal Pilch(CISSP), Korra Studio에서 검토 및 게시했어요.

더 나아가고 싶으신가요?

이것은 Korra Studio 나레지베이스의 한 노트예요. 플랫폼은 모든 주제를 1-to-1 멘토링과 함께 제공해요.

무료로 시작하기arrow_forward