산술 연산
정수의 산술 연산
1. 보수화
2. 덧셈
- 두 수를 더하고, 만약 올림수가 발생하면 버림
(올림수란 4자리 수 더하기에서 5자리에 값이 생기면 5자리 수를 올림수로 표현.)->버린다.
- 덧셈을 수행하는 하드웨어 (병렬 가산기)
-> 비트 수만큼의 전가산기(FA)들로 구성 -> 덧셈 연산 결과에 따라 해당 조건 플래그를 세트
- C플래그(올림수), S플래그(부호), Z플래그(0), V플래그(오버플로우) 존재
- 덧셈 오버플로우 : 덧셈의 결과가 범위를 초과 -> 결과값이 틀리게 되는 상태
-> 두 올림수 간의 exclusive-OR을 이용(검출 방법)
3. 뺄셈
A-(+B) = A + (-B) 즉, 덧셈을 이용해 사용
- 4비트 병렬 가감산기 -> 4비트 데이터 간의 덧셈 및 뺄셈을 모두 수행하는 조합 회로
- 제어신호 M = 0 : 덧셈, M =1 : 뺄셈(입력 B의 비트 들을 반전하고, 최하위 올림수로서 M을 입력)
- 뺄셈 오버플로우 : 뺄셈의 결과가 범위를 초과하여 결과값을 틀리게 되는 상태
-> 검출 방법은 덧셈과 동일
4. 곱셈
부호 없는 정수의 곱셈
- 각 비트에 대하여 부분 적 계산
- 부분 적들을 모두 더하여 최종 결과를 얻는다..
부호 없는 정수 승산기의 하드웨어 구성도
- M 레지스터 : 피승수 저장
- Q 레지스터 : 승수 저장
- 두 배 길이의 결과값은 A레지스터와 Q레지스터에 저장
2의 보수들 간의 곱셈
- Booth 알고리즘 사용
- 부호 없는 정수 승산기에서 M 레지스터와 병렬 가산기 사이 보수기 추가
- Q레지스터 우측에 Q-1이라는 1-비트 레지스터 추가하고, 출력을 Q0와 함께 제어 회로로 입력.
5. 나눗셈
A%B=q ... r // A 피제수 B 제수 Q 몫 R 나머지 수
6. 증가
7. 감소
부동소수점 표현 : 소수점의 위치를 이동시킬 수 있는 수 표현 방법 -> 수 표현 범위 확대
부동소수점 수의 일반적인 형태
N=(-1)^s M * B^E
2진 부동소수점 수
-> 단일 정밀도 부동소수점 수 32비트 float
S(부호) : 1 E(지수) : 8 M(가수) : 23
지수 필드의 비트 수 증가 -> 표현 가능한 수의 범위 확장
가수 필드의 비트 수 증가 -> 정밀도 증가
표현가능한 수 크기 범위 1.47*10^-39~1.7*10^38
-> 복수 정밀도 부동소수점 수 64비트 double
정규화 된 표현 -> 0.1bbbbbbb*2^E
IEEE 754
바이어스는 127
소수점 좌측의 1은 제외
부동소수점 산술 연산
- 덧셈, 뺄셈
1. 지수들이 일치되도록 조정
2. 가수들 간의 연산 수행
3. 결과를 정규화
-> 이를 파이프라이닝을 하면 효율적이다.
-> 대부분의 모든 슈퍼컴퓨터들에서 채택
- 곱셈
1. 가수들을 곱함
2. 지수들을 곱함
3. 결과값을 정규화
- 나눗셈
1. 가수들을 나눔
2. 피제수의 지수에서 제술의 지수를 뺀다.
3. 결과값을 정규화
부동소수점 연산 과정에서 발생 가능한 문제
1. 가수 언더플로우 -> 반올림 적용으로 해결
2. 가수 오버플로우 -> 재조정 과정을 통하여 정규화
3. 지수 오버플로우 -> +무한 또는 -무한으로 세트
4. 지수 언더플로우 - > 0으로 세트
'학교수업' 카테고리의 다른 글
윈도우즈 프로그래밍 5주차 (0) | 2022.04.16 |
---|---|
윈도우즈 프로그래밍 6주차 (0) | 2022.04.16 |
인공지능개론 6주차 (0) | 2022.04.13 |
컴퓨터그래픽스기초 6주차 (0) | 2022.04.13 |
게임공학개론 6주차 (0) | 2022.04.11 |