Skip to content

Commit 3000f08

Browse files
committed
docs: 컴퓨터 구조론 04
- 컴퓨터 산술과 논리연산
1 parent 9c809c1 commit 3000f08

File tree

1 file changed

+117
-0
lines changed
  • docs/컴퓨터-구조론

1 file changed

+117
-0
lines changed

docs/컴퓨터-구조론/04.md

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
---
2+
sidebar_position: 4
3+
title: 컴퓨터 산술과 논리연산
4+
---
5+
6+
## 1. 개요
7+
8+
컴퓨터의 가장 기본적인 기능은 수치에 대한 산술적 계산과 논리 데이터에 대한 연산을 수행하는 것입니다. 이는 정수(integer) 및 부동소수점 수(floating-point number)의 연산과 0과 1의 이진 데이터(binary data) 연산으로 나눌 수 있습니다.
9+
10+
이러한 연산은
11+
12+
### **산술논리연산장치(ALU: Arithmetic Logic Unit)**
13+
14+
에서 담당합니다.
15+
16+
---
17+
18+
## 2. ALU의 구성 요소
19+
20+
ALU는 다음과 같은 주요 구성 요소로 이루어져 있습니다:
21+
22+
- **산술 연산 장치:** 덧셈, 뺄셈, 곱셈, 나눗셈 등 산술 연산 수행
23+
- **논리 연산 장치:** AND, OR, XOR, NOT 등 논리 연산 수행
24+
- **시프트 레지스터 (shift register):** 비트들을 좌/우로 이동시키는 레지스터
25+
- **보수기 (complementer):** 2진 데이터를 2의 보수로 변환하여 음수 표현/뺄셈 처리
26+
- **상태 레지스터 (status register):** 연산 결과의 상태 플래그(C, S, Z, V 등) 저장
27+
28+
---
29+
30+
## 3. 정수의 표현
31+
32+
컴퓨터는 2진수 체계를 사용하여 수를 표현합니다. 정수 표현 방식에는 여러 가지가 있습니다.
33+
34+
- **부호 없는 정수 표현:** 모든 비트를 수의 크기를 나타내는 데 사용
35+
- 예: 8비트 2진수 `00111001 = 57`, `11111111 = 255`
36+
- 일반식: `$A = a_{n-1} \times 2^{n-1} + a_{n-2} \times 2^{n-2} + ... + a_1 \times 2^1 + a_0 \times 2^0$`
37+
- **음수 표현 방법:**
38+
- **부호화-크기 표현:** 맨 좌측 비트는 부호, 나머지는 크기. 0=양수, 1=음수. 0에 대한 표현이 두 개(+0, -0)
39+
- 최상위 비트가 0이면 양수, 1이면 음수를 나타냅니다.
40+
- 단점: "덧셈과 뺄셈을 수행하기 위해서는 부호 비트와 크기를 비교하여 처리하는 복잡한 과정이 필요"하며, "0에 대한 표현이 두 개 존재함(+0, -0)"하여 비효율적입니다.
41+
- **1의 보수 표현:** 모든 비트 반전(0↔1)로 음수 표현
42+
- **2의 보수 표현:** 모든 비트 반전 후 1 더함. 뺄셈을 덧셈으로 변환 가능, 0의 표현이 하나라 가장 널리 사용
43+
- n비트 2의 보수 범위: `$-(2^{n-1})$ ~ $+(2^{n-1}-1)$` (예: 8비트 → -128 ~ +127)
44+
- **비트 확장(bit extension):** 2의 보수 표현에서 상위 비트는 부호 비트와 같은 값으로 세트 (**부호-비트 확장**)
45+
46+
---
47+
48+
## 4. 논리 연산
49+
50+
컴퓨터는 이진 데이터를 대상으로 다양한 논리 연산을 수행합니다.
51+
52+
- **NOT:** 모든 비트 반전 (0→1, 1→0)
53+
- **AND:** 두 데이터의 대응 비트 AND
54+
- **OR:** 두 데이터의 대응 비트 OR
55+
- **XOR:** 두 데이터의 대응 비트 exclusive-OR
56+
57+
**특정 용도의 논리 연산:**
58+
59+
- **선택적-세트:** B의 1인 위치에 대응하는 A의 비트를 1로 세트 (OR)
60+
- **선택적-보수:** B의 1인 위치에 대응하는 A의 비트를 보수로 변환 (XOR)
61+
- **마스크(mask):** B의 0인 위치에 대응하는 A의 비트를 0으로 (AND)
62+
- **삽입(insert):** 특정 위치에 새로운 비트 삽입 (AND 후 OR)
63+
- **비교(compare):** A와 B를 XOR, 모두 같으면 Z 플래그 1
64+
65+
---
66+
67+
## 5. 시프트(Shift) 연산
68+
69+
시프트 연산은 레지스터 내 데이터 비트들을 이동시키는 연산입니다.
70+
71+
- **논리적 시프트 (Logical Shift):**
72+
- **좌측 시프트:** 모든 비트 좌측 이동, 최하위 비트에 0 삽입, 최상위 비트 버림
73+
- **우측 시프트:** 모든 비트 우측 이동, 최상위 비트에 0 삽입, 최하위 비트 버림
74+
- **순환 시프트 (Circular Shift, Rotate):**
75+
- **좌측:** 최상위 비트 → 최하위 비트
76+
- **우측:** 최하위 비트 → 최상위 비트
77+
- **산술적 시프트 (Arithmetic Shift):**
78+
- **좌측:** 부호 비트 제외 좌측 이동, 곱셈에 활용
79+
- **우측:** 부호 비트 유지, 우측 이동, 나눗셈에 활용
80+
- **C 플래그 포함 시프트:** 캐리(C) 플래그 포함 이동 (SHLC, SHRC, RLC, RRC 등)
81+
82+
---
83+
84+
## 6. 정수의 산술 연산
85+
86+
컴퓨터의 기본 산술 연산은 다음과 같습니다.
87+
88+
- **보수화 (2의 보수 변환):** A → A + 1 (A의 모든 비트 반전 후 1 더하기)
89+
- **덧셈:** A + B
90+
- **뺄셈:** A - B (2의 보수로 변환 후 덧셈)
91+
- **곱셈:** A × B
92+
- **나눗셈:** A ÷ B
93+
- **증가 (increment):** A + 1
94+
- **감소 (decrement):** A - 1
95+
96+
### 덧셈 연산
97+
98+
- 2의 보수로 표현된 수들의 덧셈은 "두 수를 더하고, 올림수 발생 시 버림"으로 수행
99+
- **병렬 가산기 (Parallel Adder):** 비트 수만큼의 전가산기(full-adder)로 구성
100+
- **상태 플래그:** Carry(올림수), Sign(부호), Zero(0), Overflow(오버플로우)
101+
- **덧셈 오버플로우:** 결과가 범위를 초과할 때 발생, 두 올림수의 XOR로 검출 $V = C_4 \oplus C_3$
102+
103+
### 뺄셈 연산
104+
105+
- 뺄셈은 "덧셈을 이용해 수행" (A - B = A + (-B), B를 2의 보수로 변환 후 더함)
106+
- **병렬 가감산기 (Parallel Adder-Subtracter):** 덧셈/뺄셈 모두 수행, 제어 신호 M으로 연산 선택 (M=0: 덧셈, M=1: 뺄셈)
107+
- **뺄셈 오버플로우:** 덧셈 오버플로우와 동일하게 검출 $V = C_4 \oplus C_3$
108+
109+
---
110+
111+
## 요약
112+
113+
컴퓨터 산술 및 논리 연산은 CPU의 근본적인 기능입니다. 수치에 대한 산술 연산(정수/부동소수점)과 2진 데이터에 대한 논리 연산 모두 ALU에서 수행됩니다.
114+
115+
- **2의 보수 표현**은 효율적인 음수 표현과 뺄셈 처리를 가능하게 하여 현대 컴퓨터에서 널리 사용
116+
- **시프트 연산**과 다양한 논리 연산은 데이터 처리의 핵심 역할
117+
- **ALU 구성:** 산술 연산 장치, 논리 연산 장치, 시프트 레지스터, 보수기, 상태 레지스터 등

0 commit comments

Comments
 (0)