日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
單片機(jī)開平方的快速算法
單片機(jī)開平方的快速算法
 更新時(shí)間:2008-8-17 19:44:11  點(diǎn)擊數(shù):4
【字體: 字體顏色
單片機(jī)開平方的快速算法 

  因?yàn)楣ぷ鞯男枰?要在單片機(jī)上實(shí)現(xiàn)開根號的操作。目前開平方的方法大部分是用牛頓
迭代法。我在查了一些資料以后找到了一個(gè)比牛頓迭代法更加快速的方法。不敢獨(dú)享,介
紹給大家,希望會(huì)有些幫助。 

1.原理 
因?yàn)榕虐娴脑?用pow(X,Y)表示X的Y次冪,用B[0],B[1],...,B[m-1]表示一個(gè)序列,
其中[x]為下標(biāo)。 

假設(shè): 
   B[x],b[x]都是二進(jìn)制序列,取值0或1。 
   M = B[m-1]*pow(2,m-1) + B[m-2]*pow(2,m-2) + ... + B[1]*pow(2,1) + B[0]*pow
(2,0) 
   N = b[n-1]*pow(2,n-1) + b[n-2]*pow(2,n-2) + ... + b[1]*pow(2,1) + n[0]*pow
(2,0) 
   pow(N,2) = M 

   (1) N的最高位b[n-1]可以根據(jù)M的最高位B[m-1]直接求得。 
   設(shè) m 已知,因?yàn)?nbsp;pow(2, m-1) <= M <= pow(2, m),所以 pow(2, (m-1)/2) <= N <= 
pow(2, m/2) 
   如果 m 是奇數(shù),設(shè)m=2*k+1, 
   那么 pow(2,k) <= N < pow(2, 1/2+k) < pow(2, k+1), 
   n-1=k, n=k+1=(m+1)/2 
   如果 m 是偶數(shù),設(shè)m=2k, 
   那么 pow(2,k) > N >= pow(2, k-1/2) > pow(2, k-1), 
   n-1=k-1,n=k=m/2 
   所以b[n-1]完全由B[m-1]決定。 
   余數(shù) M[1] = M - b[n-1]*pow(2, 2*n-2) 

   (2) N的次高位b[n-2]可以采用試探法來確定。 
   因?yàn)閎[n-1]=1,假設(shè)b[n-2]=1,則 pow(b[n-1]*pow(2,n-1) + b[n-1]*pow(2,n-2), 
2) = b[n-1]*pow(2,2*n-2) + (b[n-1]*pow(2,2*n-2) + b[n-2]*pow(2,2*n-4)), 
   然后比較余數(shù)M[1]是否大于等于 (pow(2,2)*b[n-1] + b[n-2]) * pow(2,2*n-4)。這種
比較只須根據(jù)B[m-1]、B[m-2]、...、B[2*n-4]便可做出判斷,其余低位不做比較。 
   若 M[1] >= (pow(2,2)*b[n-1] + b[n-2]) * pow(2,2*n-4), 則假設(shè)有效,b[n-2] = 
1; 
   余數(shù) M[2] = M[1] - pow(pow(2,n-1)*b[n-1] + pow(2,n-2)*b[n-2], 2) = M[1] - 
(pow(2,2)+1)*pow(2,2*n-4); 
   若 M[1] < (pow(2,2)*b[n-1] + b[n-2]) * pow(2,2*n-4), 則假設(shè)無效,b[n-2] = 
0;余數(shù) M[2] = M[1]。 

   (3) 同理,可以從高位到低位逐位求出M的平方根N的各位。 

使用這種算法計(jì)算32位數(shù)的平方根時(shí)最多只須比較16次,而且每次比較時(shí)不必把M的各位逐
一比較,尤其是開始時(shí)比較的位數(shù)很少,所以消耗的時(shí)間遠(yuǎn)低于牛頓迭代法。 

2. 流程圖 
  (制作中,稍候再上) 

3. 實(shí)現(xiàn)代碼 
這里給出實(shí)現(xiàn)32位無符號整數(shù)開方得到16位無符號整數(shù)的C語言代碼。

  • 上一篇: MSP430F423 sigma-delta code
  • 下一篇: 關(guān)于指針函數(shù)的范例
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1