부동소수점
컴퓨터상에서 실수를 표현하기 위한 방법 중 하나로, 소수점 자리가 고정하지 않고 그 위치를 값으로 가지는 방식입니다.
소수점 자리가 고정인 “고정소수점” 방식보다 넓은 범위의 수를 나타낼 수 있어 과학기술 계산에 많이 이용되지만, 근삿값으로 표현되며, 고정소수점보다 연산 속도가 느립니다.
IEEE754 부동소수점 방식
IEEE(전기 전자 기술자 협회)에서 개발한 부동소수점 표현 방식으로 가장 널리 쓰이고 있습니다.
표현 방법
변환 예제 (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