色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在單片機上實現(xiàn)開根號

Wildesbeast ? 來源:網(wǎng)絡(luò)整理 ? 作者:佚名 ? 2020-01-19 11:02 ? 次閱讀

單片機開平方的快速算法

因為工作的需要,要在單片機上實現(xiàn)開根號的操作。目前開平方的方法大部分是用牛頓迭代法。我在查了一些資料以后找到了一個比牛頓迭代法更加快速的方法。不敢獨享,介紹給大家,希望會有些幫助。

1.原理

因為排版的原因,用pow(X,Y)表示X的Y次冪,用B[0],B[1],。..,B[m-1]表示一個序列,

其中[x]為下標(biāo)。

假設(shè):

B[x],b[x]都是二進制序列,取值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 已知,因為 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]可以采用試探法來確定。

因為b[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的各位。

使用這種算法計算32位數(shù)的平方根時最多只須比較16次,而且每次比較時不必把M的各位逐

一比較,尤其是開始時比較的位數(shù)很少,所以消耗的時間遠(yuǎn)低于牛頓迭代法。

2. 流程圖

(制作中,稍候再上)

3. 實現(xiàn)代碼

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

-------------------------------------------------------------------------------

-

/****************************************/

/*Function: 開根號處理 */

/*入口參數(shù):被開方數(shù),長整型 */

/*出口參數(shù):開方結(jié)果,整型 */

/****************************************/

unsigned int sqrt_16(unsigned long M)

{

unsigned int N, i;

unsigned long tmp, ttp; // 結(jié)果、循環(huán)計數(shù)

if (M == 0) // 被開方數(shù),開方結(jié)果也為0

return 0;

N = 0;

tmp = (M 》》 30); // 獲取最高位:B[m-1]

M 《《= 2;

if (tmp 》 1) // 最高位為1

{

N ++; // 結(jié)果當(dāng)前位為1,否則為默認(rèn)的0

tmp -= N;

}

for (i=15; i》0; i--) // 求剩余的15位

{

N 《《= 1; // 左移一位

tmp 《《= 2;

tmp += (M 》》 30); // 假設(shè)

ttp = N;

ttp = (ttp《《1)+1;

M 《《= 2;

if (tmp 》= ttp) // 假設(shè)成立

{

tmp -= ttp;

N ++;

}

}

return N;

}
責(zé)任編輯 LK

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634667
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4607

    瀏覽量

    92840
收藏 人收藏

    評論

    相關(guān)推薦

    單片機能處理帶根號的公式么?如何去除公式的根號

    單片機能處理帶根號的公式么?誤差是不是會比較大?有沒有什么辦法去除公式的根號?或者減少單片機計算的誤差
    發(fā)表于 07-08 17:12

    單片機如何做根號運算?

    我要用單片機測交流有效值,需要根號單片機可以直接做根號運算嗎?
    發(fā)表于 09-25 23:11

    【MCU每周論點】吳鑒鷹帶你根號單片機跑的更快

    一份。 大家知道因為工作的需要,要在單片機上實現(xiàn)根號的操作。目前工程師開平方的方法大部分是用牛頓迭代法。吳鑒鷹在查了一些資料以后找到了一個比牛頓迭代法更加快速的方法。不敢獨享,介紹
    發(fā)表于 03-03 19:06

    單片機根號的快速算法

    因為工作的需要,要在單片機上實現(xiàn)根號的操作。目前開平方的方法大部分是用牛頓迭代法。我在查了一些資料以后找到了一個比牛頓迭代法更加快速的方法。不敢獨享,介紹給大家,希望會有些幫助。1.
    發(fā)表于 04-10 07:00

    何在單片機上使用c++?

    何在單片機上使用c++?
    發(fā)表于 10-08 06:38

    代碼是如何在單片機上跑的呢

    淺談:對于任何電子產(chǎn)品,硬件是軟件運行的基礎(chǔ),而軟件賦予了硬件靈魂,兩者有機結(jié)合成為一個功能豐富、強大的系統(tǒng)。我們寫的代碼是如何在單片機上跑的呢?下面以比較簡單的方式簡述一下,如果還要研究很多細(xì)節(jié)
    發(fā)表于 11-17 07:47

    何在STM32單片機上實現(xiàn)Printf函數(shù)打印串口信息并進行代碼調(diào)試?

    何在STM32單片機上實現(xiàn)Printf函數(shù)打印串口信息并進行代碼調(diào)試?
    發(fā)表于 12-02 07:35

    單片機上實現(xiàn)FTP

    何在單片機上實現(xiàn)FTP文件上傳這篇文章是我本人編寫的 在網(wǎng)上也是絕無僅有一開始發(fā)表在我的網(wǎng)易博客上了 結(jié)果被轉(zhuǎn)移且被誤傷 有可能存在某些字符或文字出錯的地方有時間我會重新編寫, 目前大家先看
    發(fā)表于 01-07 06:53

    何在單片機上使用TEA加密通信源代碼免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何在單片機上使用TEA加密通信源代碼免費下載。
    發(fā)表于 07-19 17:37 ?2次下載
    如<b class='flag-5'>何在</b><b class='flag-5'>單片機上</b>使用TEA加密通信源代碼免費下載

    何在51單片機上使用DS1302

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何在51單片機上使用DS1302。
    發(fā)表于 07-17 17:38 ?5次下載
    如<b class='flag-5'>何在</b>51<b class='flag-5'>單片機上</b>使用DS1302

    何在2KB內(nèi)存的單片機上實現(xiàn)俄羅斯方塊

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何在2KB內(nèi)存的單片機上實現(xiàn)俄羅斯方塊。
    發(fā)表于 06-04 17:52 ?1次下載

    何在單片機上實現(xiàn)卡爾曼濾波詳細(xì)計算方法和程序概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何在單片機上實現(xiàn)卡爾曼濾波詳細(xì)計算方法和程序概述。
    的頭像 發(fā)表于 08-11 11:23 ?1.3w次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>單片機上</b><b class='flag-5'>實現(xiàn)</b>卡爾曼濾波詳細(xì)計算方法和程序概述

    何在51單片機上實現(xiàn)串口收發(fā)命令

    串口通信在電子行業(yè)中應(yīng)用較廣,通過上位機發(fā)送命令,實現(xiàn)各種功能的控制及數(shù)據(jù)的反饋。本文就是在51 單片機上實現(xiàn)串口收發(fā)命令,程序調(diào)試正常,可以運用到控制系統(tǒng)中。
    發(fā)表于 11-26 17:02 ?12次下載

    單片機】代碼是如何在單片機上運行起來的?

    淺談:對于任何電子產(chǎn)品,硬件是軟件運行的基礎(chǔ),而軟件賦予了硬件靈魂,兩者有機結(jié)合成為一個功能豐富、強大的系統(tǒng)。我們寫的代碼是如何在單片機上跑的呢?下面以比較簡單的方式簡述一下,如果還要研究很多細(xì)節(jié)
    發(fā)表于 11-10 19:20 ?3次下載
    【<b class='flag-5'>單片機</b>】代碼是如<b class='flag-5'>何在</b><b class='flag-5'>單片機上</b>運行起來的?

    單片機上如何實現(xiàn)快速的開方運算

    最近,做項目時,需要使用開發(fā)運算,但是調(diào)用標(biāo)準(zhǔn)c庫的sqrt函數(shù),發(fā)現(xiàn)該函數(shù)有2k多大小,當(dāng)然執(zhí)行時間也就很長了,根本不適合單片機的運算。故而,網(wǎng)上找了一個簡化的算法,編譯出來后,只有不到100字節(jié)
    發(fā)表于 11-16 15:51 ?7次下載
    <b class='flag-5'>單片機上</b>如何<b class='flag-5'>實現(xiàn)</b>快速的開方運算
    主站蜘蛛池模板: 九九热在线免费观看| 浪潮AV色综合久久天堂| 快播dvd吧| 日本无码人妻丰满熟妇5G影院| 亚洲成在人线视频| 99re精品视频在线播放视频| 国产产一区二区三区久久毛片国语 | 无码日韩人妻精品久久蜜桃入口| 亚洲一级毛片免费在线观看| free性中国hd护士高清| 国产在线精品视亚洲不卡| 妹妹成人网| 亚洲 成人网| a三级黄色片| 和老外3p爽粗大免费视频| 欧美亚洲韩日午夜| 亚洲国产精品自在自线观看| H揉捏娇喘乳叫床NP调教视频| 国产亚洲美女精品久久久2020| 欧美18videosex性欧美老师| 亚洲qvod图片区电影| seyeye在清在线| 久久re这里视频精品8| 天天看高清影视在线18| 97在线国内自拍视频| 好吊妞国产欧美日韩视频| 日韩成人在线视频| 100国产精品人妻无码| 国产在线精品亚洲二品区| 日韩丰满少妇无码内射| 97视频免费在线| 久草国产在线播放| 香蕉久久夜色精品国产小说| 爱情岛论坛网亚洲品质| 两性午夜刺激爽爽视频| 亚洲精品视频在线观看视频| 第七色男人天堂| 欧美男男网站免费观看videos| 伊人久久大香| 回复术士人生重启在线观看| 无码乱人伦一区二区亚洲|