문제

합리적인 만티사/지수 균형을 가진 주어진 수의 바이트 중 하나)는 항상 바이트 수의 절반의 서명되지 않은 정수의 범위를 완전히 정확하게 보유 할 수 있습니까?

예를 들어 8 바이트 더블은 4 바이트 부호없는 INT의 수를 완전히 정확하게 보유 할 수 있습니까?

이것이 끓는 것은 2 바이트 플로트가 1 바이트 부호없는 int의 범위를 유지할 수있는 경우입니다.

하나의 바이트 부호없는 int는 물론 0-> 255입니다.

도움이 되었습니까?

해결책

IEEE754 64 비트 더블은 32 비트 정수를 나타낼 수 있습니다.(ㅏ) 정밀도와 32 비트 정수에만 사용할 수있는 비트는 필요합니다. 32 :-)

(비 IEEE754 이중 정밀도) 64 비트 부동 소수점 번호는 32 비트 미만의 정밀도를 갖습니다. 그것은 (지수로 인해) 진정으로 많은 수를 허용하지만 정밀한 비용으로 허용됩니다.

결론은 정수에있는 것보다 부동 소수점 수의 만티사에 더 많은 정밀도가 있다면 (그리고 지수에 충분한 비트를 확장하기에 충분한 비트) 정밀도를 잃지 않고 표현할 수 있다는 것입니다.


(ㅏ) 기술적으로 53 번째 정밀도는 묵시적입니다. 1 시퀀스가 시작될 때 "variablity"의 양은 52 비트 일 수 있습니다. 52 또는 53이든 여전히 32 비트 정수를 나타내기에 충분한 비트입니다.

다른 팁

예. 플로트 (또는 이중)는 잘릴 필요가없는 정수를 정확하게 나타내도록 보장됩니다. 더블의 경우, 53 비트의 정밀도가 있으므로 32 비트 정수와 정확히 64 비트의 작은 (통계적으로 말하면) 비율을 정확하게 나타 내기에 충분합니다.

정확히 범위는 구현에서 많은 요소에 달려 있다는 범위가 정확히 무엇이지만, 지수 필드가 0으로 설정되면 정수를 정확히 표현할 수 있다고 말함으로써이를 낮출 수 있습니다. Mantissa 필드 (사인 비트를 가정). IEEE 754 Double-Precision의 경우 52 비트 번호를 정확하게 나타낼 수 있습니다. 일반적으로 Mantissa는 전체 구조의 절반 이상이됩니다.

Double의 작동 방식에 대한 자세한 내용은이 블로그 게시물을 살펴볼 수 있습니다. 부동 소수점 번호의 해부학.

플로팅 포인트 숫자에 대해 이야기 할 때 "완전히 정확하게"라는 단어를 사용하지 않을 것입니다. 그러나 네, a double 32 비트 정수를 나타낼 수 있습니다.

플로트와 int의 다른 조합이 사실인지 모르겠습니다.

실제로 말하면, 당신은 당신의 기계가 지원하는 것보다 플로팅 포인트를 사용하고 싶지 않으므로, bignums를 사용하여 합리적인 산술로 전환하십시오. 그렇게하면 정밀도가 보장됩니다.

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