<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                【33.1 “按位取反”運算。】 “按位取反”運算也是以位為單位進行運算的。位是指二進制中的某一位,位只能是0或者1。跟前面“加、減、乘、除、與、或、異或”有點不一樣的地方是,“按位取反”的運算只有1個對象,它不像加法運算那樣可以與其它第2個對象產生關系,比如“a加b”這里有2個對象a和b,而“a按位取反”只有1個對象a。一個數的“按位取反”運算就是把該數轉換成二進制后對每一位的“取反”運算。 “按位取反”運算的符號是波浪符號“~”。運算規律是:針對一個數的“按位取反”,先將其展開成二進制的格式,然后每個位取反,所謂取反就是1的變成0,0的變成1。 現在舉一個完整的例子來分析“~”運算的規律。有兩個unsigned char類型的十進制數分別是5和0,求~5和~0的結果分別是多少?分析步驟如下: 第一步:先把參與運算的兩個數以二進制的格式展開。十進制轉二進制的方法請參考前面第14,15,16節的內容。 十進制5的二進制格式是: 00000101。 十進制0的二進制格式是: 00000000。 第二步:將它們二進制格式的每一位取反,1的變成0,0的變成1。 (a)對5的按位取反。 十進制的5 -> ~00000101 “按位取反”運算結果是 -> 11111010 (b)對0的按位取反。 十進制的0 -> ~00000000 “按位取反”運算結果是 -> 11111111 第三步: (a)把二進制的11111010轉換成十六進制是:0xFA。轉換成十進制是250。所以~5的結果是250。 (b)把二進制的11111111轉換成十六進制是:0xFF。轉換成十進制是255。所以~0的結果是255。 【33.2 “非”運算。】 注意,“非”運算不是以位為單位進行運算的。“非”跟“按位取反”有點相似,但是區別也明顯。“按位取反”是以位為單位進行運算的,側重在局部。而“非”是針對一個數的整體,側重在全局。“非”只有兩種狀態“假”和“真”。0代表假,大于0的數值代表真,也可以說“非”假即真,“非”真即假。不是假的就是真的,不是真的就是假的。強調的是兩種狀態的切換。在數值表示上,用0代表假的狀態,用1代表真的狀態。“非”的對象也只有1個,它不像加法運算那樣可以與其它第2個對象產生關系,比如“a加b”這里有2個對象a和b,而“a的非”只有1個對象a。 “非”運算的符號是感嘆號“!”,注意輸入這類運算符號的時候不能用漢字輸入法,而是要切換到英文字符的輸入法下再輸入,否則編譯不通過(其它運算符也一樣,都要求在字符輸入法下輸入)。“非”運算的規律是:針對某個數的“非”,不管此數有多大,只要它大于0,那么被“非”后就一定是0。也不管此數是什么變量類型,只要它數值等于0,那么被“非”后就一定是1,而不是0xff或者0xffff之類。 現在舉一個完整的例子來分析“!”運算的規律。有兩個unsigned char類型的十進制數分別是5和0,求!5和!0的結果分別是多少?分析思路如下: (a)針對5的“非”運算。 5大于0,是一個整體,被“非”后為0. (b)針對0的“非”運算。 0就是0,是一個整體,被“非”后為1. 【33.3 例程練習和分析。】 現在編寫一個程序來驗證剛才講到的“按位取反”和“非”運算: 程序代碼如下: /\*---C語言學習區域的開始。-----------------------------------------------\*/ void main() //主函數 { unsigned char a=5; unsigned char b=5; unsigned char c=0; unsigned char d=0; a=~a; b=!b; c=~c; d=!d; View(a); //把第1個數a發送到電腦端的串口助手軟件上觀察。 View(b); //把第2個數b發送到電腦端的串口助手軟件上觀察。 View(c); //把第3個數c發送到電腦端的串口助手軟件上觀察。 View(d); //把第4個數d發送到電腦端的串口助手軟件上觀察。 while(1) { } } /\*---C語言學習區域的結束。-----------------------------------------------\*/ 在電腦串口助手軟件上觀察到的程序執行現象如下: 開始... 第1個數 十進制:250 十六進制:FA 二進制:11111010 第2個數 十進制:0 十六進制:0 二進制:0 第3個數 十進制:255 十六進制:FF 二進制:11111111 第4個數 十進制:1 十六進制:1 二進制:1 分析: 通過實驗結果,發現在單片機上的計算結果和我們的分析是一致的。 【33.4 如何在單片機上練習本章節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>

                              哎呀哎呀视频在线观看