사용자 도구

사이트 도구


컴퓨터:integer_and_floating_point
[홈레코딩 필독서]"모두의 홈레코딩"구매링크
가성비 있는 녹음실 찾으시나요? 리버사이드 재즈 스튜디오에서 녹음하세요!

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
컴퓨터:integer_and_floating_point [2025/01/01] 정승환컴퓨터:integer_and_floating_point [2025/01/01] (현재) – [부동소수점 연산의 정밀성 손실] 정승환
줄 40: 줄 40:
 부동소수형 숫자 표현의 범위\\ 부동소수형 숫자 표현의 범위\\
   * 32bit 부동소수형의 가장 작은 숫자 = 1.0 x 2<sup>-126</sup> = 1.1754944e-38 (**소수점 38자리수**)   * 32bit 부동소수형의 가장 작은 숫자 = 1.0 x 2<sup>-126</sup> = 1.1754944e-38 (**소수점 38자리수**)
-  * 32bit 부동소수형의 가장 큰 숫자 = (2 - 2<sup>-23) x 2<sup>127</sup> = 3.4028235e+38 = (**38자리수**)+  * 32bit 부동소수형의 가장 큰 숫자 = (2 - 2<sup>-23</sup>) x 2<sup>127</sup> = 3.4028235e+38 = (**38자리수**)
    
 =====부동소수점 연산의 정밀성 손실===== =====부동소수점 연산의 정밀성 손실=====
줄 47: 줄 47:
 예를 들어, 우리가 다음과 같은 두 개의 부동소수를 더한다고 가정해봅시다: 예를 들어, 우리가 다음과 같은 두 개의 부동소수를 더한다고 가정해봅시다:
  
-  * <m>0.1 10^{-20}</m+  * 0.1 10<sup>-20</sup
-  * <m>0.2 10^{-20}</m>+  * 0.2 10<sup>-20</sup>
  
-이 두 부동소수를 더하면 우리는 <m>0.3 10^{-20}</m>이 나와야 한다고 예상할 수 있습니다. 그러나 컴퓨터에서는 부동소수점을 표현할 때 소수점 이하의 정밀도에 한계가 있기 때문에 정확한 결과를 얻기 어렵습니다.+이 두 부동소수를 더하면 우리는 0.3 10<sup>-20</sup>이 나와야 한다고 예상할 수 있습니다. 그러나 컴퓨터에서는 부동소수점을 표현할 때 소수점 이하의 정밀도에 한계가 있기 때문에 정확한 결과를 얻기 어렵습니다.
  
 실제로 컴퓨터에서 이러한 덧셈을 수행하면 다음과 같은 결과가 나올 수 있습니다: 실제로 컴퓨터에서 이러한 덧셈을 수행하면 다음과 같은 결과가 나올 수 있습니다:
  
-  * <m>0.1 10^{-20}</m>를 표현할 때 발생하는 정밀성 손실로 인해 실제로는 <m>0.10000000000000000000005 10^{-20}</m> 정도로 저장될 수 있습니다. +  * 0.1 10<sup>-20</sup>를 표현할 때 발생하는 정밀성 손실로 인해 실제로는 0.10000000000000000000005 10<sup>-20</sup> 정도로 저장될 수 있습니다. 
-  * <m>0.2 10^{-20}</m>도 마찬가지로 정밀성 손실로 인해 <m>0.20000000000000000000004 10^{-20}</m> 정도로 저장될 수 있습니다.+  * 0.2 10<sup>-20</sup>도 마찬가지로 정밀성 손실로 인해 0.20000000000000000000004 10<sup>-20</sup> 정도로 저장될 수 있습니다.
  
-따라서 이 두 수를 더하면 <m>0.30000000000000000000009 10^{-20}</m> 정도의 값이 나올 수 있습니다. 이것은 우리가 원했던 <m>0.3 10^{-20}</m>과 약간 다른 값이며, 부동소수점 연산의 정밀성 손실로 인해 발생한 것입니다.((그림이나 오디오 표현에서는 하나도 문제가 안되는 정도의 오차입니다.))+따라서 이 두 수를 더하면 0.30000000000000000000009 10<sup>-20</sup> 정도의 값이 나올 수 있습니다. 이것은 우리가 원했던 0.3 10<sup>-20</sup>과 약간 다른 값이며, 부동소수점 연산의 정밀성 손실로 인해 발생한 것입니다.((그림이나 오디오 표현에서는 하나도 문제가 안되는 정도의 오차입니다.))
  
 이러한 예시를 통해, 부동소수 연산에서의 정밀성 손실이 어떻게 발생하는지 좀 더 구체적으로 이해할 수 있습니다. 이러한 예시를 통해, 부동소수 연산에서의 정밀성 손실이 어떻게 발생하는지 좀 더 구체적으로 이해할 수 있습니다.
  
-이러한 오차는 금융 분야에서의 시간, 금액 계산이나, 공학에서의 정밀 계산이 필요한 분야에서는 큰 오류를 범할 수 있지만, 그래픽 분야 또는 오디오 분야에서는 큰 문제가 되지 않습니다. 그래서, 그래픽 카드에서 쓰이는 GPU에서는 거의 부동소수형 연산자를 가진 칩을 사용하고, 오디오 쪽에서는 최근 부동소수형 DSP 칩들이 레이턴시가 짧아진 제품들이 나오면서((부동소수 연산자 DSP 칩이 나오게 된 원인은 공학계산 용도 등으로도 부동소수 오차가 크게 의미 없다는 판단이었을 것이다. 사실 DSP는 계산의 정확도 때문에 그동안 정수형 연산자 DSP가 대세였다.)) 부동소수형 연산칩을 사용하는 경향이 있습니다.+이러한 오차는 금융 분야에서의 시간, 금액 계산이나, 공학에서의 정밀 계산이 필요한 분야에서는 큰 오류를 범할 수 있지만, **그래픽 분야 또는 오디오 분야에서는 큰 문제가 되지 않습니다.** 그래서, 그래픽 카드에서 쓰이는 GPU에서는 거의 부동소수형 연산자를 가진 칩을 사용하고, 오디오 쪽에서는 최근 부동소수형 DSP 칩들이 레이턴시가 짧아진 제품들이 나오면서((부동소수 연산자 DSP 칩이 나오게 된 원인은 공학계산 용도 등으로도 부동소수 오차가 크게 의미 없다는 판단이었을 것이다. 사실 DSP는 계산의 정확도 때문에 그동안 정수형 연산자 DSP가 대세였다.)) 부동소수형 연산칩을 사용하는 경향이 있습니다.

[공지]회원 가입 방법
[공지]글 작성 및 수정 방법

컴퓨터/integer_and_floating_point.1735713977.txt.gz · 마지막으로 수정됨: 저자 정승환