고정 점에 2 복소수의 나눗셈을 수행하는 C 프로그램을 작성하고 있습니다. 부분 부분을 가져올 수 없습니다. 아래에 그것에 대한 자세한 내용입니다.고정 소수점을 사용한 복소 분할
I 2 개 복소수 가지고있을 수
I 고정 포인트N/M
할 필요
N = a + ib
M = c + jd
(부동 소수점 사용하지 않고) 상기 복소수
값 예시 :
a = 1.55, b = 1.44, c = 1.24, d = 0.55
N = 1.55 + i(1.44)
M = 1.24 + j(0.55)
을
고정 소수점으로 변환하기 위해, 나는 a, b, c 및 d에 2^14
을 곱합니다. 그 후 그들은이 될 : 혼자 실수 부에 대한 다음
N/M = (a + ib)/(c + jd) = ((a + ib) * (c - jd))/((c + jd) * (c - jd))
:
a = 0x6333, b = 0x5c28, c = 0x4f5c and d = 0x2333
그럼 내가 할 N/M
작업을 수행 할 수
(ac + bd)/(c^2 + d^2)
등등 ..
내가 직면 한 문제는 내가 어떻게 문제를 해결할 수 있는지 이해하지 못한다는 것이다. 부문에서 분수 부분. 대부분 1 또는 0 인 소수 부분 만 표시됩니다.
소수 부분을 가져 오는 올바른 방법은 무엇입니까? 위의 예에서 실수 부분은 1.47490과 같아야합니다. 그러나 나는 단지 1을 얻을 수 있습니다.
고정 포인트에 대한 복잡한 부문을 수행하는 올바른 방법을 누군가가 도와 줄 수 있습니까?
대단히 감사합니다.
a, b, c, d에 대해 float 변수를 사용하십시오 !!! 또는 피연산자 중 하나를 부동 문자로 변환하십시오. – Venkatesh
먼저 실제 고정 산술 연산을 시도해보십시오. (a/b)? 나는 당신이 (16384 * 1.55/1.44) 대신에 1을 얻을 것이라고 확신한다. –