<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                【32.1 “異或”運算。】 “異或”運算也是以位為單位進行運算的。位是指二進制中的某一位,位只能是0或者1。兩個數的“異或”運算就是轉換成二進制后每一位的“異或”運算。 “異或”運算的符號是“^”。運算規律是:兩個位的“異或”運算,如果兩個位都相同,那么運算結果就是0;如果兩個位不同(相異),則運算結果是1。比如: 0^0等于0。(兩個位相同) 0^1等于1。(兩個位相異) 1^0等于1。(兩個位相異) 1^1等于0。(兩個位相同) 現在舉一個完整的例子來分析“^”運算的規律。有兩個unsigned char類型的十進制數分別是12和9,求12^9的結果是多少?分析步驟如下: 第一步:先把參與運算的兩個數以二進制的格式展開。十進制轉二進制的方法請參考前面第14,15,16節的內容。 十進制12的二進制格式是:00001100。 十進制9的二進制格式是: 00001001。 第二步:二進制數右對齊,按上下每一位進行“異或”運算。 十進制的12 -> 00001100 十進制的9 -> ^00001001 “異或”運算結果是 -> 00000101 第三步:把二進制的 00000101轉換成十六進制是:0x05。轉換成十進制是5。所以12^9的結果是5。 【32.2 “異或”在項目中的應用。】 “異或”在哪些項目上經常應用?以我個人的項目經驗,平時很少用“異或”,我本人在項目中用過兩次“異或”,第一次是在某項目做串口通訊協議時,通過“異或”算法,增加一個校驗字節,此校驗字節是一串數據依次相“異或”的總結果,目的是為了增加數據傳送時的抗干擾能力。第二次是把它用來對某變量的某個位進行取反運算,如何用“異或”來實現對某位進行取反的功能?要實現這個功能,首先要清楚“異或”運算有一個潛在的規律:任何一個位,凡是與0進行“異或”運算都保持不變,凡是與1進行“異或”運算都會達到取反的運算效果。因此,如果想某位實現取反的功能,只要把相關的位與“1”進行“異或”運算就可以實現取反的功能。二進制中的一個位要么是0,要么是1,不管是0還是1,只要與1進行“異或”運算,是會達到取反的運算目的,0的會變成1,1的會變成0。請看以下這個例子: 0^1等于1。(兩個位相異) 1^1等于0。(兩個位相同) 以上的例子只是列舉了一個位,如果把一個字節的8位展開來,只要某位與“1”進行“異或”運算,都可以實現某位取反的功能。比如,一個十六進制的0x55,如果要這個字節的低4位都取反,高4位不變,只需要把該數據與十六進制的0x0F進行“異或”運算就可以達到目的。請看以下這個例子: 十六進制的0x55 -> 01010101 十六進制的0x0F -> ^00001111 “異或”運算結果是 -> 01011010 上述運算結果二進制的01011010轉換成十六進制是0x5A,轉換成十進制是90。 【32.3 異或運算的“自異或簡寫”。】 當被異或數是“保存變量”時,存在“自異或簡寫”。 “保存變量”=“保存變量” ^ “某數” ; 上述自異或簡寫如下: “保存變量” ^ =“某數” ; 比如: unsigned char c=9; c^=5; //相當于c=c^5; 最后的計算結果c是12。 【32.4 例程練習和分析。】 現在編寫一個程序來驗證剛才講到的“異或”運算: 程序代碼如下: /\*---C語言學習區域的開始。-----------------------------------------------\*/ void main() //主函數 { unsigned char a; unsigned char b; unsigned char c=9; a=12^9; b=0x55^0x0F; c^=5; //相當于c=c^5; 最后的計算結果c是12。 View(a); //把第1個數a發送到電腦端的串口助手軟件上觀察。 View(b); //把第2個數b發送到電腦端的串口助手軟件上觀察。 View(c); //把第3個數c發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:5 十六進制:5 二進制:101 第2個數 十進制:90 十六進制:5A 二進制:1011010 第3個數 十進制:12 十六進制:C 二進制:1100 分析: 通過實驗結果,發現在單片機上的計算結果和我們的分析是一致的。 【32.5 如何在單片機上練習本章節C語言程序?】 直接復制前面章節中第十一節的模板程序,練習代碼時只需要更改“C語言學習區域”的代碼就可以了,其它部分的代碼不要動。編譯后,把程序下載進帶串口的51學習板,通過電腦端的串口助手軟件就可以觀察到不同的變量數值,詳細方法請看第十一節內容。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看