我正在编写一个C程序来执行固定点的2个复数分割。 我无法从中得到小数部分。以下是更多细节。使用固定点的复杂分部
我有2个复数:
N = a + ib
M = c + jd
我需要做N/M
在固定点(不使用浮点)
对上述复数的示例值可以是:
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
相乘。 之后,他们成为:
a = 0x6333, b = 0x5c28, c = 0x4f5c and d = 0x2333
然后执行N/M
操作我做的:
N/M = (a + ib)/(c + jd) = ((a + ib) * (c - jd))/((c + jd) * (c - jd))
然后单独的实部:
(ac + bd)/(c^2 + d^2)
等..
我面临的问题是我不理解如何获得来自该部门的小数部分。 我只得到小数部分,其中大部分是1或0.
获得小数部分的正确方法是什么?在上面的例子中,真实部分应该是1.47490。但我只能得到1.
任何人都可以请帮助我以正确的方式做固定点的复杂部门?
非常感谢。
为a,b,c,d使用浮点变量!或者将任何一个操作数转换为浮点数 – Venkatesh
首先尝试使用真正的固定算术:例如, (a/b)?我敢打赌你会得到1而不是(16384 * 1.55/1.44)。 –