DSP中浮點轉定點運算--定點數的加減乘除運算
3.定點數的加減乘除運算
簡單的說,各種運算的原則就是先把待運算的數據放大一定的倍數,在運算的過程中使用的放大的數據,在最終需要輸出結果的時候再調整回去。
舉個例來說,有如下運算:
// coefs1 = 0.023423; coefs2=0.2131
float coefs1,coefs2;
int result;
…
result = 34* coefs1+72* coefs2;
…
代碼的意思是,該模塊需要輸出一個整型的結果,但計算的過程中有浮點的運算。如果在定點的DSP中,這段代碼是無法運行的。
為了解決這個問題,我們可以這樣處理:首先,把coefs1,coefs2等類似的浮點數據擴大一定的倍數(具體擴大多少倍,依據精度要求不同),我們暫且把小數點向右移動4位,也就是擴大的倍數為:*10000,在最終的輸出的時候在縮小相同的倍數。修改后的代碼大致如下:
int coefs1,coefs2;
int result;
…
result = 34* coefs1+72* coefs2;
result /= 10000;
…
當然,上面的例子為了大家好理解,寫的可能不是太正確,不過基本的精髓應該是這些了。具體的處理過程,大家可以在網上搜索“第3章 DSP芯片的定點運算.doc”這篇文章,寫的很具體,這里不再羅嗦了。
以上就是本文的全部內容,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
C++利用easyx圖形庫實現(xiàn)創(chuàng)意天天酷跑小游戲
這篇文章主要為大家詳細介紹了C++如何利用easyx圖形庫實現(xiàn)創(chuàng)意小游戲——天天酷跑,文中的示例代碼講解詳細,快跟隨小編一起了解一下吧2023-03-03