오래 못 할 짓 하지 않기
[ 컴퓨터 구조 ] 13. Floating Point number 2 본문
Single-Precision 에서 숫자의 범위를 본다면
( * Exponents 에서 00..00이랑 11..11은 특정한 목적에 따라 사용함 )
- 가장 작은 값
● Exponent 는 00000001부터 가능하므로, 1 - 127 = -126
● Fraction : 0000..00 일 때 가장 작음
- 가장 큰 값
● Exponent 는 11111110부터 가능하므로, 254 - 127 = 127
● Fraction : 111..11 일 때 가장 큼
[ 생각해볼 것 1 ]
만약 32비트 모두가 0이면?
-> 그냥 숫자 0을 나타내는 것이다.
** 1.0 * 2^-127로 오해하지 않기!
[ 생각해볼 것 2 ]
Underflow : 큰 숫자 말고, 작디 작은 숫자는 큰 정확성을 요구한다, 하지만 그걸 표현할 수 없을 때, Underflow라고 함
ex) 1.0 * 2^-129
Exercise 1)
Represent –3.3125
Exercise 2)
다음 수가 single-precision로 표현되어 있다. 이 수는 무엇을 나타내는가?
11000000101000…00
fraction은 소수점 이하로만 가져오는 거
+ 정수는 항상 1이라는 거 생각하기
언더플로우라 표현 못하는 숫자는
Denormalized 식으로 표현 가능하다.
Exponent 가 모두 0일 땐, 그 숫자의 정수 부분은 0으로 취급할 것이다.
아래처럼 표현할 수 있다.
덧셈 연산
방법
1) 십진수면 10^a , 이진수면 2^b. 연산하는 두 개의 수의 소수점을 일치시킨다.
= 두 개 수의 Exponent를 일치시키면 된다. (큰 쪽으로 맞춤)
* 그 과정에서 소수점 제한때문에 사라지는 숫자들이 있음
2) 숫자들끼리 더한다.
3) 그 식을 다시 정규식으로 바꾼다.
4) (필요하다면) 소수점을 좀 더 조정해준다
exercise )
[ 1.000 × 2^-1 ] + [ –1.110 × 2 ^-2] (0.5 + –0.4375)
1) 소수점 맞추기 - > 2^-1이 더 크므로 얘한테 맞춰준다.
> 1.000 * 2^-1 + -0.111*2^-1
2) 숫자끼리 더하기 - > 1000 - 0111
> 넘쳐 오른 애 (carry out)는 없애기 > 0.001 * 2^-1
3) 정규화 하기 - > 다시 얘를 1.aa * 2^b 형식으로 만들기
> 1.000 * 2^-4
4) 필요하면 다듬어주기
> 할 필요 X, 1.000 * 2^*4 = 0.0001 = 0.0625
exercise 2)
1.0110 x 2^3 + 1.1000 x 2^2
exercise 3)
1.0110 x 2^3 + 1.1001 x 2^2
곱셈 연산
1. 지수끼리는 더하고 Bias를 빼준다.
지수+지수 - 127
2. 숫자 전체끼리 곱한다.
3. 정규화 해준다. = 1.xx꼴로 만들기 위해 비트를 옮겨주고 2^a 에서 a를 조정한다.
4. 부호를 맞춰준다. ( 두 수의 부호가 같았으면 + ,아니면 - )
exercise)
(1.0110 x 2^3) x (1.1100 x 2^2 )
1) 지수 계산
1.0110 x 2^3
→ 지수 3+127 = 130 = 10000010
→ 소수점 : 0110 ...
=0 10000010 011000 ...
1.1100 x 2^2 = 0 10000001 110000...
→ 지수 2+127 = 129 = 10000001
→ 소수점 : 110000 ...
130 + 129 -127 = 132 = 10000100
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
2) 숫자끼리 곱하기
1.0110...
* 1.1100...
= 10.0110100...
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
3) 결과를 정규화하기
10.0110100... * 2^5 를 1.xx로 만들어주기 위해서는 소수점 위치를 한 자리 옮겨야한다.
1.00110100... * 2^6
→ 지수 : 6+127 = 133 / 소수점 아래 00110100...
= 0 10000101 00110100...
소수점을 왼쪽으로 옮기면 지수를 더해주고
오른쪽으로 옮기면 지수를 빼준다.
3개 풀어보기
(출처)
한동대학교 용환기교수님
'2학년 2학기 > 컴퓨터 구조' 카테고리의 다른 글
[ 컴퓨터 구조 ] 15. Datapath - Single/Multi CLK Cycle (강의 multi 2) (0) | 2023.10.29 |
---|---|
[ 컴퓨터 구조 ] 14. Datapath - Single Path (0) | 2023.10.24 |
[ 컴퓨터 구조 ] 문제풀기 2 (0) | 2023.10.12 |
[ 컴퓨터 구조 ] 12. Floating Point number (0) | 2023.10.09 |
[ 컴퓨터 구조 ] 11. DIVISION (0) | 2023.10.08 |