我正在編寫一個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)。 –