부동소수점(Floating Point)이란?
부동소수점이란 실수를 컴퓨터 상에서 근사하여 표현할 때 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 적는 것으로, 유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 표현한다.
부동소수점의 표준(Standard)은 IEEE에서 제안한 IEEE 754이다. IEEE 754에 따른 부동소수점의 표현은 아래와 같다.
부동소수점은 Single Precision(32-bit), Double Precision(64-bit)로 나타낼 수 있다.
- S : sign bit로, 1bit를 차지하며 0은 양수를, 1은 음수를 나타낸다.
- Exponent : 지수를 표현한다. 실제 exponet에 Bias를 더해서 기록한다
- Single Precision : Bias = 127 , 8bit 차지
- Double Precision : Bias = 1203, 11bit 차지
- Fraction: 가수를 표현한다. 소수점 이후 숫자열 전체를 가수라고 한다. 예를 들어 1.01101 같은 경우 01101이 가수
- Single Precision : 23bit 차지
- Double Precision : 52bit 차지
예시를 보며 이해해보자.
-0.75를 부동소수점을 이용해 나타내려면 어떻게 할까?
-0.75 = (-1)^1 * 1.1(이진수) * 2^(-1)으로 나타낼 수 있다. ( 1.1(이진수) = 1.5(십진수) )
따라서 single, double 방식을 나눠서 표현하면
S = 1
Exponent = single : -1 + 127(Bias)=126 = 01111110 , double : -1 + 1023 = 1022 = 01111111110
Fraction = single : 1000...00 (23bit), double : 1000...00(52bit)
-> single = 1011111101000...00 (32 bit)
-> double = 1011111111101000...00 (64 bit)
이렇게 표현할 수 있다.
반대로 부동소수점을 보고 어떤 실수를 표현했는지 알아보자.
11000000101000...00 (32 bit)은
S = 1
Exponent = 10000001 = 129
Fraction = 01000...00
이므로, (-1)^1 * (1+01(이진수)) * 2^(129-127) = (-1) * 1.25 * 2^2 = -5.0이다.
'Computer Science > [컴퓨터 아키텍처]' 카테고리의 다른 글
[컴퓨터 아키텍처] 리틀 엔디안(Little-endian) 과 빅 엔디안(Big -endian)이란? (0) | 2022.03.23 |
---|---|
[컴퓨터 아키텍처] CISC란? RISC란? CISC와 RISC 차이 (0) | 2022.03.22 |
[컴퓨터 아키텍처] CPU란? CPU 성능 측정, CPU Time, Clock Rate, IC, CPI (0) | 2022.03.21 |