gwimong's blog Software Engineer

IEEE754 부동소수점 표현 방법

2022-11-17
Etc

부동소수점

컴퓨터상에서 실수를 표현하기 위한 방법 중 하나로, 소수점 자리가 고정하지 않고 그 위치를 값으로 가지는 방식입니다.
소수점 자리가 고정인 “고정소수점” 방식보다 넓은 범위의 수를 나타낼 수 있어 과학기술 계산에 많이 이용되지만, 근삿값으로 표현되며, 고정소수점보다 연산 속도가 느립니다.

IEEE754 부동소수점 방식

IEEE(전기 전자 기술자 협회)에서 개발한 부동소수점 표현 방식으로 가장 널리 쓰이고 있습니다.

표현 방법

IEE754 부동소수점
[위키백과 - 부동소수점]


변환 예제 (1)

-0.05 -> 11001100110011001100110011001101

부동소수점 변환 과정
0.05 * 2 = 0.1 .........0
0.1  * 2 = 0.2 .........0
0.2  * 2 = 0.4 .........0
0.4  * 2 = 0.8 .........0
0.8  * 2 = 1.6 .........1 + 0.6
0.6  * 2 = 1.2 .........1 + 0.2
0.2  * 2 = 0.4 .........0
0.4  * 2 = 0.8 .........0
0.8  * 2 = 1.6 .........1 + 0.6
0.6  * 2 = 1.2 .........1 + 0.2
0.2  * 2 = 0.4 .........0
0.4  * 2 = 0.8 .........0
0.8  * 2 = 1.6 .........1 + 0.6
0.6  * 2 = 1.2 .........1 + 0.2
0.2  * 2 = 0.4 .........0
0.4  * 2 = 0.8 .........0
0.8  * 2 = 1.6 .........1 + 0.6
0.6  * 2 = 1.2 .........1 + 0.2
0.2  * 2 = 0.4 .........0
0.4  * 2 = 0.8 .........0
0.8  * 2 = 1.6 .........1 + 0.6
0.6  * 2 = 1.2 .........1 + 0.2
0.2  * 2 = 0.4 .........0

0.05 = 0.000011001100110011001100110011…….
정규화 = 1.10011001100110011001100110011…. x 2^(-5)

     
s(1) Exponent(8) Mantissa(23)
1 (127) + (-5) 10011001100110011001100110011….
1 (122) 10011001100110011001100 110011….
1 0111 1010 10011001100110011001101(반올림)

-0.05 = 11001100110011001100110011001101

부호비트(S) : 1
지수비트(E) : 01111010
가수비트(M) : 10011001100110011001101


변환 예제 (2)

100.4 -> 01000010110010001100110011001101

부동소수점 변환 과정
0.4  * 2 = 0.8 .........0
0.8  * 2 = 1.6 .........1 + 0.6
0.6  * 2 = 1.2 .........1 + 0.2
0.2  * 2 = 0.4 .........0
0.4  * 2 = 0.8 .........0
0.8  * 2 = 1.6 .........1 + 0.6
0.6  * 2 = 1.2 .........1 + 0.2
0.2  * 2 = 0.4 .........0
0.4  * 2 = 0.8 .........0
0.8  * 2 = 1.6 .........1 + 0.6
0.6  * 2 = 1.2 .........1 + 0.2
0.2  * 2 = 0.4 .........0
0.4  * 2 = 0.8 .........0
0.8  * 2 = 1.6 .........1 + 0.6
0.6  * 2 = 1.2 .........1 + 0.2
0.2  * 2 = 0.4 .........0
0.4  * 2 = 0.8 .........0
0.8  * 2 = 1.6 .........1 + 0.6
0.6  * 2 = 1.2 .........1 + 0.2
0.2  * 2 = 0.4 .........0

100.4 = 1100100.011001100110011001100110011…….
정규화 = 1.100100011001100110011001100110011…. x 2^(6)

     
s(1) Exponent(8) Mantissa(23)
0 (127) + (6) 10010001100110011001100….
0 (133) 10010001100110011001100….
0 10000101 10010001100110011001101(반올림)

100.4 = 01000010110010001100110011001101

부호비트(S) : 0
지수비트(E) : 10000101
가수비트(M) : 10010001100110011001101


Comments

Content