音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

如何用51快速實現(xiàn)下面計算

作者:newliujian 欄目:單片機
如何用51快速實現(xiàn)下面計算
收到X,經(jīng)計算后要發(fā)出去.
X:32Bit的數(shù)據(jù),uchar x[4],4次接收完成

Y = 2^32 * X / 10^8

Y:32Bit的數(shù)據(jù),想弄成uchar y[4],然后發(fā)開算, 再發(fā)出去,不知道行不行?但是2^32這個數(shù)太大了,不好弄啊....

有沒有什么好點的方法,可以快點算出來?



2樓: >>參與討論
汽車電子
2^32用左移
   10^8不好搞

3樓: >>參與討論
computer00
直接寫Y=43*X不行嗎?
 
4樓: >>參與討論
rtfsc
那要看“/”是啥
 
5樓: >>參與討論
conwh
10^8=5F5E100H
將5F5E1帶進公式進行運算,在計算結(jié)果里減掉一個字節(jié)

6樓: >>參與討論
conwh
re
直接寫Y=43*X不行嗎?

可能嫌精度不夠

7樓: >>參與討論
xwj
Y=43*X-X/((10^8)/5032704)
Y=43*X-X/((10^8)/5032704)
=43*X-X/19.87

自己根據(jù)精度取舍

* - 本貼最后修改時間:2006-7-28 7:42:52 修改者:xwj

8樓: >>參與討論
newliujian
re:
先謝謝各位的幫助.

 這里就是對精度要求很高.

汽車電子:
  左移32為的話,怎么定義數(shù)據(jù)類型?

xwj:
  X,Y都是32位,但中間的 0x2b*X 會不會益出而導(dǎo)致結(jié)果的誤差? 且X不是一個定植,好象不能直接減吧?




* - 本貼最后修改時間:2006-7-25 14:08:53 修改者:newliujian

9樓: >>參與討論
農(nóng)民講習(xí)所
不先設(shè)定X的數(shù)值范圍,實現(xiàn)不了。
X最大是多少?

10樓: >>參與討論
newliujian
X最大是 90,000,000---90M
我X是用的ulong ;
通過x得到的;uchar x[4], x為從P口得到的數(shù)據(jù)

X |= x[3];
X = X<<8;
X |= x[2];
...
...
X |=x[0];

方法比較笨吧 

11樓: >>參與討論
good02xaut
re
Y = 2^32 * X / 10^8=Y = 2^24 * X / 5^8
建立表格:
******************************************
商             余數(shù)
T31=2^31/5^8  DEL31=2^31%5^8
T30=2^30/5^8  DEL30=2^30%5^8
...
Tn=2^n/5^8    DELn=2^n%5^8
....
T0=2^0/5^8    DEL0=2^0%5^8
******************************************
{
Y=0;
DELT=0;
X<<=24;
if(X&mask31)
Y+=T31,DELT+=DEL31;
else
;
..................
if(X&mask0)
Y+=T0,DELT+=DEL0;
else
;
}
{
X=DELT;
if(X&mask31)
Y+=T31,DELT+=DEL31;
else
;
......
}
......
if(X<5^8)
   STOP!
   

12樓: >>參與討論
angelcmq
re
精度不夠吧!

13樓: >>參與討論
newliujian
沒有看很懂
PS:
因為X最大是 90,000,000---90M, 我忘了說最小值,最小是10,000,000---10M. 步進是2...
-------------------------------------------

因為有了  X<<=24;  那X因該定義成什么類型才不會出錯呢?

14樓: >>參與討論
computer00
keil51中沒有那么長的整數(shù)類型。
樓主你那樣寫,最后的結(jié)果還是一樣的,因為編譯器會將2^32/10^8當(dāng)作整數(shù)來處理,即43,而不是浮點數(shù)。


改成浮點數(shù),才能達到那么大的范圍。并且最多只能有7位精度。

15樓: >>參與討論
IceAge
找一個 32 * 32 的函數(shù),這類 function 到處都有
2^32  * 10^8  = 42.94967296
42.94967296 * 2^24 = 720575940.37927936

取 X * 720575940 64bit結(jié)果的 56bit --- 24bit

16樓: >>參與討論
conwh
用匯編還是簡單一點,位數(shù)自由確定
最大數(shù)和最小數(shù)是9倍的關(guān)系,精度是保留整數(shù),就采用先約分再計算

17樓: >>參與討論
newliujian
先謝謝各位的意見
Re: IceAge
  那我看看有沒有再回

Re: computer00
  我也是想到?jīng)]有這個類型才提出的這個問題。也是這樣,才想知道大家有沒有好的方法。

Re: conwh
 用匯編,不好意思,我目前這個能力還很差,能不能提細一點


18樓: >>參與討論
kfawj
除法就是右移
好好看看右移指令,應(yīng)該沒有問題。

19樓: >>參與討論
王紫豪
推薦用各小arm,整的塊!要不就查表!
 
20樓: >>參與討論
conwh
用匯編只要存儲器夠用多少位都可計算
一點提示:
乘法就是做移位加法
除法就是移位減法,不夠減的再移位并恢復(fù)原數(shù).如果需要來信奉獻一段.conwh@yeah.net

21樓: >>參與討論
good02xaut
數(shù)據(jù)類型可以靈活設(shè)置
編譯器支持,就用內(nèi)置的,比如double。
不支持,那就自己定義一個struct。

解決問題的核心是理解除法的本質(zhì),如何精確得到商和余數(shù)!

要求速度,必須提供先知數(shù)據(jù),減少CPU的運算,建立查找表。
而且要根據(jù)累加器的位寬,對表項合理劃分!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
華虹芯片SHC1704不知是好是壞。支持國產(chǎn)芯片的各位幫幫助吧
千萬別用sprintf
運放能放大1000倍嗎?可不可靠?
定時器做1秒延遲成功了,可是數(shù)碼管顯示不一樣
c調(diào)匯編與大家共享,雜散資料總匯
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號