2012-03-03 5 views
1

나는 fx1.15 표기법을 사용합니다. 기본 정수 값은 63183 (레지스터 값)입니다.고정 소수점 fx 표기법 및 변환

이제 위키 백과에 따르면 전체 길이는 15 비트입니다. 그 값은 내부에 맞지 않지, 그렇지?

따라서 fx1.16 값이라고 가정하면 어떻게 사람이 읽을 수있는 값으로 변환합니까?

답변

1

고정 소수점 값을 사람이 읽을 수있는 것으로 변환하려면 부동 소수점을 2로 나누고 소수 비트 수로 나누십시오. 예를 들어, 15 분수 비트,이 같은 2 = 32768^15, 당신이 사용하는 것, 그래서 뭔가가있는 경우 :

int x = <fixed-point-value-in-1.15-format> 
printf("x = %g\n", x/32768.0); 

이제 부동 소수점을 고정 소수점 숫자를 변환 printf()를 호출하는 비싼 작업을하고 일반적으로 고정 소수점을 사용하여 얻은 성능을 파괴합니다. 진단 목적으로 만이 작업을 수행한다고 가정합니다.

부동 소수점 연산이 금지되었거나 사용할 수 없기 때문에 플랫폼이 고정 소수점을 수행하는 경우 수동으로 소수점 이하 변환을 수행하는 행을 따라 다른 작업을 수행해야합니다. 정수를 기본 부동 소수점 값으로 32768을 곱한 값으로 모델링하고 거기에서부터 이동하십시오. 유용한 고정 소수점 코드 here이 있습니다.

p.s. 난 아직도 당신이 대답에 관심이 있는지, ashirk, (나는 다른 사람들을 위해 더 썼다),하지만 당신이 있다면, 스택 오버플로에 오신 것을 환영합니다!

+0

xx. 좋은 설명. – ashirk