부동소수점(floating point)은 실수를 컴퓨터상에서 근사하여 표현할 때 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 적는 것으로, 유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 표현한다.
예시
−118.625 (십진법)을 IEEE 754 (32비트 단정밀도)로 표현해 보자.
- 음수이므로, 부호부는 1이 된다.
- 그 다음, 절댓값을 이진법으로 나타내면 1110110.101이 된다.
- 소수점을 왼쪽으로 이동시켜, 왼쪽에는 1만 남게 만든다. 예를 들면 1110110.101=1.110110101×2⁶ 과 같다. 이것을 정규화된 부동소수점 수라고 한다.
- 가수부는 소수점의 오른쪽 부분으로, 부족한 비트 수 부분만큼 0으로 채워 23비트로 만든다. 결과는 11011010100000000000000이 된다.
- 지수부는 지수에 bias를 더한 값을 2진수로 변환한 수를 넣는 부분이다. bias는 32비트에서는 127, 64비트에서는 1023이다.
- 32비트 IEEE 754 형식에서는 Bias는 127이므로 6+127 = 133이 된다. 이진법으로 변환하면 10000101이 된다.
이 결과를 정리해서 표시하면 다음과 같다.
고정소수점은 소수점을 사용하여 고정된 자리수의 소수를 나타내는 것이다. 한정된 메모리에서 부동소수점 방식보다 좁은 범위의 수만 나타낼 수 있다.
- 부호비트는 실수의 부호를 나타내는 비트 자리로 실수가 음수라면 1을, 양수라면 0을 넣는다.
- 정수부에는 실수의 정수 부분을, 소수부에는 실수의 소수부분을 넣는다.
- 정수부와 소수부의 경계 부분을 소수점의 위치로 생각하고 수를 그대로 넣으면 된다. 숫자들을 넣고 남은 칸들은 모두 0으로 채워진다.
예시
21.25를 예를 들어 표현하면 다음과 같다.
- 부호비트: 0 (10101.01이라는 실수는 양수이기 때문이다.)
- 정수부: 10101 (정수 부분의 수)
- 소수부: 01 (소수 부분의 수)
참고자료
https://ko.wikipedia.org/wiki/고정소수점
https://ko.wikipedia.org/wiki/부동소수점
https://tcpschool.com/cpp/cpp_datatype_floatingPointNumber
https://jiminish.tistory.com/81
'Aiffel > Fundamental' 카테고리의 다른 글
파이썬 모듈 및 패키지 개념 정리 (0) | 2021.12.29 |
---|---|
정규표현식 (0) | 2021.12.29 |
Markdown 작성하기 (0) | 2021.12.28 |
Linux 명령어 모음 (0) | 2021.12.28 |
피보나치 수열 파이썬으로 구현하기 (0) | 2021.12.28 |
댓글