Computer Science/네트워크

[네트워크] 부동 소수점 표현

  • -
728x90

전공과목인 네트워크를 학습하며 어려웠던 내용과 중요한 내용을 정리한 것으로, 잘못된 내용이 있는 경우 알려주시면 감사하겠습니다.

부동 소수점 표현 (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 부동소수점 변환기(계산기) 와 같은 변환기를 통해 답을 확인하는 방식으로 계산법을 익히면 좋을 것 같다. 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.