컴퓨터:integer_and_floating_point
[홈레코딩 필독서]"모두의 홈레코딩"구매링크
가성비 있는 녹음실 찾으시나요? 리버사이드 재즈 스튜디오에서 녹음하세요!
[공지]회원 가입 방법
[공지]글 작성 및 수정 방법
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판다음 판 | 이전 판 | ||
컴퓨터:integer_and_floating_point [2024/02/27] – [부동소수점 연산의 정밀성 손실] 정승환 | 컴퓨터:integer_and_floating_point [2025/01/01] (현재) – [부동소수점 연산의 정밀성 손실] 정승환 | ||
---|---|---|---|
줄 31: | 줄 31: | ||
정수형 숫자 표현의 범위\\ | 정수형 숫자 표현의 범위\\ | ||
- | * 16bit 정수형의 총 표현 가능 단계 = <m>2^16</m> = 65536(**5자리수**) | + | * 16bit 정수형의 총 표현 가능 단계 = 2<sup>16</sup> = 65536(**5자리수**) |
- | * 24bit 정수형의 총 표현 가능 단계 = <m>2^24</m> = 16777216(**8자리수**) | + | * 24bit 정수형의 총 표현 가능 단계 = 2<sup>24</sup> = 16777216(**8자리수**) |
- | * 32bit 정수형의 총 표현 가능 단계 = <m>2^32</m> = 4294967296(**10자리수**) | + | * 32bit 정수형의 총 표현 가능 단계 = 2<sup>32</sup> = 4294967296(**10자리수**) |
- | * 48bit 정수형 배정밀도= <m>2^48</m> = 2.8147498e+14 (e+x 는 +10^X 를 말합니다.) = 28147598000(**14자리수**) | + | * 48bit 정수형 배정밀도= |
- | * 56bit 정수형 = <m>2^56</m> = 7.2057594e+16(**16자리수**) | + | * 56bit 정수형 = 2<sup>56</sup> = 7.2057594e+16(**16자리수**) |
- | * 64bit 정수형 = <m>2^64</m> = 1.8446744e+19(**19자리수**) | + | * 64bit 정수형 = 2<sup>64</sup> = 1.8446744e+19(**19자리수**) |
부동소수형 숫자 표현의 범위\\ | 부동소수형 숫자 표현의 범위\\ | ||
- | * 32bit 부동소수형의 가장 작은 숫자 = <m>1.0 * 2^{-126}</m> = 1.1754944e-38 (**소수점 38자리수**) | + | * 32bit 부동소수형의 가장 작은 숫자 = 1.0 x 2<sup>-126</sup> = 1.1754944e-38 (**소수점 38자리수**) |
- | * 32bit 부동소수형의 가장 큰 숫자 = <m>(2 - 2^{-23}) * 2^{127}</m> = 3.4028235e+38 = (**38자리수**) | + | * 32bit 부동소수형의 가장 큰 숫자 = (2 - 2<sup>-23</ |
=====부동소수점 연산의 정밀성 손실===== | =====부동소수점 연산의 정밀성 손실===== | ||
줄 47: | 줄 47: | ||
예를 들어, 우리가 다음과 같은 두 개의 부동소수를 더한다고 가정해봅시다: | 예를 들어, 우리가 다음과 같은 두 개의 부동소수를 더한다고 가정해봅시다: | ||
- | * <m>0.1 * 10^{-20}</m> | + | * 0.1 x 10<sup>-20</sup> |
- | * <m>0.2 * 10^{-20}</m> | + | * 0.2 x 10<sup>-20</sup> |
- | 이 두 부동소수를 더하면 우리는 | + | 이 두 부동소수를 더하면 우리는 0.3 x 10<sup>-20</sup>이 나와야 한다고 예상할 수 있습니다. 그러나 컴퓨터에서는 부동소수점을 표현할 때 소수점 이하의 정밀도에 한계가 있기 때문에 정확한 결과를 얻기 어렵습니다. |
실제로 컴퓨터에서 이러한 덧셈을 수행하면 다음과 같은 결과가 나올 수 있습니다: | 실제로 컴퓨터에서 이러한 덧셈을 수행하면 다음과 같은 결과가 나올 수 있습니다: | ||
- | * <m>0.1 * 10^{-20}</m>를 표현할 때 발생하는 정밀성 손실로 인해 실제로는 | + | * 0.1 x 10<sup>-20</sup>를 표현할 때 발생하는 정밀성 손실로 인해 실제로는 0.10000000000000000000005 |
- | * <m>0.2 * 10^{-20}</m>도 마찬가지로 정밀성 손실로 인해 | + | * 0.2 x 10<sup>-20</sup>도 마찬가지로 정밀성 손실로 인해 0.20000000000000000000004 |
- | 따라서 이 두 수를 더하면 | + | 따라서 이 두 수를 더하면 0.30000000000000000000009 |
이러한 예시를 통해, 부동소수 연산에서의 정밀성 손실이 어떻게 발생하는지 좀 더 구체적으로 이해할 수 있습니다. | 이러한 예시를 통해, 부동소수 연산에서의 정밀성 손실이 어떻게 발생하는지 좀 더 구체적으로 이해할 수 있습니다. | ||
- | 이러한 오차는 금융 분야에서의 시간, 금액 계산이나, | + | 이러한 오차는 금융 분야에서의 시간, 금액 계산이나, |
[공지]회원 가입 방법
[공지]글 작성 및 수정 방법
컴퓨터/integer_and_floating_point.1709029552.txt.gz · 마지막으로 수정됨: 저자 정승환