누구나 쉽게 배우는 진수 - 2. 왜 다양한 진수가 필요할까요?

2025. 3. 28. 12:29소프트웨어/기초

 

✅ 2. 왜 다양한 진수가 필요할까요?


📌 컴퓨터는 왜 2진수만 사용할까요?

컴퓨터는 전기를 이용해 작동하는 기계입니다.
전기가 흐르면(ON) → 1,
전기가 흐르지 않으면(OFF) → 0
이렇게 단순한 두 가지 상태만으로 정보를 처리합니다.

따라서 컴퓨터 내부에서는 모든 데이터가 2진수(Binary)로 표현됩니다.
숫자, 문자, 이미지, 소리, 명령어 등도 전부 0과 1의 조합으로 구성되어 있는 것이죠.

🔢 예시: 십진수 10의 2진수 표현

  • 일반 2진수 변환: 10₁₀ = 1010₂
  • 8비트 표현 (컴퓨터 내부 저장 형태): 00001010
  • ※ 앞의 0은 비트를 맞추기 위한 보조 자리수로, 실제 숫자 값에는 영향을 주지 않아요.

📌 그런데 왜 8진수와 16진수가 필요할까요?

2진수는 길고, 사람이 읽기에 불편합니다.

예를 들어 2진수 101011111001을 보면, 무엇을 의미하는지 파악하기 어렵죠.
이런 문제를 해결하기 위해 2진수를 간결하게 표현하는 방식으로 8진수16진수가 사용됩니다.


📘 8진수(Octal)의 필요성과 활용

  • 2진수를 3비트씩 묶어 표현 (2³ = 8)
  • 예: 110100₂ → 110 100 → 6 4 → 8진수 64₈

✔️ 실제 활용:

  • Linux/Unix 파일 권한 설정에서 자주 사용됨
    • 예: chmod 755
      • 7 = 111, 5 = 101 → 읽기/쓰기/실행 권한 조합을 2진수로 표현한 것

📗 16진수(Hexadecimal)의 필요성과 활용

  • 2진수를 4비트씩 묶어 표현 (2⁴ = 16)
  • 예: 10101111₂ → 1010 1111 → A F → 16진수 AF₁₆

✔️ 실제 활용:

  • 웹 색상 코드: #FF0000 = 빨간색
  • 메모리 주소: 0x7ffeefbff5c0
  • 디버깅 시 바이너리 데이터 확인용

🧠 왜 진수 변환을 배워야 하나요?

진수 변환은 단순한 계산이 아닙니다.
컴퓨터의 작동 방식과 프로그래밍 원리를 이해하기 위한 필수 지식입니다.

💡 진수 변환의 실용성

진수 사용 분야 예시
2진수 컴퓨터 내부 연산 01010101
8진수 시스템 설정 chmod 755
16진수 색상 코드, 주소, 디버깅 #00FF00, 0xFF

🔧 진수 이해의 장점

  • 비트·바이트 구조, 메모리 구조에 대한 이해 ↑
  • 프로그램 디버깅 속도 ↑
  • 자료구조/알고리즘/네트워크 등 CS 기초 역량 강화

🔠 프로그래밍 언어에서의 진수 표기법

진수 표기 예시 (Python 기준) 설명
2진수 0b1010 앞에 0b 붙임
8진수 0o755 앞에 0o 붙임
16진수 0xFF 앞에 0x 붙임

💡 JavaScript, C, Java 등 다른 언어들도 유사한 방식으로 표기합니다.


📝 간단한 연습 문제

Q. 2진수 1101을 10진수와 16진수로 바꿔보세요.

  • 10진수 변환:
    • 1101₂ = (1×8) + (1×4) + (0×2) + (1×1) = 13₁₀
  • 16진수 변환:
    1101 → 앞에 0 추가해서 00001101 → 0xD

📊 시각 자료: 진수 간 변환 도식 (텍스트 버전)

     2진수          →      8진수         →     16진수
 ─────────────    ──────────────     ──────────────
 000               →     0            -     
 0000              -                  →    0
110100             →   64₈           →   34₁₆
(3비트 단위)          (2³ = 8)           (4비트 단위)

💡 핵심:

  • 8진수3비트씩 묶음
  • 16진수4비트씩 묶음

📘 요약 정리

항목 내용
2진수 사용 이유 전기 신호 표현에 적합 (ON/OFF)
8·16진수의 등장 이유 2진수를 간결하고 읽기 쉽게 표현
진수 변환의 목적 컴퓨터 구조 및 프로그래밍 이해 필수
표기법 0b (2진수), 0o (8진수), 0x (16진수)