데이터

제로베이스 데이터사이언스 스쿨 - Part 03. 기초 수학-05

Leah (리아) 2025. 10. 22. 15:45
반응형

Chapter 01. 기초 수학

 

진법과 진법 변환 (Number Systems & Conversion)

 

1. 진법이란?

  • 정의:
    진법이란, “숫자를 나타낼 때 사용하는 수의 개수(기수, base)”에 따라 수를 표현하는 방법이다.
진법 사용하는 숫자 예시
2진법 0, 1 컴퓨터 내부의 데이터 표현
8진법 0~7 초기 시스템 코드, 권한 표현 등
10진법 0~9 우리가 일상에서 사용하는 일반적인 수 체계
16진법 0~9, A~F 메모리 주소, 색상 코드(예: #FF9900)

💡 진법의 핵심: “어떤 기수(base) 를 기준으로 자릿값이 커지는가?”


2. 10진수를 다른 진수로 변환

  • 원리:
    나누기 연산을 반복하여 나머지를 뒤집어 읽으면 변환된 수가 된다.
변환 예시 결과
10진수 → 2진수 25 ÷ 2 → 나머지 11001 11001₂
10진수 → 8진수 25 ÷ 8 → 나머지 31 31₈
10진수 → 16진수 25 ÷ 16 → 나머지 19 19₁₆

💡 16진법에서는 10~15를 A~F로 표현 (10=A, 11=B, ..., 15=F)


3. 다른 진수를 10진수로 변환

  • 원리:
    각 자리의 숫자 × (기수의 거듭제곱)의 합
변환 계산 결과
2진수 11001 (1×2⁴) + (1×2³) + (0×2²) + (0×2¹) + (1×2⁰) 25₁₀
8진수 31 (3×8¹) + (1×8⁰) 25₁₀
16진수 19 (1×16¹) + (9×16⁰) 25₁₀

4. 2진수 ↔ 8진수 / 16진수 변환

  • 규칙적 변환법
    • 2진수 → 8진수: 3자리씩 끊어서 변환
    • 2진수 → 16진수: 4자리씩 끊어서 변환
예시
2진수 1010100 → 8진수 124
2진수 1010100 → 16진수 54

 

💡 2진수에서 8진수·16진수로의 변환은 자릿수 규칙으로 쉽게 처리 가능


5. 파이썬으로 진법 변환하기

파이썬에서는 내장 함수를 통해 간단히 진법 변환을 할 수 있다.

(1) 10진수를 다른 진수로 변환

num = 25
print(bin(num))  # 2진수: 0b11001
print(oct(num))  # 8진수: 0o31
print(hex(num))  # 16진수: 0x19

➜ bin(), oct(), hex() 는 문자열 형태의 결과를 반환한다.

(2) format() 함수 활용

num = 25
print(format(num, 'b'))   # '11001'
print(format(num, 'o'))   # '31'
print(format(num, 'x'))   # '19'

➜ 접두어(0b, 0o, 0x)를 제거하고 순수한 값만 출력할 때 유용.


6. X진수를 10진수로 변환

print(int('11001', 2))  # 25
print(int('31', 8))     # 25
print(int('19', 16))    # 25​

➜ int(문자열, base) 구조로, 두 번째 인수에 기수를 지정하면 10진수로 변환된다.

 

 

* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.


 

💡 생각 정리

이번 강의에서는 수 체계의 원리와 컴퓨터적 사고의 연결을 배웠다.
특히 진법은 단순한 계산이 아니라, 컴퓨터가 데이터를 어떻게 저장하고 처리하는지 이해하는 기초 언어라는 점이 인상적이었다.

직접 나눗셈으로 진법을 변환해보면

  • 각 자리의 값이 어떻게 “기수에 따라” 커지는지,
  • 이진수와 십육진수가 왜 프로그램 내부에서 효율적인지
    직관적으로 이해할 수 있었다.

파이썬 내장 함수를 사용하면, 이 복잡한 과정을 손쉽게 자동화할 수 있다는 점에서 “수학적 사고와 프로그래밍의 융합”을 실감할 수 있었다.


🚀 적용점

  • 실무 응용:
    • 웹 개발에서 16진수 색상 코드(#FFAA00) 이해 및 변환
    • 시스템/보안 분야에서 2진수·16진수 주소 연산
    • 하드웨어 제어나 네트워크 프로토콜 분석 시 진법 변환 활용
  • 프로그래밍 응용:
    • int(값, base) 와 format() 조합으로 자유로운 진법 변환 구현
    • 입력값의 진법을 자동 감지해 변환하는 함수 만들기
    • 이진수 계산(AND, OR, XOR) 실습을 통해 비트 연산 이해 확장

👉 이번 주제는 “컴퓨터 사고력의 기초”로,
단순한 수학 개념이 실제 프로그래밍 논리와 밀접하게 연결된다는 점을 깨닫게 해줬다.

반응형