<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

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

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            C語言

            C語言運算

            時間:2025-05-02 03:07:32 C語言 我要投稿

            C語言運算

              引導語:數學上,數學上,運算是一種行為。而在C語言中,運算也有優先級之分,以下是百分網小編分享給大家的C語言運算,歡迎閱讀學習!

              一、 位運算的含義及應用

              1.位的概念

              大多數計算機系統的內存儲器是由眾多的存儲單元構成的。在微機中,每個存儲單元是1個字節,它由8位二進制數構成,可以表示28=256種信息,各位的編號從0~7,最左邊的位(第7位)是最高位,最右邊的位(第0位)是最低位。由于二進制本身的特點,各位上的數字不是1,就是0。

              本章中的位就是指上述提到的二進制位,本章中的位運算就是指對這些二進制的位進行邏輯運算、移位運算等操作。

              2.數的編碼

              數在計算機中是以二進制表示的,但是它并不是簡單地以它本身的數值的二進制形式來直接表示,而要進行一定的編碼,以方便計算機進行處理。常用的編碼有原碼、反碼、補碼三種。

              3.真值與原碼

              我們將一個十進制數的二進制表示稱為這個十進制數的真值,它代表了這個十進制數本身的數值。下表列出了一些數的真值。

              真值舉例

              數 二進制表示 真值(16位)

              0

              1?

              7 0

              1?

              111 0000000000000000

              0000000000000001?

              0000000000000111 ?

              15? ?

              1111? ?

              0000000000001111?

              255?

              4095?

              65535 11111111?

              111111111111?

              1111111111111111 0000000011111111?

              0000111111111111?

              1111111111111111

              用真值表示的數只能是正數,對于負數,要用“一”號標明,例如:

              -7的真值為-0000000000000111-65535的真值為-1111111111111111

              這勢必造成用計算機表示數時的不便,故引入了原碼表示法。

              在原碼表示法中,最高位代表符號位,用“1”表示負數,“0”表示正數;余下的數位用來表示真值的絕對值。

              數字零存在著兩種表示方法:+0與-0。

              4.反碼

              若采用反碼表示,則對應的原碼應按照以下方法進行轉換:

              (1)如果真值為正,則它的反碼與原碼相同;

              (2)如果真值為負,則反碼的符號位為1,其余各位就是對原碼取反(即原碼的1變為0,原碼的0變為1)。

              5.補碼

              (1)為什么要引入補碼

              補碼具有許多獨特的優點:首先它可以變減法運算為加法運算,使得計算時步驟統一,速度提高;其次,在這種系統下的“0”只有惟一的一種表示方法,這就是現代的計算機系統中大多采用補碼的原因。

              (2)補碼的規定

              ①正數的原碼、補碼、反碼均相同;

              ②計算負數的補碼時,先置符號位為1,再對剩余原碼的位數逐位取反,最后對整個數加1。

              在微機上以8位二進制數為一字節的存儲單元中采用補碼系統,它可以存放的最小整數為-128,最大整數為+127。若采用兩個字節來表示一個整數,則可表示的最小整數為-32768,最大整數為+32767。

              二、 簡單的位運算

              C語言提供了位(bit)運算的功能,這使它像匯編語言一樣用來編寫系統程序。位運算符共有六種;

              位運算符

              位運算符 含義

              & 位與

              ︳ 位或

              ∧ 位異或

              ~ 位取反

              << 位左移

              >> 位右移

              本節介紹前四種運算,即位的邏輯運算。

              1.按位與運算

              ①概念

              “按位與”運算符“&”是雙目運算符,其功能是將參與運算兩數的各對應二進位相與。只能對應的兩個二進位均為1時,結果位才為1,否則為0。

              ②“按位與”與運算的特殊用途

              ⅰ.清零

              如果想將一個存儲單元清零,即使其全部二進位為0,可按這樣的方法計算:

              找一個數,它的補碼形式中各位的值符合如下條件:原來的數中為1的位,新數中相應位為0(注意,并不要求原數為0的位上,新數相應位為1,新數相應位可以是0或1);對二者進行&運算。

              ⅱ.取一個數中某些字節

              對于一個整數a(占2個字節),如要想得到其中的低字節,只需將a與特定的一個數按位與即可。

              ③要想將一個數的某一位保留下來,可將該數與一個特定的數進行&處理。

              2.按位或運算

              “按位或”運算符“︳”是雙目運算符,其功能是將參與運算兩數的各對應的二進位相或。只要對應的兩個二進位有一個為1時,結果位就為1。參與運算的整數均以補碼出現。

              3.按位異或運算

              ①概念

              “按位異或”運算符“∧”是雙目運算符,其功能是將參與運算兩數的各對應位相異或,當兩對應的二進位相異時,結果為1,否則為0。參與運算整數仍以補碼出現。

              ②“異或”運算的特殊應用

              ⅰ.使特定位翻轉

              ⅱ.與0相“異或”,保留原值。

              ⅲ.交換兩個值。

              4.“取反”運算

              “~”是一個一元運算符,即它的運算量只有一個,用來對一個二進制數按位取反,即將0變1,1變0。比如說,~025就是對八進制數25(即二進制數000000000010101)按位求反。

              15.3 移位運算

              1.移位運算符

              移位運算是對操作數以二進制位為單位進行左移或右移。

              移位操作

              運算符 名 稱 例 子 運算功能

              >> 右移位 b>>3 b右移3位

              << 左移位 c<<2 c左移2位

              2.左移運算

              左移運算符“<<”是雙目運算符,其功能把“<<”左邊的運算數的各二進位全部左移若干位,由“<<”右邊的數指定移動的位數,高位丟棄,低位補0。例如;

              a<<4

              就把a的各二進位向左移動4位。如a=00000011(十進制3),左移4位后為00110000(十進制48)。

              3.右移運算

              右移運算符“>>”是雙目運算符,其功能是把“>>”左邊的運算數的各二進位全部右移若干位,“>>”右邊的數指定移動的位數。例如:

              a=15,a>>2

              表示把000001111右移為00000011(十進制3)。應該說明的是,對于有符號數,在右移時,符號位將隨同移動。當為正數時,最高位補0;而為負數時,符號位為1,最高位是補0或1取決于編譯系統的規定。Turbo C 規定補1。

              右移運算相當于將運算對象除2.

              1.4 位賦值運算

              位賦值運算符。

              位賦值運算符

              運算符 名 稱 例 子 等價于

              &= 位與賦值 a&=b a=2&b

              ︳= 位或賦值 a|=b a=a|b

              ∧= 位異或賦值 a∧=b a=a∧b

              >>= 右移賦值 a>>b a=a>>b

              <<= 左移賦值 a<<=b a=a<

              位賦值運算的過程為:

              (1)先對兩個操作數進行位操作;

              (2)然后把結果賦予第一個操作數,因此第一個操作數必須是變量。

              位賦值運算與算術賦值運算相似,它們都統稱復合賦值運算。

            【C語言運算】相關文章:

            C語言位運算05-08

            C語言的位運算05-31

            C語言輔導:C語言運算符表06-17

            C語言的位運算的優勢06-21

            C語言中的運算規則04-18

            C語言位運算詳解07-03

            C語言指針變量的運算05-05

            C語言賦值運算符05-31

            C語言入門知識:位運算03-04

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

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

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院