2진수, 8진수, 16진수 이해하기: 진법 변환과 컴퓨터 기초

10진수, 2진수, 8진수, 16진수의 작동 원리와 컴퓨터가 2진수를 사용하는 이유, 그리고 각 진법 간의 상호 변환법을 상세히 알아봅니다.

인간이 10진수(10을 밑으로 하는 진법)를 사용하는 이유는 손가락이 열 개이기 때문이며, 컴퓨터가 2진수(2를 밑으로 하는 진법)를 사용하는 이유는 트랜지스터의 물리적 상태가 켜짐(ON)과 꺼짐(OFF) 두 가지만 존재하기 때문입니다. 진법에 대한 이해는 프로그래밍, CSS 색상 코드, 디지털 회로 설계의 기초가 됩니다.

널리 쓰이는 네 가지 주요 진법

기수 진법명 사용 숫자 주 활용 분야
10 10진수 (Decimal) 0–9 일상적인 수학 계산
2 2진수 (Binary) 0–1 컴퓨터 하드웨어, 논리 회로
8 8진수 (Octal) 0–7 유닉스 파일 권한 설정
16 16진수 (Hexadecimal) 0–9, A–F 메모리 주소, 웹 색상 코드

2진수의 기본 원리

2진수는 오직 0과 1만을 사용합니다. 각 자릿수는 2의 거듭제곱(1, 2, 4, 8, 16, 32, 64, 128)을 나타냅니다. 2진수 11111111은 10진수로 255(128+64+32+16+8+4+2+1)입니다.

계산 예제: 10진수 255를 2진수로 변환하기. 2로 계속 나누어 나머지를 역순으로 읽습니다:

  • 255 ÷ 2 = 127 나머지 1
  • 127 ÷ 2 = 63 나머지 1
  • 63 ÷ 2 = 31 나머지 1
  • 31 ÷ 2 = 15 나머지 1
  • 15 ÷ 2 = 7 나머지 1
  • 7 ÷ 2 = 3 나머지 1
  • 3 ÷ 2 = 1 나머지 1
  • 1 ÷ 2 = 0 나머지 1

결과: 11111111. base converter에서 직접 검증할 수 있습니다.

일상 속 16진수: 웹 색상 코드

웹의 HTML/CSS 색상은 16진수를 사용합니다. #FF5733은 빨강=FF(255), 초록=57(87), 파랑=33(51)을 뜻합니다. 16진수 한 자리는 2진수 4비트와 완벽하게 대응되므로, 1바이트(0255)를 두 자리의 16진수(00FF)로 깔끔하게 압축해 표현할 수 있습니다.

프로그래머가 16진수를 선호하는 이유

끝없이 이어지는 1과 0의 2진수 나열보다 훨씬 간결하고, 바이트 단위의 메모리 주소 및 레지스터 값을 직관적으로 식별할 수 있기 때문입니다.

자주 묻는 질문

왜 프로그래머들은 16진수를 즐겨 쓰나요? 16진수 1글자가 2진수 4비트와 정확히 일치하여 컴퓨터 메모리 단위를 가독성 높게 표기할 수 있기 때문입니다.

코드에 나오는 0x는 무슨 뜻인가요? 0x 접두사는 뒤따르는 숫자가 16진수임을 나타냅니다(예: 0xFF는 10진수 255).

2진수를 빠르게 읽는 방법은 무엇인가요? 오른쪽부터 4자리씩 묶어서 16진수로 변환하면 쉽게 읽을 수 있습니다. 2의 거듭제곱에 대한 원리는 exponents explained를 참조하세요.