IT/컴퓨터구조

🖥️ [컴퓨터구조] 산술 연산(덧셈, 뺄셈, 곱셈, 나눗셈)

BlogFlow 2025. 3. 5. 18:00
반응형

[컴퓨터구조 목차 바로가기]

3️⃣ 컴퓨터 연산 방식

컴퓨터는 산술 연산(Arithmetic Operations) 을 수행하여 데이터를 처리합니다.

산술 연산은 덧셈(Addition), 뺄셈(Subtraction), 곱셈(Multiplication), 나눗셈(Division) 의 기본 연산으로 구성됩니다.

CPU는 산술논리연산장치(ALU, Arithmetic Logic Unit) 를 이용하여 연산을 수행하며,

각 연산은 정수(Integer) 연산과 부동소수점(Floating Point) 연산으로 나뉩니다.

이번 섹션에서는 컴퓨터가 덧셈, 뺄셈, 곱셈, 나눗셈을 수행하는 원리와 연산 방식, 그리고 CPU에서의 실제 연산 수행 과정을 자세히 살펴보겠습니다.


🔹 1. 컴퓨터에서의 산술 연산 개요

1.1 산술 연산이란?

산술 연산은 컴퓨터가 수행하는 가장 기본적인 연산으로,

프로그램의 계산 및 논리적 판단을 가능하게 하는 중요한 요소입니다.

연산 유형  설명  예제 (십진수)
덧셈 (Addition) 두 수를 더하는 연산 5 + 3 = 8
뺄셈 (Subtraction) 두 수를 빼는 연산 5 - 3 = 2
곱셈 (Multiplication) 두 수를 곱하는 연산 5 × 3 = 15
나눗셈 (Division) 두 수를 나누는 연산 6 ÷ 3 = 2

컴퓨터는 모든 연산을 2진수(Binary)로 변환하여 수행함

정수 연산과 부동소수점 연산 방식이 다름


🔹 2. 덧셈(Addition) 연산

2.1 정수 덧셈 (Integer Addition)

정수 덧셈은 이진수(Binary)에서 자릿수를 맞춰 더하는 방식으로 수행됩니다.

💡 예제 (8비트 이진수 덧셈)

  01010110  (10진수 86)
+ 00111010  (10진수 58)
------------
  10001100  (10진수 144)

  • Carry(자리 올림)이 발생할 경우 상위 비트로 전달됨
  • 오버플로우(Overflow) 발생 가능 (특히 부호 있는 정수에서 중요함)

2.2 부호 있는 정수 덧셈 (Signed Integer Addition)

컴퓨터는 부호 있는 정수(Signed Integer)를 2의 보수(Two’s Complement) 방식으로 표현합니다.

따라서 음수와 양수를 더할 때 2의 보수 연산이 필요합니다.

💡 예제: -5 + 3 (2의 보수 덧셈)

  11111011  (-5의 2의 보수 표현)
+ 00000011  (+3의 이진수 표현)
------------
  00000110  (결과: +6)

2의 보수 덧셈은 별도의 연산 없이 일반 덧셈으로 처리 가능

Carry 비트는 무시하고 결과만 해석하면 됨


🔹 3. 뺄셈(Subtraction) 연산

3.1 정수 뺄셈 (Integer Subtraction)

뺄셈 연산은 덧셈 연산을 응용하여 수행할 수 있습니다.

💡 컴퓨터는 뺄셈을 덧셈으로 변환하여 수행함

즉, 2의 보수를 사용하여 음수를 더하는 방식으로 뺄셈을 구현합니다.

💡 예제: 7 - 5 (이진수 뺄셈)

  00000111  (10진수 7)
+ 11111011  (-5의 2의 보수 표현)
------------
  00000010  (결과: 10진수 2)

2의 보수를 사용하면 덧셈과 뺄셈을 동일한 방식으로 처리할 수 있음


🔹 4. 곱셈(Multiplication) 연산

4.1 정수 곱셈 (Integer Multiplication)

곱셈은 여러 번의 덧셈 연산으로 변환하여 수행됩니다.

💡 예제: 6 × 3 (덧셈으로 표현)

6 × 3 = 6 + 6 + 6 = 18

CPU는 일반적으로 부스 알고리즘(Booth’s Algorithm)을 사용하여 빠르게 곱셈을 수행

하드웨어적으로는 시프트(Shift) 연산을 활용하여 곱셈을 최적화


4.2 부동소수점 곱셈 (Floating Point Multiplication)

부동소수점(Floating Point) 연산은 IEEE 754 표준을 따름

  • 지수(Exponent)를 덧셈
  • 가수(Mantissa)를 곱셈
  • 결과를 다시 정규화(Normalization)

💡 실제 CPU에서는 SIMD(AVX, SSE) 명령어를 사용하여 빠르게 부동소수점 곱셈을 수행


🔹 5. 나눗셈(Division) 연산

5.1 정수 나눗셈 (Integer Division)

나눗셈은 반복적인 뺄셈 또는 시프트 연산을 활용하여 수행됩니다.

💡 예제: 15 ÷ 3 (반복 뺄셈)

15 - 3 = 12
12 - 3 = 9
9 - 3 = 6
6 - 3 = 3
3 - 3 = 0  (총 5번 뺌, 결과: 5)

CPU는 하드웨어적으로 나눗셈 유닛을 사용하여 최적화

소프트웨어적으로는 시프트 연산을 이용하여 나눗셈을 구현


5.2 부동소수점 나눗셈 (Floating Point Division)

부동소수점 나눗셈은 부동소수점 곱셈의 역수를 구한 후 곱하는 방식으로 수행

💡 CPU는 역수를 미리 계산하여 반복적인 곱셈으로 빠르게 나눗셈을 수행


🔹 6. CPU에서의 산술 연산 최적화

CPU는 빠른 연산을 위해 특수한 하드웨어 회로병렬 연산 기법을 사용합니다.

산술논리연산장치(ALU, Arithmetic Logic Unit) → 기본 연산 수행

부동소수점 연산장치(FPU, Floating Point Unit) → 실수 연산 가속

SIMD 명령어(SSE, AVX) → 병렬 연산 최적화

💡 실제 사례:

  • x86 CPU는 SSE, AVX 명령어를 사용하여 부동소수점 연산을 병렬로 수행
  • ARM CPU는 NEON 엔진을 사용하여 부동소수점 연산을 최적화

✅ 마무리: 산술 연산의 핵심 정리

덧셈 & 뺄셈 → 2의 보수 연산을 활용하여 구현

곱셈 → 시프트 & 덧셈 조합으로 최적화

나눗셈 → 반복 뺄셈, 역수를 활용한 곱셈 방식 사용

CPU는 SIMD 명령어(SSE, AVX, NEON)를 사용하여 연산 속도를 최적화

반응형