<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機浮點(diǎn)數的實(shí)用快速降法

單片機浮點(diǎn)數的實(shí)用快速降法

作者: 時(shí)間:2012-03-08 來(lái)源:網(wǎng)絡(luò ) 收藏

4 程序源代碼

限于篇幅,只給出源代碼中的關(guān)鍵部分,即有效數字的計算部分。

;被除數為x,除數為y

;用yh,hl分別表示y的高16位和低16位

...

;假設x,y的有效數字部分分別在(dx,cx)和(bx,ax)中

;計算預估值Q0'=(x/4)/yh

shrl cx,#2 ;計算x/4

divu cx,bx ;計算(x/4)÷yh

ld fx, cx ;把商暫放入寄存器fx,即Q0'的高16位有 ;效數字

clr cx

divu cx,bx ;把余數末尾添0后面再除以yh

ld ex,cx ;把商暫放入寄存器ex,即Q0'

;的低16位有效數字

;(fx,ex)=Q0'

;計算修正因子 Q1=(yh-yl)/yh

cmp ax,0 ;判斷yl是否為0

jne getQ1 ;若yl非0,計算修正因數Q1

ld ax,ex ;若yl=0,修正因數Q1=1

ld bx,fx ;(Q0'×Q1)=Q0',可以直接計算Q

sjmp getQ

getQ1:

ld hx,bx ;把yh放于寄存器hx中

neg ax

dec bx ;計算yh-yl

divu ax,hx ;計算Q1=(yh-yl)÷yh

ld dx,ax ;把商暫時(shí)放入寄存器dx,即Q1的高16位有;效數字

clr ax

divu ax,hx ;把余數末尾添0后再除以yh,得Q1的;低16位有效數字

ld bx dx ;(bx,ax)=Q1

;計算Q0'×Q1=(fx,ex)×(bx,ax),只取32位有效數字

ld hx,bx

mulu cx,bx,ex ;(dx,cx)=bx×ex

mulu ax,fx ;(bx,ax)=ax×fx

clr ex

add cx,ax

addc dx,bx

addc ex,0 ;(ex,dx,cx)=(dx,cx)+(bx,ax)

mulu ax,fx,hx ;(bx,ax)=fx×hx

add ax,dx ;(bx,ax)=(bx,ax)+(ex,dx)

addc bx,ex ;(bx,ax)=Q0'×Q1

;計算校準值Q=(Q0' ×Q1)×4并調整階碼

getQ:

...

代碼到這里為止,商的有效數字已經(jīng)全部求出。只要再執行一些調整階碼的操作,就可以得到最終結果。

在作者開(kāi)發(fā)的一個(gè)80C196KC單片機系統中,涉及到了二進(jìn)制-十進(jìn)制數制轉換、分段線(xiàn)性插值、數字濾波等大量的運算,都是靠加減乘除等底層函數來(lái)實(shí)現的。

此外,本算法思路清晰,因此很容易加以推廣。例如,為了得到更高的精度,可取修正因子:

則相對誤差,轉化為十進(jìn)制,有效數字高達14位。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 浮點(diǎn)數 尾數 快速降法

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>