2010-04-18 7 views
1

나는 24 비트 고정 소수점 계산을 사용하는 응용 프로그램을 가지고 있습니다. 부동 소수점을 지원하는 하드웨어로 이식 할 예정이므로 속도 최적화를 위해 모든 고정 소수점 기반 계산을 다음과 같이 변환해야합니다. 부동 소수점 기반 계산. 이 코드 용 고정 소수점 알고리즘에서 부동 소수점 변환

, 그렇게이 계산되기 때문에, 고정 소수점 정밀도 (23 비트)로 스케일링 된 가수 및 지수로 정수 변환 않는
for(i=0;i<8207;i++) 
{ 
    // Do n^8/7 calculation and store 
    // it in mantissa and exponent, scaled to 
    // fixed point precision. 

} 

가수를 산출한다. 가형 부분을 정밀 비트로 나누고 지수 비트를 정밀 비트로 뺀 값을 float으로 변환하려고하면 실제로는 ' '이 작동합니다. 더 나은 방법을 제안 해주세요.

답변

2

변환 인수를 계산하고 곱하면됩니다. 고정 소수점 시스템에서 1.0을 나타내는 값은 무엇입니까? 1.0을 곱하면 변환됩니다.

고정 소수점은 일반적으로 정수 부분의 고정 된 수의 비트와 소수 부분의 고정 된 수의 비트를 나타냅니다. 설명에 따르면 정수 1 비트와 분수 23 비트가 있다고 추측합니다. 따라서 1.0 표현은 0x80000입니다. 변환 요소는 1.0/0x80000입니다.

double conversionFactor = 1.0/0x80000; 
floating = fixed * conversionFactor; 
+0

감사가있는 경우. 당신이 많은 도움이 될 수있는 편리한 예를 들어 설명해 주시겠습니까? – Viks

1

하여 고정 소수점 숫자는 부분의 23 비트, 답장을 보내

f = n * (1.0/0x800000) 
+0

가수와 지수 모두에 적용 할 수 있어야합니다. 또는 가수에서만. 지수 부분은 어떻게해야합니까? – Viks

+1

고정 소수점에는 지수 부분이 없습니다. –

관련 문제