Integers & Floating-point in Arithmetic operation 6강
Arithmetic operations of integers, Floating-point arithmetic in Computer Architecture 정수와 소수점 산술연산, 컴퓨터구조
Study date: 07/04/2024
Goals: 정수의 산술 연산을 설명할 수 있다. 부동소수점(Floating-point arithmetic) 수의 표현 방법을 설명할 수 있다. 부동소수점 산술 연산을 설명할 수 있다.
정수의 산술 연산(Arithmetic operations of integers)
덧셈(Addition): 두 개의 정수를 더한값
뺄셈(Subtraction): 한 정수에서 다른 정수를 빼는 연산
곱셈(Multiplication): 두 개의 정수를 곱한 값
나눗셈(Division): 한 정수를 다른 정수로 나누는 연산 몫을 반환할 수도 있고, 실수로 반환할 수도 있다. 예를 들어,
10 / 3의 결과는3이나3.3333...등이 될 수 있다.나머지(Modulo): 한 정수를 다른 정수로 나눈 후의 나머지를 반환하는 연산. 예를 들어,
10 % 3의 결과는1이다.증가(Increment)와 감소(Decrement): 한 정수를 1씩 증가시키거나 감소시키는 연산입니다. 예를 들어,
x++는x = x + 1과 같으며,x--는x = x - 1과 같다.
이러한 산술 연산은 컴퓨터 프로그래밍에서 매우 일반적으로 사용되며, 거의 모든 프로그래밍 언어에서 지원된다.
덧셈(Addition): Parallel adder, Addition overflow
정수의 덧셈을 수행하는 가장 일반적인 방법 중 하나는 병렬 가산기(parallel adder)이다.
병렬 가산기(parallel adder)는 덧셈을 수행하는 하드웨어 모듈이고 비트 수만큼의 전가산기(full adder)들로 구성한다.
덧셈 연산 결과에 따라 해당 조건 플래그들(condition flags)을 세트한다. C플래그: 올림수(carry) S플래그: 부호(sign) Z플래그: 0(zero) V플래그: 오버플로우(overflow)
덧셈 오버플로우(Addition Overflow)는 덧셈 연산을 수행할 때 발생할 수 있는 현상 중 하나로, 정수의 덧셈 결과가 해당 데이터 타입의 표현 범위를 초과할 때 발생한다. 오버플로우를 감지하고 처리하는 것은 프로그래머의 책임이며, 오버플로우 발생 시에는 일반적으로 조건 플래그(condition flags)를 확인하여 오버플로우를 처리하는 논리를 추가적으로 구현해야 한다.
검출방법: V = C3 + C4
뺄셈(Subtraction)
덧셈을 이용하여 수행한다.
뺄샘 오버플로우(subtraction overflow): 뺄셈 결과가 그 범위를 초과하여 결과값이 틀리게 되는 상태이다.
검출 방법은 덧셈과 동일하다
곱셈(Multiplication)
- 각 비트에 대하여 부분 적(partial product)으로 계산한다. 부분 적들을 모두 더하여 최종 결과를 얻는다.
2의 보수 곱셈(Two's complement multiplication)
- Booth 알고리즘(Booth's algorithm) 사용한다.
나눗셈(Division)
2의 보수 나눗셈과 부호 없는 2진 나눗셈으로 나누어진다.
2의 보수 나눗셈: A ÷ B = q ····· r 단, A : 피제수(dividend), B : 제수(divisor) q : 몫(quotient) r : 나머지 수(remainder)
부호 없는 2진 나눗셈 (아래의 표 참조)
부동소수점 산술연산(Floating-point arithmetic)
부동소수점(floating-point arithmetic)이란? 소수점 의 위치를 이동시킬 수 있는 수 표현 방법이다.
부동소수점을 사용하는 이유? 우리가 일상생활에서 사용하는 십진법은 0~9까지의 10개의 숫자를 이용해 수를 표현한다. 하지만 컴퓨터에서는 2진법을 기반으로 하여 처리하기 때문에 보다 복잡한 계산이 필요하다. 이때 활용되는 방법 중 하나가 바로 부동소수점 방식이다.
IEEE 754 표준 부동소수점 수의 형식: 부동소수점 수의 표현 방식의 통일을 위하여 미국전기전 자공학회(IEEE)에서 정의한 표준
부동소수점 덧셈과 뺄셈은 지수들이 일치되도록 조정(alignment)한 후 가수들 간의 연산 (더하기 혹은 빼기)을 수행하여 결과를 정규화(normalization)한다.
부동소수점 2진수 곱셈과 나눗셈은 가수들과 지수들을 따로 연산한 후 결과 값을 정규화한다.
부동소수점 연산 과정에서 발생 가능한 문제들로서는 지수 오버플로우(exponent overflow), 지수 언더플로우(exponent underflow), 가수 언더플로우(mantissa underflow), 가수 오버플로우(mantissa overflow) 등이 있다.


