C++ 수치 속성을 이해하려고합니다. 따라서 언더 플로우 현상에 관심이 있습니다. 누구든지 언더 플로우의 예와 그것을 처리하는 방법을 줄 수 있습니까?부동 소수점 언더 플로 처리 방법은 무엇입니까?
4
A
답변
4
부동 소수점 언더 플로의 예는 다음
double d = DBL_MIN/3.0;
적합하는 IEEE 754 구현, 즉, 그 정밀도를 제로에 가까운 인 수가 감소되는 「subnormal」에 d
설정한다. Wikipedia에 관한 많은 정보를 얻을 수 있습니다.
일부 구현은 "Flush to Zero"일 수 있습니다. 위 예제의 결과는 d
을 0으로 설정하는 것입니다.
언더 플로는 음수 지수가 더 크므로 숫자를 나타낼 수없는 결과입니다. 어떻게 든 X 1 * 2 N을에 계산 금액 "정규화"계산,로이를 방지 것이 가능할 X 2 2 N ... 대신에 X의 1는 을 X * 2, ... N 개의 선택 사항입니다.
부동 소수점 언더 플로는 정의되지 않은 동작이 아닙니다. 원하는 경우 "FPU 예외"를 사용하여 폴링하거나 SIGFPE를 수신하여이를 감지 할 수 있습니다. "FPU 예외"는 이름을 제외하고 C++ 예외와 공통점이 없습니다.
-3
int main()
{
short int x ;
for(x=0;;x++)
{
printf("%d \n",x);
if(x < 0)
break;
}
}
O/P
---
---
--
32761
32762
32763
32764
32765
32766
32767
-32768
당신이 서명 없음에 언더 플로우 개념을 요구하고 가정. 여기서 개념은 서명 된 아니오입니다. 서클의 절반에 도달하면 서클과 같은 작품입니다. 서클의 절반에 도달하면 계속해서 끝나지 않을 것입니다. 그것은 시작합니다 0-32767 (+ve) -32768 to -1 (-ve) half.
이것은이 상황을 처리하는 프로그래머의 책임입니다. 언더 플로우하면 컴파일러에서 오류를 발생시키지 않습니다.
희망이 도움이됩니다.
관련 문제
- 1. 부동 소수점 변수와 예외 처리
- 2. 정상적인 언더 플로
- 3. Java 처리 정수 언더 플로 및 오버 플로우는 어떻게 처리됩니까?
- 4. C++에서 부동 소수점 예외 처리
- 5. Promela의 부동 소수점 계산
- 6. ByteBuffer 언더 플로 예외가 발생했습니다
- 7. 오버플로/언더 플로 문제가 있습니까?
- 8. ORA-22054 언더 플로 오류
- 9. B- 트리의 루트에서 언더 플로
- 10. 버퍼 언더 플로 예외 java
- 11. 부동 소수점 실수 부동 소수점 오류
- 12. JavaScript 부동 소수점
- 13. 부동 소수점 덧셈과 부동 소수점 곱셈의 상대 속도는 무엇입니까
- 14. XML의 부동 소수점 숫자
- 15. 시끄러운 부동 소수점 배열을 '체크섬'하는 방법은 무엇입니까?
- 16. 부동 소수점 숫자를 반올림하는 방법은 무엇입니까?
- 17. jscript에서 부동 소수점 숫자를 자르는 방법은 무엇입니까?
- 18. 부동 소수점 상수에 액세스하는 방법은 무엇입니까?
- 19. 부동 소수점 오류를 방지하는 방법은 무엇입니까?
- 20. R에서 부동 소수점 정밀도를 유지하는 방법은 무엇입니까?
- 21. 부동 소수점 뒤에 숫자를 제거하는 방법은 무엇입니까?
- 22. OpenCV에서 부동 소수점 이미지를 마스크하는 방법은 무엇입니까?
- 23. 부동 소수점
- 24. 부동 소수점
- 25. 부동 소수점 반올림 (자바로)
- 26. 부동 소수점 부정확
- 27. 제한 부동 소수점 배열
- 28. 부동 소수점 계산
- 29. 이 부동 소수점 형식이란 무엇입니까?
- 30. gnuplot의 부동 소수점 표현은 무엇입니까?
'0U-1'. UB 태그를 넣음으로써 언더 플로우 서명을 의미한다고 가정합니다. – chris
@chris (논증의 목적으로 32 비트 부호없는 것으로 가정) 기술적으로 거기에는 언더 플로우/오버 플로우가 없습니다. 0U-1의 결과는 -1이 아닌 4294967295입니다. 4294967295는 32 비트 부호없는 int에 들어가므로 오버플로가 발생하지 않습니다. 반대로 -2147483648-1의 결과는 부호있는 32 비트 int에 맞지 않으므로 오버플로/언더 플로가 발생하는 -2147483649입니다. –
@ R.MartinhoFernandes, 나는 게으르면서 그냥'INT_MIN'을 사용해도 추가 문자를 타이핑해야한다는 것을 알았습니다. 어느 쪽이든 내가 태그를 붙이려는 메모보다 더 적을 것입니다. 그것은 일종의 우울한 일입니다. – chris