2013-08-29 1 views
0

비트 표현을 기반으로 :이해 기계 정밀도 나는이 계산되는 방법을 이해하기 위해 노력하고

다음과 같이 숫자를 나타내는 컴퓨터 프로그램 : 전체 부호 1 비트, 지수 5 비트 및 20 비트 가수. 분명히 우리는 양수와 음수를 나타 내기 위해 바이어스를 사용해야합니다. 이것을 바탕으로 기계 정밀도와 가능한 최대 수를 어떻게 계산합니까?

+0

부동 소수점 기반이란 무엇입니까? 숫자가 정규화 되었습니까? 2 진수와 정규화 된 경우, 표현은 저장되지 않은 선두 비트를 사용합니까? 가장 큰 지수와 가장 작은 지수는 무엇입니까? 5 비트 저장 공간 만 알면 충분하지 않습니다. 무한대와 NaN을 위해 예약 된 값을 가진 [-15,16], [-16,15] 및 [-15, 15] 중 하나 일 수 있습니다. –

+0

또한 전체 significand (선행 비트 포함) 또는 감소 유효 기호 (선행 비트 제외)에 대해 20 비트입니까? –

답변

0

아이디어를 얻는 한 가지 방법은 프로그램이 0으로 반올림 한 때를 테스트하는 것입니다. 파이썬으로이 코드를 작성할 수 있습니다. N.의 다른 값에 대한

N = 52 
a = 1.0-2**(-N); 
print "%1.25f" % a 

시도 밖으로 인쇄가 가장 낮은 N 제로를 제공, 그것은 당신에게 중요한에 사용되는 비트 수에 대한 표시를 제공 할 것입니다. print 문은 프로그램이 실제로 숫자를 0으로보고 0을 표시 할뿐만 아니라 확인합니다.

+0

'a '를'a = 1.0-2 ** (- N)'으로 설정 한 후에'a-1'을 출력하려 했습니까? 어쨌든 이것은 도움이되지 않습니다. OP는 비표준 부동 소수점 형식이 사용되는 가상의 상황에 대해 질문하고 가설 형식의 유효 숫자의 비트 수를 알고 있습니다. –

0

는 IEEE 표준을 사용하는 가정, 숫자 표시를위한 수식은 다음

number = sign*(1+2^(-m)*significand)*2^(exponent-bias) 
m은 (정수)를 저장하는 데 사용되는 비트의 개수

유효수 (또는 가수) 및 bias2^(e-1) - 1과 동일하다. 여기서, e은 지수를 저장하는 데 사용되는 비트 수이다.

우리가 그로부터 파생 할 수있는 것을 보겠습니다. 참고

  • 02^m - 1 사이 significand 범위의 값 (귀하의 경우 : 0과 1,048,575 사이).
  • exponent의 값은 02^e - 1 사이입니다. 그러나 두 극단 값은 정규화되지 않은 숫자라고하는 예외 (비정규 숫자, 무한 및 NAN) 용으로 예약되어 있습니다.

따라서,

  • 소수부 (1+2^(-m)*significand)의 가장 작은 값이 큰 값 (- 20), 약 1,999999046 케이스 2-2 ^() 2-2^(-m) 인 1이다.
  • 총 지수 exponent-bias의 예외가 아닌 가장 작은 값은 -2^(e-1)+2 (사례 -14)이며 가장 큰 값은 2^(e-1)-1 (귀하의 경우 : 15)입니다. (- 약 14) 0,000061035 케이스 2^(투입)
  • 표현 될 수있는 최소 (양극) 정규화 수가 2^(-2^(e-1)+2)
    • 이다

      :

    그래서 그것은 밝혀 가장 큰 것은 (2-2^(-m))*(2^(2^(e-1)-1))입니다 (귀하의 경우 (2-2^(- 20)) * (2^15), 약 65535,96875). "기계 정밀도"에 관해서는

, 난 당신이 무슨 뜻인지 잘 모르겠지만, 사람은이 약 당신을 위해, (여기 21) m+1를 호출하는 바이너리 정밀도와 진수의 관점에서 정밀도가 log10(2^(m+1))입니다 6.3.

나는 아무 것도 잘못 내지 않았기를 바란다. 나는 이것에 대해 전문가가 아니다.