2013-07-11 2 views
0

제목이 모두 있습니다. 예를 들어 두 개의 부동 소수점을 더하면 INF가 나오면 정의되지 않은 동작이 생성됩니까? 또는 이것은 IEEE float 구현에서 피할 수 있습니까?오버플로가 INF로 연결될 때 IEEE float 구현에서 정의되지 않은 동작으로 간주됩니까?

+6

정의되지 않은 동작은 오늘의 풍미 인 것 같습니다. – devnull

+1

[float 변수가 부동 소수점 제한을 벗어나면 어떻게됩니까?] (http://stackoverflow.com/questions/17588419/when-a-float-variable-goes-out-of-the-float) -limits-what-happens) – devnull

+0

@devnull 너무 열심히 lol'd. 적어도이 질문은 문법적으로 정확합니다. –

답변

4

아니요 IEEE-754 산술에서 정의되지 않은 동작은 없습니다. 결과는 해당 예제에서 무한대가되도록으로 정의 된 이고 오버플로가 발생했음을 나타내는 플래그를 설정하는 것은 으로 정의 된입니다.

정의되지 않은 동작을위한 유일한 방은 문제의 플랫폼이 IEEE-754를 준수하지 않는 경우입니다. 은 IEEE-754를 따르는 부동 소수점 연산을 필요로하지 않습니다.

+0

OVERFLOW를 나타내는 플래그의 몇 가지 예를 들려 줄 수 있습니까? – WildThing

+1

오버플로 플래그는 오버플로를 나타냅니다. 대부분의 구현에서이 플래그는 하드웨어 부동 소수점 상태 레지스터 (예 : x86은 x87 FPU 상태 레지스터의 비트 3과 MXCSR 레지스터의 비트 3)에서 비트로 구현되지만 그 특정 실현은 표준에 의해 요구된다. –