[컴퓨터 아키텍처] 부동소수점(Floating Point)이란?

부동소수점(Floating Point)이란?

부동소수점이란 실수를 컴퓨터 상에서 근사하여 표현할 때 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 적는 것으로, 유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 표현한다.

 

부동소수점의 표준(Standard)은 IEEE에서 제안한 IEEE 754이다. 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이다.

반응형

댓글

Designed by JB FACTORY