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

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

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

位運(yùn)算讓嵌入式系統(tǒng)更快更穩(wěn)定

5RJg_mcuworld ? 來源:cc ? 2019-02-15 08:56 ? 次閱讀

位運(yùn)算加速技巧

本方法可以讓C語言指令進(jìn)一步接近匯編指令的執(zhí)行效率,提高單片機(jī)、嵌入式系統(tǒng)的速度和穩(wěn)定性,但編程時應(yīng)采取函數(shù)化的編程法——例如使用swap()函數(shù)時,必要時加注釋。注:本例涉及一些計算機(jī)原理的思想,較為抽象,讀者可利用1和2(01和10)等簡單的數(shù)字進(jìn)行驗(yàn)證,并上機(jī)實(shí)驗(yàn),以加深印象。0.位運(yùn)算心法:(掌握粗體字)&(與邏輯):有0出0,全1出1;|(或邏輯):有1出1,全0出0;

~(非邏輯):空即是色,色即是空;

^(異或):相異出1,相同出0;1. 如果乘上一個2的倍數(shù)數(shù)值,可以改用左移運(yùn)算(Left Shift) 加速 300%x = x * 2;x = x * 64;

//改為:

x = x << 1; // 2 == 21x = x << 6; // 64 == 262. 如果除上一個 2 的倍數(shù)數(shù)值,可以改用右移運(yùn)算加速?350%x = x / 2;x = x / 64;

//改為:x = x >> 1; // 2 == 21x = x >> 6; // 64 == 263. 數(shù)值轉(zhuǎn)整數(shù)加速 10%x = int(1.232)

//改為:x = 1.232 >> 0;4. 交換兩個數(shù)值(swap),使用 XOR 可以加速20%var t:int = a;a = b;b = t;

//equals:

a = a^b;b = a^b;a = a^b;5. 正負(fù)號轉(zhuǎn)換,可以加入 300%i = -i;

//改為

i = ~i + 1; // NOT 寫法

//或

i = (i ^ -1) + 1; // XOR 寫法6. 取余數(shù),如果除數(shù)為 2 的倍數(shù),可利用 AND 運(yùn)算加速 600%x = 131 % 4;

//equals:

x = 131 & (4 - 1);7. 利用 AND 運(yùn)算檢查整數(shù)是否為 2 的倍數(shù),可以加速 600%isEven = (i % 2) == 0;//equals:isEven = (i & 1) == 0;8. 加速 Math.abs 600% 的寫法1,寫法2 又比寫法1加速 20%//寫法1i = x < 0 ? -x : x;//寫法2i = (x ^ (x >> 31)) - (x >> 31);//寫法3i=x^(~(x>>31)+1)+(x>>31);9. 比較兩數(shù)值相乘之后是否擁有相同的符號,加速 35%eqSign = a * b > 0;//equals:eqSign = a ^ b > 0;

其它位運(yùn)算技巧

1. RGB 色彩分離var 24bitColor:uint = 0xff00cc;var r:uint = 24bitColor >> 16;var g:uint = 24bitColor >> 8 & 0xFF;var b:uint = 24bitColor & 0xFF;2. RGB 色彩合并var r:uint = 0xff;var g:uint = 0x00;var b:uint = 0xcc;var 24bitColor:uint = r << 16 | g << 8 | b;

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

    關(guān)注

    5054

    文章

    18926

    瀏覽量

    301097
  • 位運(yùn)算
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    8404

原文標(biāo)題:巧用位運(yùn)算,讓嵌入式系統(tǒng)更快更穩(wěn)定!

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式學(xué)習(xí)建議

    ,最好能有自己動手的空間。不花一分硬件錢想要學(xué)好嵌入式系統(tǒng)不實(shí)際,因?yàn)檫@是實(shí)踐性很強(qiáng)的學(xué)科。好書,可以人少走彎路,不被誤導(dǎo)。好老師也可以是做過一些實(shí)際項(xiàng)目的學(xué)長(一定要找做過幾個成功項(xiàng)目的學(xué)長或老師做
    發(fā)表于 10-22 11:41

    嵌入式系統(tǒng)的原理和應(yīng)用

    嵌入式系統(tǒng)是一種專用的計算機(jī)系統(tǒng),其設(shè)計初衷是執(zhí)行特定任務(wù),而非作為通用計算機(jī)使用。這類系統(tǒng)通常作為更大系統(tǒng)的一部分,起到控制、監(jiān)控或輔助的
    的頭像 發(fā)表于 10-05 17:03 ?360次閱讀

    嵌入式系統(tǒng)怎么學(xué)?

    系統(tǒng)設(shè)計與調(diào)試:需要掌握嵌入式系統(tǒng)的設(shè)計方法和調(diào)試技術(shù),包括硬件設(shè)計、軟件設(shè)計、電路調(diào)試等,以確保系統(tǒng)穩(wěn)定性和可靠性。 隨著技術(shù)的不斷進(jìn)
    發(fā)表于 07-02 10:10

    嵌入式系統(tǒng)軟硬件基礎(chǔ)知識大全

    嵌入式系統(tǒng)是現(xiàn)代科技發(fā)展的一個重要分支,廣泛應(yīng)用于工業(yè)控制、消費(fèi)電子、醫(yī)療設(shè)備、汽車電子等領(lǐng)域。本文試圖全面解析嵌入式系統(tǒng)的軟基礎(chǔ)知識,以期
    發(fā)表于 05-09 14:12

    再談嵌入式實(shí)時操作系統(tǒng)

    由于嵌入式處理器早期功能單一且運(yùn)算能力不高,嵌入式應(yīng)用已不能滿足各個領(lǐng)域不斷增長的需求。嵌入式操作系統(tǒng)應(yīng)運(yùn)而生,
    的頭像 發(fā)表于 04-09 17:27 ?684次閱讀
    再談<b class='flag-5'>嵌入式</b>實(shí)時操作<b class='flag-5'>系統(tǒng)</b>

    嵌入式fpga是什么意思

    嵌入式FPGA是指將FPGA技術(shù)集成到嵌入式系統(tǒng)中的一種解決方案。嵌入式系統(tǒng)是一種為特定應(yīng)用而設(shè)計的計算機(jī)
    的頭像 發(fā)表于 03-15 14:29 ?1130次閱讀

    fpga是嵌入式

    FPGA(現(xiàn)場可編程門陣列)不是嵌入式系統(tǒng),但FPGA在嵌入式系統(tǒng)中有著重要的應(yīng)用。
    的頭像 發(fā)表于 03-14 17:19 ?2023次閱讀

    嵌入式系統(tǒng)發(fā)展前景?

    嵌入式系統(tǒng)發(fā)展前景? 嵌入式系統(tǒng),從定義上來說,是一種專用的計算機(jī)系統(tǒng),它被設(shè)計用來控制、監(jiān)視或者幫助操作一些設(shè)備、裝置或機(jī)器。在過去的幾年
    發(fā)表于 02-22 14:09

    嵌入式系統(tǒng)的應(yīng)用實(shí)例

    嵌入式系統(tǒng)的三個基本要素是嵌入性、專用性與計算機(jī)系統(tǒng)。
    的頭像 發(fā)表于 01-22 09:57 ?956次閱讀

    啥是嵌入式嵌入式都有啥?薪資如何?前景如何

    ,以實(shí)現(xiàn)穩(wěn)定、可靠、高效的功能。嵌入式系統(tǒng)廣泛應(yīng)用于各個領(lǐng)域,包括消費(fèi)電子、汽車、醫(yī)療設(shè)備、工業(yè)控制、物聯(lián)網(wǎng)(IoT)設(shè)備、航空航天等。 嵌入式系統(tǒng)
    的頭像 發(fā)表于 01-17 16:39 ?643次閱讀
    啥是<b class='flag-5'>嵌入式</b>?<b class='flag-5'>嵌入式</b>都有啥?薪資如何?前景如何

    嵌入式處理器簡介和種類

    嵌入式處理器是嵌入式系統(tǒng)的核心,是控制、輔助系統(tǒng)運(yùn)行的硬件單元。范圍極其廣闊,從最初的4處理器,目前仍在大規(guī)模應(yīng)用的8
    的頭像 發(fā)表于 12-26 12:26 ?927次閱讀

    嵌入式開發(fā)學(xué)習(xí)的十三法則分享

    的“ 初始敏感性” 對于其“ 最終計算結(jié)果” 的影響就變得微乎其微了。 二、實(shí)時性法則 嵌入式系統(tǒng)的計算結(jié)果,不僅依賴于系統(tǒng)的邏輯運(yùn)算之正確性,而且也依賴于這個
    發(fā)表于 12-21 06:32

    什么是嵌入式系統(tǒng)?嵌入式系統(tǒng)的具體應(yīng)用

    嵌入式,一般是指嵌入式系統(tǒng)。用于控制、監(jiān)視或者輔助操作機(jī)器和設(shè)備的裝置。
    的頭像 發(fā)表于 12-20 13:33 ?2291次閱讀

    嵌入式系統(tǒng)原理與設(shè)計

    電子發(fā)燒友網(wǎng)站提供《嵌入式系統(tǒng)原理與設(shè)計.zip》資料免費(fèi)下載
    發(fā)表于 11-17 14:10 ?0次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>原理與設(shè)計

    嵌入式系統(tǒng)的定義與發(fā)展歷史簡述

    簡介:嵌入式系統(tǒng)誕生于微型機(jī)時代,經(jīng)歷了漫長的獨(dú)立發(fā)展的單片機(jī)道路。給嵌入式系統(tǒng)尋求科學(xué)的定義,必須了解嵌入式
    發(fā)表于 11-09 08:31 ?0次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>的定義與發(fā)展歷史簡述