1. 부동 소수점(Floating point) 표현 과정
1) 실수를 2진수로 표현 한다. -> 기본적으로 컴퓨터는 숫자를 표현할 때 2진수를 사용하기 때문이다.
예를 들어, 93.21 를 변환한다고 했을 때,
(1) 실수의 정수 부분(93)의 변환
93 / 2 = 46 ····· 1
46 / 2 = 23 ····· 0
23 / 2 = 11 ····· 1
11 / 2 = 5 ····· 1
5 / 2 = 2 ····· 1
2 / 2 = 1 ····· 0
1011101 이 된다.
(2) 실수의 소수 부분(.21)의 변환
= 소수 부분 * 2 의 정수 부분 기록, 정수가 1이상이 되면 정수 부분을 버린 소수 부분으로 다시 연산을 계속함
0.21 * 2 = 0.42 ····· 0
0.42 * 2 = 0.84 ····· 0
0.84 * 2 = 1.68 ····· 1
0.68 * 2 = 1.36 ····· 1
0.36 * 2 = 0.72 ····· 0
0.72 * 2 = 1.44 ····· 1
0.44 * 2 = 0.88 ····· 0
0.88 * 2 = 1.96 ····· 1
0.96 * 2 = 1.92 ····· 1
0.92 * 2 = 1.84 ····· 1
이후로는 반복되므로, 여기까지 한다.
0.84 * 2 = 1.68 ····· 1
(1),(2) 의 값에 따르면, 10진수인 93.21을 2진수로 표현하게 되면,
1011101.00 11010111 11010111 ·········· 이다.
2) 이제 이 이진수를 정규화 한다.
- 소수점에서 앞으로 6칸 이동해서 정규화를 하면, 1.011101001101011111010111 * 2^6 이 된다.··········
- 따라서 지수는 6이 된다.
3) IEEE 754 표준에 따라서, 32비트 단정도가 기본이다. 단정도 방식은
맨 앞의 검정색 : 1 bit (부호 비트) 0(+), 1(-)
그 다음 색 : 8 bit (지수 비트)
그 다음 색 : 23 bit (가수 비트) 로 표현된다.
(1) 93.21 은 양수 이므로 부호 비트에는 0 이 들어 간다.
(2) 8bit는 1바이트로 0-255까지 표현이 가능한데, 그 절반인 127이 바이어스(상수) 이다. 지수 비트에 바로 지수를 사용 하는 것이 아니라 127을 더해서 이진수로 표현하게 된다.
- 지수의 값이 음수가 나왔을 때를 위해서 이다.
따라서, 6+127 = 133을 이진수로 표현하면,
133 / 2 = 66 ····· 1
66 / 2 = 33 ····· 0
33 / 2 = 16 ····· 1
16 / 2 = 8 ····· 0
8 / 2 = 4 ····· 0
4 / 2 = 2 ····· 0
2 / 2 = 1 ····· 0
10000101을 지수 비트에 넣어 주면 된다.
(3) 가수 비트는 앞의 정수 1을 제외한 0. xxxxxx의 xxxxxx를 넣어 주면 된다.
따라서, 011101001101011111010111xx 이 들어가게 되는 것이다.
- 만약에 가수 부분의 뒤의 수가 빈다면 0으로 채워주면 된다.
결과적으로 표현을 해주면,
로 표현 할 수 있다.
추가적으로, 지수 부분은 정밀도를 결정, 가수 부분은 표현 가능한 수의 범위를 결정한다.
'Computer science' 카테고리의 다른 글
[Computer science] 컴퓨터와 프로그래밍 (0) | 2020.07.17 |
---|