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