비트 표현을 기반으로 :이해 기계 정밀도 나는이 계산되는 방법을 이해하기 위해 노력하고
다음과 같이 숫자를 나타내는 컴퓨터 프로그램 : 전체 부호 1 비트, 지수 5 비트 및 20 비트 가수. 분명히 우리는 양수와 음수를 나타 내기 위해 바이어스를 사용해야합니다. 이것을 바탕으로 기계 정밀도와 가능한 최대 수를 어떻게 계산합니까?
비트 표현을 기반으로 :이해 기계 정밀도 나는이 계산되는 방법을 이해하기 위해 노력하고
다음과 같이 숫자를 나타내는 컴퓨터 프로그램 : 전체 부호 1 비트, 지수 5 비트 및 20 비트 가수. 분명히 우리는 양수와 음수를 나타 내기 위해 바이어스를 사용해야합니다. 이것을 바탕으로 기계 정밀도와 가능한 최대 수를 어떻게 계산합니까?
아이디어를 얻는 한 가지 방법은 프로그램이 0으로 반올림 한 때를 테스트하는 것입니다. 파이썬으로이 코드를 작성할 수 있습니다. N.의 다른 값에 대한
N = 52
a = 1.0-2**(-N);
print "%1.25f" % a
시도 밖으로 인쇄가 가장 낮은 N 제로를 제공, 그것은 당신에게 중요한에 사용되는 비트 수에 대한 표시를 제공 할 것입니다. print 문은 프로그램이 실제로 숫자를 0으로보고 0을 표시 할뿐만 아니라 확인합니다.
'a '를'a = 1.0-2 ** (- N)'으로 설정 한 후에'a-1'을 출력하려 했습니까? 어쨌든 이것은 도움이되지 않습니다. OP는 비표준 부동 소수점 형식이 사용되는 가상의 상황에 대해 질문하고 가설 형식의 유효 숫자의 비트 수를 알고 있습니다. –
는 IEEE 표준을 사용하는 가정, 숫자 표시를위한 수식은 다음
number = sign*(1+2^(-m)*significand)*2^(exponent-bias)
m
은 (정수)를 저장하는 데 사용되는 비트의 개수
유효수 (또는 가수) 및 bias
는 2^(e-1) - 1
과 동일하다. 여기서, e
은 지수를 저장하는 데 사용되는 비트 수이다.
우리가 그로부터 파생 할 수있는 것을 보겠습니다. 참고
0
와 2^m - 1
사이 significand
범위의 값 (귀하의 경우 : 0과 1,048,575 사이).exponent
의 값은 0
과 2^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.
나는 아무 것도 잘못 내지 않았기를 바란다. 나는 이것에 대해 전문가가 아니다.
부동 소수점 기반이란 무엇입니까? 숫자가 정규화 되었습니까? 2 진수와 정규화 된 경우, 표현은 저장되지 않은 선두 비트를 사용합니까? 가장 큰 지수와 가장 작은 지수는 무엇입니까? 5 비트 저장 공간 만 알면 충분하지 않습니다. 무한대와 NaN을 위해 예약 된 값을 가진 [-15,16], [-16,15] 및 [-15, 15] 중 하나 일 수 있습니다. –
또한 전체 significand (선행 비트 포함) 또는 감소 유효 기호 (선행 비트 제외)에 대해 20 비트입니까? –