IEEE 754 기본
IEEE 754 부동 소수점 표준은 숫자를 다음 형식으로 구성합니다.
비정규수
엔지니어가 비정규 구현 문제를 해결하기 위한 숫자입니다. 0.0을 제외한 모든 숫자는 이진수 표현에서 앞에 1이 붙습니다. 이 선행 비트의 정밀도 낭비를 피하기 위해 그들은 "선행 비트 규칙"을 만들었습니다.
그러나 이렇게 하면 0이 아닌 가장 작은 숫자가 이전 표준보다 커집니다. 엔지니어는 예외로 비정규 숫자를 도입했습니다.
이를 통해 가장 작은 비정규 값보다 작은 숫자를 표현할 수 있습니다.
비정규 숫자 트레이드오프
비정규 숫자는 비정규 숫자 사이의 트레이드오프를 나타냅니다. 정밀도와 표현 길이. 숫자가 작을수록 정밀도는 떨어지지만 표현되는 값의 수는 두 배가 됩니다.
시각화
기하학적으로 비정규는 지수 0의 범위를 확장하여 숫자에 사용 가능한 공간을 두 배로 늘립니다. 해당 범위 내에서 간격을 줄입니다.
비정규 구현
C float는 대부분의 데스크톱 컴퓨터에서 32비트 IEEE 754 숫자를 나타냅니다. 예제 C 프로그램은 비정규 수의 속성을 보여줍니다.
#include <assert.h> #include <inttypes.h> #include <math.h> #include <stdlib.h> #include <stdio.h> typedef struct {...} Float32; // Represents the 32-bit floating point float float_from_bytes(..., uint32_t fraction); // Reconstructs float from individual parts bool float32_equal(float f, uint32_t sign, uint32_t exponent, uint32_t fraction); // Compares float to individual parts int main() { assert(float32_equal(0.5f, 0, 126, 0)); assert(isnormal(0.5f)); ... // More assertions return EXIT_SUCCESS; }
구현의 비정규
일부 플랫폼에서는 비정규가 덜 효율적으로 구현될 수 있습니다. ARMv8은 성능 최적화를 위해 비정규를 0으로 반올림하는 "Flush-to-Zero" 모드를 제공합니다.
비정규 대 비정규
비정규와 비정규는 동의어입니다.
기타 특수 사례
위 내용은 비정규 숫자가 정밀도와 표현 길이 사이의 균형을 이루는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!