<nobr id="eeyoh"><big id="eeyoh"></big></nobr>

  • <button id="eeyoh"><acronym id="eeyoh"><cite id="eeyoh"></cite></acronym></button>

    <dd id="eeyoh"></dd>
    1. <dd id="eeyoh"><center id="eeyoh"></center></dd>

      <th id="eeyoh"></th>
      1. <span id="eeyoh"></span>
        更多課程 選擇中心

        嵌入式培訓
        達內IT學院

        400-111-8989

        嵌入式教程分享:如何運用嵌入式位運算

        • 發布:嵌入式培訓
        • 來源:嵌入式教程
        • 時間:2019-02-14 16:20

        作為嵌入式工程師你可以巧妙的使用位運算嗎?你知道怎么運用可以讓嵌入式系統更穩定嗎?下面小編就和大家分享一下:巧用位運算,讓嵌入式系統更快更穩定

        嵌入式培訓位運算

        一、位運算加速技巧

        本方法可以讓C語言指令進一步接近匯編指令的執行效率,提高單片機、嵌入式系統的速度和穩定性,但編程時應采取函數化的編程法——例如使用swap()函數時,必要時加注釋。

        注:本例涉及一些計算機原理的思想,較為抽象,讀者可利用1和2(01和10)等簡單的數字進行驗證,并上機實驗,以加深印象。

        0.位運算心法:(掌握粗體字)

        &(與邏輯):有0出0,全1出1;

        |(或邏輯):有1出1,全0出0;

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

        ^(異或):相異出1,相同出0;

        1. 如果乘上一個2的倍數數值,可以改用左移運算(Left Shift) 加速 300%

        x = x * 2;

        x = x * 64;

        //改為:

        x = x << 1; // 2 == 21

        x = x << 6; // 64 == 26

        2. 如果除上一個 2 的倍數數值,可以改用右移運算加速 350%

        x = x / 2;

        x = x / 64;

        //改為:

        x = x >> 1; // 2 == 21

        x = x >> 6; // 64 == 26

        3. 數值轉整數加速 10%

        x = int(1.232)

        //改為:

        x = 1.232 >> 0;

        4. 交換兩個數值(swap),使用 XOR 可以加速20%

        var t:int = a;

        a = b;

        b = t;

        //equals:

        a = a^b;

        b = a^b;

        a = a^b;

        5. 正負號轉換,可以加入 300%

        i = -i;

        //改為

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

        //或

        i = (i ^ -1) + 1; // XOR 寫法

        6. 取余數,如果除數為 2 的倍數,可利用 AND 運算加速 600%

        x = 131 % 4;

        //equals:

        x = 131 & (4 - 1);

        7. 利用 AND 運算檢查整數是否為 2 的倍數,可以加速 600%

        isEven = (i % 2) == 0;

        //equals:

        isEven = (i & 1) == 0;

        8. 加速 Math.abs 600% 的寫法1,寫法2 又比寫法1加速 20%

        //寫法1

        i = x < 0 ? -x : x;

        //寫法2

        i = (x ^ (x >> 31)) - (x >> 31);

        //寫法3

        i=x^(~(x>>31)+1)+(x>>31);

        9. 比較兩數值相乘之后是否擁有相同的符號,加速 35%

        eqSign = a * b > 0;

        //equals:

        eqSign = a ^ b > 0;

        二、其它位運算技巧

        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;

        上面的技巧你學會了嗎?如果你恰恰對嵌入式也是非常感興趣,歡迎來達內參加2月份嵌入式培訓,2月14日達內贈送到訪情侶電影票,情侶表明學費立減1314元,活動僅一天呦!有興趣的小伙伴快來報名吧!

        預約申請免費試聽課

        填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

        上一篇:嵌入式教程:嵌入式入門知識點匯總
        下一篇:達內嵌入式培訓課程大綱

        裸編程怎么做?裸編程具體做法

        嵌入式編程中你必須知道的小知識

        嵌入式C語言編程小知識總結

        有哪些工具可以讓嵌入式開發事半功倍?

        • 掃碼領取資料

          回復關鍵字:視頻資料

          免費領取 達內課程視頻學習資料

        • 視頻學習QQ群

          添加QQ群:1143617948

          免費領取達內課程視頻學習資料

        Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

        選擇城市和中心
        黑龍江省

        吉林省

        河北省

        湖南省

        貴州省

        云南省

        廣西省

        海南省

        中文第一社区天天射干20191024香蕉视频1024香蕉视频操逼逼网 百度 好搜 搜狗
        <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>