>백엔드 개발 >PHP 튜토리얼 >부동 소수점 수 IEEE 754

부동 소수점 수 IEEE 754

WBOY
WBOY원래의
2016-08-08 09:21:202051검색

십진수를 컴퓨터 저장 프로시저로 변환

9.625 단정밀도(32비트)를 예로 들어

  1. 십진수를 이진수 표현으로 변환
    9.625 = 1001.101 = 1 × 2 3 + 0 × 22 + 0 × 21 + 1 × 20 + 1 × 2-1 + 0 × 2-2 + 1 × 2-3

  2. 이진수 정규화
    IEEE 754에서는 이진 표현이 ±d.dd…d × βe, (0 ≤ d i < β) 형식이어야 한다고 규정합니다.
    즉, 1001.101 = 1.001 101 * 23

  3. 컴퓨터에 저장됩니다
    단정밀도 전체 길이 32비트
    1~23은 가수를 나타냅니다. 정규화 후의 이진수는 소수점 왼쪽에 1이 하나만 있으므로 생략 가능하므로 23비트를 사용하여 24비트를 나타냅니다. 즉, 가수는 1.001 101에 001 101입니다
    24-30은 지수를 나타냅니다: 1.001의 3 101 * 23
    31은 부호를 나타냅니다. 1은 음수, 0은 양수를 나타냅니다.
    또한 지수 비트는 8비트로 0~255 사이의 값을 표현할 수 있다. 그러나 지수는 음수일 수 있습니다(예: 0.625 = 0.101(이진수) = 1.01 * 2-1). 따라서 IEEE 754에서는 인덱스가 오프셋 코드를 증가시키도록 규정하고 있습니다: 정규화된 인덱스 값 + 127. 인덱스의 범위는 -127~128이 됩니다. 그러면 위의 지수는 130이 됩니다

    위의 규칙에 따라 이진수 뒤의 소수는 컴퓨터에 다음과 같이 저장됩니다. [0] [1000 0010] [0011 0100 0000 0000 0000 000]

정밀도 손실

  1. 정규화 후 이진수의 가수 부분이 23비트보다 훨씬 길어질 수 있으며, 컴퓨터가 실행될 때 후자 부분이 손실되는 것을 볼 수 있습니다. 그것을 저장합니다. 일반적인 값은 0.58입니다.

저작권: 이 글은 해당 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.

위에서는 부동 소수점 숫자 ieee 754에 대한 내용을 소개했으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.