최소 / 최대 또는 48 비트 부동 소수점 유형 MIL-STD-1750A

(PDF) (WIKI) .

예 : 이중 범위 1.7E +/- 308입니다.

방정식을 찾아 봤는데 내가 찾은 것이 효과가 있는지 확실하지 않습니다.

내가 찾은 첫 번째 방정식은 첫 번째 등식

두 번째는 두 번째 등식

내가 필요로하는 것이 정확하다면 어디에서 시작해야할지 잘 모르겠습니다.

누군가 자신의 지식을 나에게 전달하고이 문제를 해결하는 데 도움을 주겠습니까?

댓글

  • 네, 48 비트 FP 번호가있는 것 같습니다. 16 비트 하드웨어에서 구현되었습니다. " 최소 / 최대 값 찾기 " 란 정확히 무엇을 의미합니까?
  • 뭐가 잘못 됐어 a<b?a:ba>b?a:b
  • 저도 잘 모르겠습니다. 주어진 엡실론 내에서 두 숫자를 비교 하려고하십니까? 해당 값의 오차 범위 내에있을 수있는 가능한 범위를 결정하려고합니까? 다른 것? 더 많은 맥락이 필요합니다.
  • 죄송합니다. 명확히하기 위해 질문을 수정하겠습니다. MIL-STD-1750A로 포맷 된 48 비트 FP 값이 최소값과 최대 값이 될 수있는 범위를 계산하고 싶습니다.

Answer

32 비트 부동 소수점의 경우 최대 값은 표 III에 나와 있습니다.

0.9999998 x 2^127 represented in hex as: mantissa=7FFFFF, exponent=7F. 

가수 / 지수를 다음과 같이 (가까운) 10 진수 값으로 분해 할 수 있습니다.

7FFFFF <base-16> = 8,388,607 <base-10>. 

유의성이 23 비트이므로 8,388,607을 2 ^ 23으로 나눕니다. .

8,388,607 / 2^23 = 0.99999988079071044921875 (see Table III) 

지수까지 :

7F <base-16> = 127 <base-10> 

이제 가수를 곱합니다. 2 ^ 127 (지수)

8,388,607 / 2^23 * 2^127 = 8,388,607 * 2^104 = 1.7014116317805962808001687976863 * 10^38 

가장 큰 가수가 사용되고 가장 큰 지수가 사용되기 때문에 가장 큰 32 비트 부동 소수점 값입니다.

p>

48 비트 부동 소수점은 16 비트의 작은 의미 가수를 더하지만 지수는 동일한 크기로 남습니다. 따라서 최대 값은 16 진수로

mansissa=7FFFFFFFFF, exponent=7F. 

다시 표시됩니다.

7FFFFFFFFF <base-16> = 549,755,813,887 <base-10> 

최대 지수는 여전히 127이지만 [23 + 16 = 39, 따라서 :] 2 ^ 39로 나누어야합니다. 127-39 = 88이므로 2 ^ 88을 곱하면됩니다.

549,755,813,887 * 2^88 = 1.7014118346015974672186595864716 * 10^38 

이는 가능한 가장 큰 가수를 사용했기 때문에 가장 큰 48 비트 부동 소수점 값입니다. 그리고 가능한 가장 큰 지수입니다.

따라서 최대 값은 다음과 같습니다.

1.7014116317805962808001687976863 * 10^38, for 32-bit, and, 1.7014118346015974672186595864716 * 10^38, for 48-bit 

48 비트의 최대 값은 32 비트의 경우, 가수 끝에 몇 개의 비트가 추가되기 때문에 당연합니다.

(정확히 48 비트 형식의 최대 수는 다음과 같은 이진수로 표현할 수 있습니다. 39 개의 1 “과 88 개의 0″로 구성됩니다.)

(가장 작은 값은이 값의 음수입니다. 0이 아닌 0에 가장 가까운 값도 위와 같이 쉽게 계산할 수 있습니다. 가능한 최소 (양수) 가수 : 0000001 및 가능한 최소 지수 : 16 진수 80 또는 10 진수 -128)


FYI

일부 부동 소수점 형식은 표현되지 않은 숨김을 사용합니다. 가수의 1 비트 (이는 가수에서 1 비트의 추가 정밀도를 허용합니다. ollows : 모든 숫자의 첫 번째 이진수 (0 또는 비정규, 아래 참조)는 1이므로 , 추가 정밀도가 있습니다.) 이 특정 형식은이 작업을 수행하지 않는 것 같습니다.

다른 부동 소수점 형식은 비정규 화 된 가수를 허용하여 추가 (음수) 거듭 제곱에 대한 정밀도 비트를 교환하여 지수보다 작은 (양수) 숫자를 나타낼 수 있습니다. of 2. 숨겨진 1 비트도 지원하지 않으면 지원하기 쉽고 지원하는 경우 조금 더 어렵습니다.


8,388,607 / 2 ^ 23은 가수로 얻을 수있는 값입니다. = 0x7FFFFF 및 지수 = 0x00. 단일 비트 값이 아니라 전체 가수와 중립이있는 값 또는보다 구체적으로 0 지수.

이 값이 직접 8388607이 아니고 나눗셈이 필요한 이유 (2 ^ 23이므로 더 적음) 예상했던 것보다) 묵시적인 기수 점 는 가수의 가 아니라 에 있습니다. 따라서 (부호 비트, 기수 점, 23 개의 1 비트) 및 +/- 111111111111 (여기서는 기수 점 없음,이 경우 정수만 있음,이 경우 127) )는 지수입니다.

mantissa = 0x7FFFFF with exponent = 0x7F는 8388607 * 2 ^ 104에 해당하는 가장 큰 값입니다. 여기서 104는 127-23에서 나옵니다. 다시 말하지만 가수에는 기수가 있기 때문에 2의 23 제곱을 뺍니다. 처음에. 기수가 끝에 있으면 가장 큰 값 (0x7FFFFF, 0x7F)은 실제로 8,388,607 * 2 ^ 127이됩니다.

다른 것 중에서 단일 비트 값을 고려할 수있는 방법이 있습니다. 가수. 하나는 가수 = 0x400000이고 다른 하나는 가수 = 0x000001입니다. 기수 또는 지수를 고려하지 않고 전자는 4,194,304, 후자는 1입니다. 지수가 0이고 기수를 고려하면 전자는 0.5 (십진수), 후자는 0.00000011920928955078125입니다. 최대 (또는 최소) 지수로 최대 및 최소 단일 비트 값을 계산할 수 있습니다.

(가수에 선행 0이있는 후자의 형식은 일부 숫자 형식에서 비정규 화 된 것으로 간주되며 정규화 된 표현은 지수가 -23 인 0x400000이됩니다.)

의견

  • 한 가지 의심이 있습니다. 8,388,607 / 2 ^ 23을 수행하면 가수의 단일 비트가 나타낼 수있는 것을 제공합니다. 그렇다면 8,388,607 / 2 ^ 23 * 2 ^ 127은 어떻게 최대 값을 나타 냅니까?
  • @hariprasad, 댓글 형식으로 설명하기가 너무 어렵 기 때문에 답에 포스트 스크립트를 넣겠습니다.
  • @hariprasad li>
  • 최소값은 어디입니까? '가 제목에서 요청되었습니다!
  • @CharlieParker, 최소값과 최대 값이 오프셋되는 정수 표현과 달리 부동 소수점 형식은 기호를 사용합니다. & 크기 표현. 여기서 크기는 지수와 가수로 구성됩니다. 부호 크기의 최대 숫자는 (1) 양수 (부호 비트는 0)이고 (2) 가능한 가장 큰 지수 및 (3) 가능한 가장 큰 가수입니다. 최소 숫자는 동일합니다. 부호 비트가 변경되는 것을 제외하고는 (1) 음수 (부호 비트는 1)이지만 (2) 가능한 가장 큰 지수, (3) 가능한 가장 큰 가수입니다. 위에서 설명했듯이 최소값은 -max에 불과하므로 - 기호를 입력하십시오.

답변

빠른 비교를 위해 IEEE 부동 소수점이 배치 된 방식 (부호, 지수, 가수)에서 빌릴 수 있습니다. 그러나 그 PDF에서 가수와 지수가 역전되는 것을 볼 수 있습니다.

이것은 당신을 비교하려면 먼저 부호 비트를 확인해야하고 하나가 승자가 아닌 경우 지수를 비교 한 다음 비교해야 함을 의미합니다. 가수.

하나가 양수이고 다른 하나가 음수이면 양수는 최대 값입니다.

둘 다 양수이고 하나의 지수가 더 크면 최대 값입니다 (둘 다 음수이면 최소값)

가수와 비슷합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다