catch가 있습니다!float를 정수로 변환
난 IEEE 754 두 개의 연속 16 비트 정수로 저장된 단 정밀도 (32 비트) 부동 소수점을가집니다.
사용중인 프로세서에 부동 소수점 연산 또는 부동 소수점 데이터 유형이 없습니다! 내가 원하는 것은 float 값을 16 비트 부호있는 정수로 변환하는 것입니다. 프로세서에는 표준 정수 연산과 비트 조작 (마스킹, 시프 팅 등)이 있습니다.
32 비트 부동 소수점에서 16 비트 정수로 갈 때 정밀도를 약간 잃어 버릴 필요가 있다는 것을 제외하고는. 정수에는 문제의 값 범위를 기반으로하는 묵시적 스케일링 계수가 필요합니다.
다음은 간단한 예입니다. float의 범위가 0.00
에서 10.00
인 경우 이 경우 정수의 범위는 0 to 1000
입니다. 이 경우 정수의 척도는 100입니다.
IEEE 754은 1 부호 비트, 지수 (8 비트 바이어스) 및 23 비트 가수.
난 플로트의 구성 부분의 값을 재구성하기 위해 방정식을 알고있다 :
실수 값 = (-1)^Sign_bit * (1 + 가수) * 2^(지수-127).
내가 볼 수있는 주요 문제는 16 비트 부호있는 정수 (-32768 ~ +32767 범위)로 작업하고 오버플로 또는 언더 플로우를 피하는 것입니다.
나는 당신이 원하는 것을 이해하지 못합니다. –