单片微型计算机多字节浮点快速相对移位法开平方运算的实现
单片微型计算机多字节浮点快速相对移位
法开平方运算的实现 Microc砌puterApp|ic~tionsVo1.16.No.1O.2000开发应用型电脑应用2000年第l6
卷第lO期
单片微型计算机多字节浮点快速相对移位法
开平方运算的实现
赵伟厶
王晶芝
厶
摘要本文啸,绍一种可在徽型机上由汇编语言完成 的多字节浮点快速开平方运算的方法它具有精度高,速度快 和使用方便等特点.在多字节浮点的数学运算中很多函敷运 算.特别是复台函数运算都依档于开方运算,
运算的精度和速度是解决复杂浮点教学问题
关键词
算平方报
芒担型!士墨垫主王芏:
一
,引言
固此.提高开可
的关键所在
翟兰翌登f计
在计算机做高精度数学运算时.通常采用浮点连.其中 昧了加,减,乘除运算外.开平方运算是髭常用的一忡运算. 目前.在开方运算中.通常采用的数据结掏有二种:一种是采 用"减奇"算法;另,种是采用"牛顿迭代算法.在定点数扦方 中常使用"减奇"算法.但对于一个较大数开平方要七大量运
算时同.且精度低;"牛顿迭代法"虽然简单,但是初值易选 择.迭代次数不定.收敛速度慢且不易确定.还要不断使用浮 除法程序,所以对于快速高精度的数据处理不昭理想.本文 舟绍一种可以在微型计算机上实现多字节浮点映违开平方运 算的方法.
二,二进制数开方原理
二进制数开平方基本方法与十进制开方基本类似试根 总是两位一试,所以,用上一政的"根"乘2后加i就产生了新 的试报.下面以(144)J0开方为例:(144)n=flO010(JO0】z而 (10010000)开平方的结果为:
?(1OOlo0oo)z一(1lO0)?一(12)0
?(144)一(12)J0
(144).开平方结果为(12)与二进制开方结果相同 因此,二进制开方与十进制开方方法上完全相似.电是在 试根过程中.向多减时"报"记1【不够减时根"记0; 三,快速相对移位法开平方运算的实现
'-rP弓oI6
本文根据二进制数开平方的基本原理导出快速相对移位 法的基本模型根据"分缝法原理推出了"相对移位法,它将 浮点二进制数分为阶码处理与尾数处理两部分,其重点放在 尾数处理上;应用相对移位.在保证二位一节正常开方的基础 上,巧妙地使相减的试根区长度缩短了一倍.从而使运算时同 大大缩短.
ll尾数处理
对于n位二难制数开方,通常设立2n位区域.前n位为 被开方区,后n位为扩展区.这样才能保证结果为n位的精 度.下面以具体实例说明相对移位法的具体实现过程.假设n 一8.
对尾数(10010000)2进行开方,将它放入被开方区.后面
加上8位扩展区,结果区(8位)清0.临时区与试根区清o.
结果区被开方区扩展区
0000000010oi000000000000
……
h蝴试0000000001000000 I)被开方区与选报区比较
研话准
!!!l!!!!I!!
够减,cY0.被开方区高位为0
11!!l!!!l!!!
结果与被开方区左移1位
!!!!!l!!!!!!!!
,
CY一道结果低位
试根区处理
l竺!竺i}
结果桔时区,试根区置Ol
匦二]亟二]
临时区与试根区右移1位
2>被开方与试根区再比较
茔晶鐾喜藻类差毖冀罂簧垂部讲师长囊弃?:: ?
32?
!!l!!!l!!!!一
够减,CY=o,被开方区高位为.
MicrocompaterApplicationsVo1.16.No.10.2000开发应用擞型电脑应用2000年第l6
卷第lO期
00000010l00000000
结果与被开方区左移1伍
0~000011
cr一送结果低位
试根区赴理
100000011Ol000000l 结果一临对区,试根区置0l 00000000l11010000 临时区与试根区右移2位
3>被开方区与试根区比较 !!!!f!l!一…一
不够减,CY=I,被开方区恢复为原值,高,立为0
00000110l0000000000000000
结果与被开方区左移1位
00000110
试根区赴理
!!!竺!!I!
一送结果低位
!!I!!!f
结果一临时区,试根区置0l 匝二]二
临时区与试棍区右移3位
<4>被开方区与试根区比较 !!!!!!!!l…
不够减,CY=1.被开方区恢复为原值,高位为0.'..'.................'.??__'-?'...........
?..........................一,
!I!..I!
结果与被开方匾左移l位
!!l!!!塑!!一,?_
一送结果低位
以上为相对移位法的简要图示,结果区为(OOC'OIjO0)2.
正是(1o010o0o)2的开方结果,从上进处理过程我可看 出.尾数处理主要有二十过程:?被开方隧J试垠比较.? 处理试根区.进二个过程是得到浮点尾数的关键.r而上 述过程为倒进行详述.
首先,结果区清0,临时区清0.试根区故人4oH【0l试 商);被开方区减试根区.若蝣减(CY一?,并且被开方高位 为…0,则结果区与被开方区一起左移l位.CY逑结粜1氐位. 表示产生当前临时结果;若被开方区高位为…1.被jr方?就 不能移位了.否则将丢失有效中问结果.所以这时仅结区左 移1盘,cY送结果低位.由于此次被开方【盂未左移.11试根 右移时仅右移1位.与相对移位不符,而且:符台开方理, 因此处理方法为:
在移位时若被开方区高位为"l".则;功被仆方.仅穆 结军区,特殊计数增1,以便使试根在F一趺试Rf多F咎 1位,与被开方区正确对齐比较
?
33?
其次,被开方区减试根区.若不够减(CY一1)时,则先恢 复被开方区.其他处理方法与罅减时类似.
试根区处理时.先将当前结果区送入临时区.然后临时区 与试根区一起右移,将已得到的当前结果移^试根区.此时若 特殊计数不为0.则临时区与试根区继续右移特殊计数的次 数,向被开方区对齐.进行下一次比较,直至结束
由于被开方区每次左移1位.试根区又右移1位相当于 一
砍向下对l节(2位).这就是相对移位法与正常开方的相 似之处,但它节省了移位次数和空间.
2.阶码处理
当阶码为n一2k时(k为整数);不论正负一律折半.保留 符号,即为当前结果阶码.因为:
?一,一?.2
尾数M右移一位空出一节准备得到的结果符号位,开方方法 见尾数处理.
当阶码为n一2k叶一1时,分两种情况处理.阶码为正时t阶 码减1,成为偶数,此时尾数M有一位为整数了,开方完毕以 后.在结果中仍有一位为整数(1.…开方后仍为1.* **),阶码除以2后再进行结果规格化处理;阶码为负时,亦 如此处理.M不动,开方少计l位空出符号位.若负阶码用原 码表示,颓增I(实际是减少i的处理),反之亦然. 四,讨论
当被开方区小于试根时,并且由于高位为…I不能左移, 特殊计数增i;设相比以前结果为x位,产生新结果为x+i 位,形成的试根也多了l位,由于特殊计数也增加了1,试根还 要多右移1位.比上一攻试根值多下移2位.相当干试根下移 1节,与被开方区中间结果相比,由于被开方区一次增加l 节.且高位为…i.试根一次仅增1位,因此下砍肯定够减.不 会出现连续不罅减且被开方区不能左移的情况. 若连续不罅减.则被开方区高位为…0.可以继续左移.不 受影响
此外亦注意临界值,如00(H)减1为81(H),81(H)增1 为00(H)等.
在分析试根移位总次数时,找们看到共需N—l+2+… +n(n+1)/z次移位,若想缩短此时间,可以采用在开方过半 以后,将试根变右移为从右向左对齐.这样相当于对两个n/2 位的被开方数进行操作.那么移位攻数
N'=2<1+2+…+月/2)=z[(1+./2)/2]/z+2)/4
大约为N/4,因此试根移位时间大大缩短.可一试.
五,小结
cs一5l单片机上,在M当晶振为73728M时.用牛顿造 (下转第38页)
MicrocomputerApplicationsVo1.16.No.1O,2000开发应用般型电脑应用2000年第
16卷第1O期
elseif(delta>1F>'2~teita(2)nI一4;}
elseif(delta)2&&Aeha3){ll一5}
elseif(delta>一3{l1—6{}
result—adt[k1]nnmber[j1]}/*确定具体修正蛙*
for(j=O;】《21;J+十){/*采用加权平均法汁葬枯控制毋 cEro[[k]numl~er[门*ctr]volt[1]. channel[i]Un—urx/sumxq-resu[t*加修正垃*,
returachanne10]Un}
1
五,运行结果
目前.该系统巳投^运行,运行状况良好.旨项技水指标 匀达到设计要求.并已取较好的经济效益,如同4所示_如其中 一
路运行曲线.该路的设定温度为485C.
(上接第朋玎)
四,结束语
目前,现代集成电路技术的发展使以现场可编程'I阵l刊 为代表的大容量可编程逻辑器件的等教?数迅速提高-其规 模直逼
门阵列,选到了系统集成的水平特别是进^二十 世纪90年代后.随着CPID,FPGA等现场可编程辑器件的 逐渐兴起.VHDL,Verilog等通用性好,移植性强的硬件描述 语言的普及,ASIC技术的不断完善,EDA披l水在现代数字系 统和微电子技术应用中起着越来越重要的作用.从堪常意义
/,——一
,
|
{
}
圉4运行曲线
参考文献
[1]窦振中-模糊逻辑控制技术及其应用.北京航空航天大学 出版社.1995年
[2]扬松林工程模糊论方法及其应用.国防工业出版社,1996 王
(收稿日期:2000年5月15日)
上来说.现代电子系统的设计已经再也离不开EDA技术的帮 助了
参考文献
[1]黄正瑾.《在糸统编程技术及其应用?.辜南太学出版社 Ee]贯新章,郝跃.《擞电子挂术概论》,国防工业出啦社 [3常青等.《可编程专用集成电路及其应用与设计实践一国 防工业出版社
(收稿日期20OO年6月14E1)
,墅,,丝,竖,,篁:!拦竖E,牡j,篁3E竖,9, (上接第33玎)
代法对五字节浮点二进制数进行开平方一当数为小阶码正数参考文献 时小于..'D'大于.-o'D"'精度要求为如寸_耗时I[1]罔明德,微型计算机硬件软件及其应用北京:清华大学出120ms--250ms,若阶码更大,迭代撬数也更大-耗时可观;『版社1988:5
用快速开方法实现同样的开平方运算.由于对尾数采用r手I[2]黄铠,计算机算术运算原理,结构与设计北京:科学出版
工相对移位法.不论数值太小一执行时问在44ms膏右,H.精度I[3]何立民.MCS51
帛列单片机应用系统设计.北京:北京
选10一.同样的条件.在MCS一96单B-~&th行时间有12.I航空航无大学出版社l990a
.l[4]薛均义等,MCS—Sl/gS系列单片机微型计算机及羹应一
Lm?I用西安:西安交通太举出憧社1993.
因此,快速相对移位法开平方运算方法对单片微机数{[5j赵伟,王晶芝."单片{酿型计算机多字节浮点侍法快速扫描
据处理能力的提高大有好处J运算的实现"微型电脑应裟::2.?年s月24日) ?08?