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으로 저장하는 과정을 적어보자.
- 709.25 (10) = 1011000101.01 (2) 이고,
- 1011000101.01 = 1.01100010101 * 2^9 이다.
- Exponent는 9 + Bias = 9 + 127 = 136 = 10001000 (2) 이다.
- Fraction은 1.01100010101 의 소수점 아래가 01100010101 이므로 이와 같다.
- 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을 뜻한다.
'글 > 기타' 카테고리의 다른 글
2024 인하대학교 프로그래밍 경진대회 (IUPC) 운영 후기 (4) | 2024.06.24 |
---|---|
2023 IGRUS Newbie Programming Contest 출제 후기 (0) | 2023.11.20 |
2023 인하대학교 프로그래밍 경진대회 (IUPC) 운영 후기 (2) | 2023.05.22 |
2022 IGRUS Newbie Programming Contest 운영 후기 (0) | 2022.10.02 |
프로그래머스 스킬 체크 4단계 통과 (0) | 2022.06.04 |
댓글