본문 바로가기
글/기타

IEEE Floating Point (IEEE 754)

by 유시은 2023. 9. 13.

IEEE 754란

Sign bit, Exponent, Fraction로 $(-1)^S * F * 2^E$꼴의 실수를 나타낸다.

  • S : 0 | 1
  • F : [1.0, 2.0)

Precision에 따라 다음과 같은 수의 비트를 사용한다.

  Sign bit Exponent Fraction
Single precision 1 8 23 32
Double precision 1 11 52 64

Exponent와 Fraction에 따라 Normalized, Denormalized, Infinity, NaN중 어느 것을 나타내는지 알 수 있다.

  Fraction 0 Fraction not 0
Exponent 0 Denormalized Denormalized
Exponent [1, 최댓값 - 1] Normalized Normalized
Exponent 최댓값 Infinity NaN

Normalized value

어떤 값이 $(-1)^S * F * 2^E$일 때 (단 $1 \le F < 2$) 각 비트필드에 다음을 저장한다.

  • Exponent에는 E + Bias
  • Fraction에는 F의 소수점 아래 (F가 1이면 Fraction은 00..0, F가 2 - a면 Fraction은 11..1) 

Bias는 $2^{Exponent의\ 비트\ 수\ -\ 1} - 1$과 같다.

또는 구간 [1, Exponent의 최댓값 - 1]의 크기 Exponent의 최댓값 - 2를 X라 하면, X / 2와 같다.

 

예를 들어 709.25를 Single precision으로 저장하는 과정을 적어보자.

  1. 709.25 (10) = 1011000101.01 (2) 이고,
  2. 1011000101.01 = 1.01100010101 * 2^9 이다.
  3. Exponent는 9 + Bias = 9 + 127 = 136 = 10001000 (2) 이다.
  4. Fraction은 1.01100010101 의 소수점 아래가 01100010101 이므로 이와 같다.
  5. 709.25는 양수이므로 Sign bit는 0이다.

종합하면 0 | 10001000 | 01100010101000000000000 이다.

 

마지막으로 Normalized value의 Exponent는 0이 아니어야 하므로, 저장할 수 있는 가장 작은 양수는 Single precision 기준 0 | 00000001 | 00..0 으로 1.0 * 2^-126 이다.

Denormalized value

어떤 값이 $(-1)^S * F * 2^E$일 때 (단 $0 \le F < 1$, $E = 1 - Bias$) 각 비트필드에 다음을 저장한다.

  • Exponent에는 0
  • Fraction에는 F의 소수점 아래 (F가 0이면 Fraction은 00..0, F가 1 - a면 Fraction은 11..1) 

Single precision 기준

0 | 00000000 | 00..0 은 0.00..0 * 2^-126 = 0을 나타내고,

0 | 00000000 | 11..1 은 0.11..1 * 2^-126 을 나타낸다.

 

Special value

Exponent가 11..1 (최댓값)인 경우 Fraction이 0이면 무한대를, 아니면 NaN을 뜻한다.

 

댓글