전공과목인 네트워크를 학습하며 어려웠던 내용과 중요한 내용을 정리한 것으로, 잘못된 내용이 있는 경우 알려주시면 감사하겠습니다.
부동 소수점 표현 (floating point)
출처: https://steemit.com/kr/@modolee/floating-point
부동 소수점은 실수를 컴퓨터에서 표현하기 위한 방법으로 고정 소수점의 문제를 해결하기 위한 방법이다.
Sign 비트 + Exponent(지수) + Mantissa(가수, fraction) 로 이루어진다.
Sign : 1비트. 숫자의 부호를 나타냄. 양수일 때 0 음수일 때 1
Exponent : 8비트. 지수
fraction : 23비트. 가수
Single precision: 부호 1비트, 지수 8비트, 가수 23비트
Double precision: 부호 1비트, 지수 11비트, 가수 52비트
최대 표현 : 2^32-1 만큼 표현 가능. → +0 과 -0이 존재하므로 0이 중복되기 때문이다.
3.5 → 11.1 * 2 에서 11.1이 Mantissa이며, 2는 Exponent이다.
부동 소수점 계산법 (Single precision 기준)
3.5일 때,
1. 2진수로 변경: 11.1
2. 소수점 왼쪽에 1만 남도록 변경: 1.11 + 2^1
3. 이때 이동한 수 n(= 2의 n승) 만큼 127에 더한다. 예시의 경우 127+1 = 128이다. 이는 exponent의 값이다.
4. 이 수를 이진수로 변경하여 exponent의 값을 구한다. 예시의 경우 1000000이다.
5. 이제 다시 2번으로 돌아가, 1.11에서 소수점 오른쪽의 수를 모두 적고, 23비트까지 남는 만큼 0을 채운다. 이것이 fraction이다. 예시에서는 11000...0(23번까지 0 채움)이 될 것이다.
6. 마지막으로, sign은 부호에 따라 결정된다. 양수인 경우 0, 음수인 경우 1이다.
계산 방법
직접 계산을 하고 IEEE 754 부동소수점 변환기(계산기) 와 같은 변환기를 통해 답을 확인하는 방식으로 계산법을 익히면 좋을 것 같다.