2025-1 컴퓨터구조 (Computer Number System)

JayainHUFS·2025년 4월 23일
post-thumbnail

  • 아래의 포스팅은 한국외국어대학교 컴퓨터공학부 Mohsen Ali Alawami 교수님의 [컴퓨터구조] 강의를 기반으로 작성했습니다.
  • 또한, 상업적 의도는 전무하며, 단순 학습 용도의 교재 자료를 첨부함을 알립니다.

Intro to Number System

(1) 숫자 체계(Number System)란?

숫자를 표현하고 저장하는 규칙과 기호 체계
컴퓨터와 수학에서 숫자가 어떻게 쓰이고, 저장되고, 처리되는지 정의
컴퓨터는 모든 데이터를 이진수(Binary digits) 형태로 저장

(2) 데이터 표현 (Data Representation)

현실 세계 대부분의 데이터는 연속적인 아날로그(Analog) 형태
예: 온도, 속도, 질량 등

컴퓨터는 이를 디지털(Digital) 값, 즉 이진수(bit) 로 변환하여 저장
따라서 모든 아날로그 데이터 -> 디지털 변환 필요

(3) 자리수 표기법 (Positional Notation)

숫자는 진수(base) 에 따라 각 자리값이 달라짐
예: aₙ₋₁ aₙ₋₂ ... a₁ a₀.a₋₁ a₋₂ ... a₋ₘ
가장 왼쪽: 최상위 자리수 (MSD)
가장 오른쪽: 최하위 자리수 (LSD)

(4) 주요 진법 비교표 (Common Number Systems)

진법 (System)기수 (Base)사용 기호 (Symbols)사람이 사용?컴퓨터에서 사용?
Decimal (10진수)100, 1, 2, ..., 9✅ Yes❌ No
Binary (2진수)20, 1❌ No✅ Yes
Octal (8진수)80, 1, ..., 7❌ No❌ No
Hexadecimal (16진수)160~9, A~F (A=10 ~ F=15)❌ No❌ No

(5) 각 진수 예제

10진수 : 352₁₀ = 3×10² + 5×10¹ + 2×10⁰
2진수 : 1011₂ = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 11
8진수 : 745₈ = 7×8² + 4×8¹ + 5×8⁰ = 485
16진수 : 2F₁₆ = 2×16¹ + 15×16⁰ = 47

(6) 숫자 체계가 중요한 이유

2진수(Binary): 디지털 회로에서 사용됨 (전기 신호 ON=1, OFF=0)
8진수/16진수: 긴 이진수를 짧게(shorthand) 표현하는 방식
10진수: 사용자 인터페이스에서 사용 (사람이 가장 익숙함)

(7) 자주 사용하는 10진수 단위

지수 (Power)접두어 (Prefix)기호 (Symbol)값 (Value)
10⁻¹²picop0.000000000001
10⁻⁹nanon0.000000001
10⁻⁶microμ0.000001
10⁻³millim0.001
10³kilok1,000
10⁶megaM1,000,000
10⁹gigaG1,000,000,000
10¹²teraT1,000,000,000,000

(8) 2진수 기준 단위 + 메모리 단위 정리

  • nibble = 4 bits

  • byte = 8 bits

  • word = 2 bytes = 16 bits

  • double word = 4 bytes = 32 bits

  • long word = 8 bytes = 64 bits

  • 1K (kilo) = 2¹⁰ = 1024

  • 1M (mega) = 2²⁰ = 1,048,576

  • 1G (giga) = 2³⁰ = 1,073,741,824

(9) 2진수 기준 단위표

지수 (Power)접두어 (Prefix)기호 (Symbol)값 (Value)
2¹⁰kilok1,024
2²⁰megaM1,048,576
2³⁰gigaG1,073,741,824

Conversion Among Bases


Decimal

Decimal -> Binary

2로 나눠가며 나머지를 저장

Decimal -> Octal

8로 나눠가며 나머지를 저장

Decimal -> Hexadecimal

16으로 나눠가며 나머지를 저장


Binary

Binary -> Decimal

각 자리 수에 2ⁿ을 곱해서 더하기

Binary -> Octal

3자리씩 끊어서 8진수로 변환

Binary -> Hexadecimal

4자리씩 끊어서 16진수로 변환


Octal

Octal -> Decimal

각 자리수에 8ⁿ을 곱해서 더하기

Octal -> Binary

각 숫자를 3자리 이진수로 치환

Octal -> Hexadecimal (특이)

Oct → Binary → Hex 로 중간에 Binary 거치기 (권장 경로)


Hexadecimal

Hexadecimal -> Decimal

각 자리수에 16ⁿ을 곱해서 더하기

Hexadecimal -> Binary

각 숫자를 4자리 이진수로 치환

Hexadecimal -> Octa (특이)

Hex → Binary → Octal 로 변환 (중간에 Binary 거치기)


Arithmetic Operations

이진수 덧셈 (Binary Addition)

n비트 값 두 개를 자리별로 더함
자리 올림(carry) 발생 시 다음 자리로 전파

이진수 뺄셈 (Binary Subtraction)

n비트 값 두 개를 뺄셈
자리 차용(borrow) 규칙 적용 (10₂ - 1 = 1, borrow 발생)
10진수 뺄셈과 유사하나 2진수 기준으로 진행

이진수 곱셈 (Binary Multiplication)

10진수 곱셈과 유사한 방식 사용
각 자리 곱하고, 자릿수만큼 shift 후 모두 더함


Fractions

Binary → Decimal (소수 포함)

이진수 소수점 오른쪽 자리는 2의 음수 제곱
각 자리수에 대해 비트 × 2^(-자리) 계산 후 합산

Decimal → Binary (소수 포함)

정수 부분은 2로 나누어 몫/나머지를 사용해 변환
소수 부분은 2를 곱해 정수부만 따로 저장하고 나머지 계속 곱하기


음수 표현 in Binary (1의 보수 / 2의 보수)

부호 표현 방식 (Signed Binary)

이진수에서 음수를 표현하려면 부호(Signed) 방식 필요

방법 2가지 :
1의 보수 (One’s Complement)
2의 보수 (Two’s Complement) -> 실제 사용됨

MSB(Most Significant Bit, 최상위 비트) 사용 :
0 -> 양수
1 -> 음수

One’s Complement (1의 보수)

모든 비트를 반전 (1 → 0, 0 → 1)

예시 (4비트 기준):

+5 = 0101
-5 = 1010 (모든 비트 반전)

문제점:

0이 두 개로 표현됨
0000 = +0
1111 = -0

계산 비효율, 사용하지 않음

Two’s Complement (2의 보수)

1의 보수 후, 1을 더함
예시 (4비트 기준):
+5 = 0101
-5 = 1011 (0101 -> 1010 -> 1011)

간단 요령:
(1) 오른쪽부터 첫 번째 1까지는 그대로 유지
(2) 그 왼쪽 비트는 모두 반전

Solving the Arithmetic Problem

2의 보수를 이용한 이진수 뺄셈

개념 요약
A - B는 → A + (-B) 로 처리함
-B는 B의 2의 보수와 같음

따라서 다음 두 단계로 처리:
(1) B의 2의 보수를 구한다
(2) A + (-B)를 수행한다

예제1 (양수 결과)

예제2 (음수 결과)


profile
"REAL" 밑바닥부터 시작하는 데이터분석

0개의 댓글