의 지수 부동 소수점의 지수가 127만큼 이동하는 이유는 무엇입니까?
글쎄, 진짜 질문입니다 : 2의 보수 표기법과 비교하여 그러한 표기법의 장점은 무엇입니까?IEEE 754
IEEE 754
답변
저장된 지수는 부호가 없으므로 정수 명령어를 사용하여 부동 소수점 값을 비교할 수 있습니다. 전체 부동 소수점 값은 비교를 위해 부호가있는 정수 값으로 처리 될 수 있습니다 (2가 아닌).
32 비트 부동 소수점의 지수는 8 비트로 구성되지만 부호 비트는 없습니다. 따라서 범위는 효과적으로 [0; 255]입니다. 숫자 < 2^0을 나타내려면 해당 범위가 127만큼 이동되어 [-127; 128]이됩니다.
그런 식으로 매우 작은 숫자를 매우 정확하게 나타낼 수 있습니다. [0; 255] 범위에서, 작은 숫자는 가수의 제로가 많은 2^0 * 0.mantissa
으로 표시되어야합니다. 그러나 [-127; 128] 범위의 경우 작은 숫자는 2^-126 * 0.mantissa
(가수의 불필요한 0은 적음)으로 표시 될 수 있으므로 더 정확합니다. 희망을 얻으십시오.
저는 그가 2의 보수 대신 왜 오프셋이 사용되는지 묻고 있다고 생각합니다. –
죄송합니다. U2의 의미를 모르 셨습니다. – AndiDog
Hmmm 어딘가에서 이름 'U2'표기법을 발견했으며, 이는 약어라고 생각했습니다. 지금 내가 구글로 그것을, 나는 그것이 어떤 종류의 실수라고 생각한다. Obvouisly 나는 2의 보수 표기법에 대해 생각하고있었습니다. –
일부 잘못된 정보를 수정하기 위해서 : 그것은 단지 2^n * 1.mantissa
이고, 소수점의 infront는 암시 적으로 저장됩니다.
예, 1.가 있습니다. –
내 대답을 downvote 했습니까? 그것은 잘못된 정보가 아닙니다. 하나는 지수> -126에 대해서만 암시 적으로 저장되지만 -126에 대해서는 0이 암시 적으로 저장됩니다. 그것은 "비정규 화 번호"라고 불립니다. – AndiDog
나는 당신의 대답을 downvote하지 않았지만 당신의 대답은 여전히 오도 된/잘못된 것입니다. 당신은 2^-126 * 0 가증 언급하지만 지수가 -126이면 지수 + 바이어스 = 1 그래서 그것은 비정규 숫자가 아니므로 1은 암시 적으로 저장됩니다.또한 "작은 숫자"만 언급하기 때문에 컷오프는 어디에 있습니까? –
바이어스와 2의 보수 사이의 지수의 표현 가능한 범위에 약간의 차이가 있음에 유의하십시오. IEEE 표준은 (-127 ~ +128) 범위의 지수를 지원하지만 2의 보수이면 (-128 ~ +127) 지수를 지원합니다. 나는 표준이 편향표를 선택하는 이유를 정말로 모르지만위원회 위원들은 극소수보다는 극도로 많은 수를 허용하는 것이 더 유용하다고 생각했을지도 모른다.
IEEE 표준은 실제로 -126에서 +127 사이의 단 정밀도 지수를 지원합니다. 대개 -127 및 +128로 매핑되는 지수 인코딩은 특수한 의미 (0과 비정규, 무한대 및 NaN)를 갖습니다. –
@Stephen 캐논, ysap의 대답에 대한 응답 (죄송합니다, 이것은 내 대답에 후속 코멘트 있었어야하지만, 원래의 대답은 등록되지 않은 사용자로 입력 된, 그래서 정말 말씀 드릴 수 없습니다 아직).
스티븐, 분명히 당신 말이 맞아요, 제가 언급 한 지수 범위는 틀렸지 만 대답의 정신은 여전히 적용됩니다. 그것이 편향된 값 대신에 2의 보수이고 0x00과 0xFF 값이 여전히 특별한 값이라고 가정한다면, 편향된 지수는 2의 보수 지수보다 큰 (2x) 숫자를 허용합니다.
아, 전적으로 동의합니다. 여기, 당신은 = 할 수있는 몇 가지 담당자가있어 =) –
- 1. IEEE 754 : 정확히 작동합니까?
- 2. IEEE-754 데이터 압축 알고리즘
- 3. IEEE 754 트랩을 개발자에게 공개하는 언어는 무엇입니까?
- 4. iPhone SDK : NSString NSNumber IEEE-754
- 5. 녹음/재생 C는 IEEE 754 교환 형식을 두 배로합니다
- 6. matlab에서 32 비트 부동 소수점 (IEEE 754) 변환
- 7. pre-IEEE-754 C++ 부동 소수점 숫자를 C#
- 8. C++ 컴파일러가 IEEE 754 부동 소수점 표준을 사용하는지 확인하는 방법
- 9. IEEE 754-2008 (Densely Packed Decimal)의 구현 가능
- 10. IEEE-754 작업의 오픈 소스 c/C++ 구현이 있습니까?
- 11. IEEE 754 부동 디버그 - 메모리 리틀 엔디안의 실제 부동 수
- 12. IEEE-754 형식 정수를 부동 소수점 형식으로 출력하는 방법
- 13. IEEE 754 부동 소수점으로 2+ (2/7)을 변환하는 방법
- 14. IEEE 754는 어떤 언어로 제공됩니까?
- 15. IEEE 754 단 정밀도 부동 소수점 형식을 십진수로 변환하는 방법은 무엇입니까?
- 16. IEEE-754 double의 16 진수 표현을 사용하는 문자열을 JavaScript 숫자 변수
- 17. 4 문자를 Perl에서 32 비트 IEEE-754 부동 소수점으로 변환하려면 어떻게해야합니까?
- 18. 바이너리 데이터에서 64 비트 IEEE 표준 754 배정 밀도 숫자를 읽으려면 어떻게해야합니까?
- 19. IEEE 소프트웨어 표준
- 20. ACM과 IEEE 합류
- 21. IEEE-754 형식에 따라 16 진수 값을 단 정밀도 부동 소수점 숫자 및 이중 정밀도 부동 소수점 숫자로 변환하는 방법
- 22. Windows에서 FireWire/IEEE 1394 프로그래밍
- 23. 부동 점 : IEEE 기반으로하지만, 그래서 여기 진
- 24. IEEE 754로 변환 단 정밀도 부동 소수점 형식 도움말
- 25. 32 비트 부동 소수점을 IEEE 80 비트로 변환
- 26. IEEE vhdl 표준 라이브러리가 STL이 아닌 이유는 무엇입니까?
- 27. IEEE 확장 배정 밀도의 최소값과 최대 값을 계산하는 방법은 무엇입니까?
- 28. IEEE int-> float 변환은 + 및 *로 통근합니까?
- 29. MSVC++ 6에서 'ilogbf'와 같은 IEEE 수학 함수를 선언하는 법?
- 30. IEEE Python float을 (를) 마이크로 소프트 기본 float로 변환하는 방법
2의 보수 표기법을 사용하면 동일하게 작동하지 않겠습니까? –
이것은 사실이 아닙니다. 두 개의 음수 부동 소수점 값은 부호있는 정수로 제대로 비교되지 않습니다. 다른 모든 경우는 제대로 작동합니다. –
@Stephen : 그렇습니다. 부동 소수점 숫자는 부호가있는 정수로 비교 될 수 있지만 두 자리의 정수는 아닙니다. 부호 비트는 특별한 경우 처리가 필요합니다. –