문제

친구와 나는 오늘 점심 시간에 Inf 's와 Nan's가 어떻게 저장되는지 토론하고있었습니다.

예를 들어 Fortran 90을 가져 가십시오. 4 바이트 레알은 INF 또는 NAN의 값을 얻을 수 있습니다. 이것은 내부적으로 어떻게 저장됩니까? 아마도 4 바이트 레알은 내부적으로 32 자리 이진 번호로 표시되는 숫자입니다. INF와 NAN은 33 비트 이진 숫자로 저장됩니까?

도움이 되었습니까?

해결책

특히 페스토에서 링크:

IEEE 단일 정밀 플로팅 포인트 표준 표준 표준 표준에는 32 비트 단어가 필요하며,이 단어는 0에서 31까지 왼쪽에서 오른쪽으로 표시 될 수 있습니다. 첫 번째 비트는 부호 비트입니다. S, 다음 8 비트는 지수 비트입니다. 'E', 마지막 23 비트는 분수입니다.'F':

S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF  
0 1      8 9                    31  

가치 V 단어로 표시되는 것은 다음과 같이 결정될 수 있습니다.

  • 만약에 E=255 그리고 F 그렇다면 0이 아닙니다 V=NaN ( "숫자가 아님")
  • 만약에 E=255 그리고 F 0이고 S ~이다 1, 그 다음에 V=-Infinity
  • 만약에 E=255 그리고 F 0이고 S ~이다 0, 그 다음에 V=Infinity
  • 만약에 0<E<255 그 다음에 V=(-1)**S * 2 ** (E-127) * (1.F) 어디 "1.F"F는 F를 암시적인 선행 1 및 이진 지점으로 접두사로 만들어 생성 된 이진수를 나타 내기위한 것입니다.
  • 만약에 E=0 그리고 F 그렇다면 0이 아닙니다 V=(-1)**S * 2 ** (-126) * (0.F) 이것들은 "정상화되지 않은"값입니다.
  • 만약에 E=0 그리고 F 0이고 S ~이다 1, 그 다음에 V=-0
  • 만약에 E=0 그리고 F 0이고 S ~이다 0, 그 다음에 V=0

다른 팁

대부분의 부동 소수점 표현은 IEEE 표준을 기반으로합니다. 패턴을 설정합니다 INF 및 NAN에 대해 정의되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top