http://greatzzo.tistory.com/m/56?category=662566


  • 부동 소수점의 표현 방법에 대해서는 IEEE754에서 32bit single-precision과 64bit double-precision 표준을 정하고 있는데 이것이 바로 float와 double의 규격이다.
  • 기본적인 구조는 최상의 비트는 부호를 표시하는데 사용하고 지수부분(Exponet)과 가수부분(Fraction/Mantissa)로 구성되어 있다. 
  • 부호비트는 0일 경우 양수, 1일 경우 음수를 의미하며,
  • 지수부(Exponent)는 기준값(Bias)을 중심으로 +, -값을 표현한다. 기준값은 20를 의미하는데 float의 경우 기준값이 127이고, double의 경우 기준값은 1023이다. 
  • 예를 들어, float에서 21은 기준값(127) + 1 = 128이기 때문에 이진수로 표현하면 100000002가 된다. 
  • 가수부(Mantissa)는 1.xxxx 형태로 정규화를 한 뒤 가장 왼쪽에 있는 1을 제거하고 소수점 이하의 자리 값만 표현한다. 


[32bit 부동 소수점 (float)의 표현]


[64bit 부동 소수점 (double)의 표현]


  • 예를 들어, 13.5를 32bit 부동소수점 (float)으로 표현해보자. 
    • 13.5 → 1101.12 [진수변환]
    • 1101.12  1.10112 x 23 [정규화]
    • 부호비트는 양수이므로 0,
    • 지수부는 3이므로 127 + 3 = 130, 2진수로 표현하면 100000102,
    • 가수부는 1.1011에서 소수점 이하 자리만 표현하면 1011이 된다. 
    • 최종 값은 0100 0001 0101 1000 0000 0000 00002