1樓:濱崎步最愛
一、位運算子c語言提供了六種位運算子:
& 按位與
| 按位或
^ 按位異或
~ 取反
<< 左移
>> 右移
用法:1.按位與運算子 &
按位與運算子是雙目運算子,其功能是將參與運算的兩運算元各自對應的二進位制為進行於操作。只有對應的兩個二進位制位均為1 是,結果對應的二進位制位才為 1,否則為0.例如:
表示式“21&18”的計算結果是16(即二進位制數10000),因為:
21用二進位制表示就是:0000 0000 0000 0000 0000 0000 0001 0101
18用二進位制表示就是:0000 0000 0000 0000 0000 0000 0001 0010
按位與所得結果是: 0000 0000 0000 0000 0000 0000 0001 0000(21和18左起第五位都是1,對應出結果 1)
與上述方法類似可得出 | 和^ 的結論,即:
2.按位或運算子“|”是雙目運算子。其功能是將參與運算的兩運算元各自對應的二進位制位進行或操作。
只有對應的兩個二進位制都是0 是,結果對應的二進位制位才是0,否則為1.例如表示式“21|18”的值是23(即二進位制數10111)。
3.按位異或運算子“^”是雙目運算子。其功能是將參與運算的兩運算元各自對應的二進位制為進行異或操作。
只有對應的兩個二進位制位不相同是,結果對應的二進位制唯才是1,否則為0.例如表示式“21^18”的值是7(即二進位制數111).
4.按位非運算子~是單目運算子。其功能是將運算元中的二進位制位0變成1,1變成0.例如,表示式“~21”的值是無符號整型數0xffffffea(十六進位制)。
5. 左移運算 左移運算子“<<”是雙目運算子。其功能把“<< ”左邊的運算數的各二進位全部左移若干位,由“<<”右邊的數指定移動的位數,
高位丟棄,低位補0。例如: a<<4 指把a的各二進位向左移動4位。如a=00000011(十進位制3),左移4位後為00110000(十進位制48)。
6. 右移運算右移運算子“>>”是雙目運算子。其功能是把“>> ”左邊的運算數的各二進位全部右移若干位,“>>”右邊的數指定移動的位數。
例如:設 a=15,a>>2 表示把000001111右移為00000011(十進位制3)。應該說明的是,對於有符號數,在右移時,符號位將隨同移動。
當為正數時, 最高位補0,而為負數時,符號位為1,最高位是補0或是補1 取決於編譯系統的規定。turbo c和很多系統規定為補1。
例子void main()
2樓:匿名使用者
c++位運算子有以下兩類:
1 位邏輯運算子:&(位“與”)、^(位“異或”)、|(位“或”)和~(位“取反”)
2 移位運算子:<<(左移)和》(右移).
位“與”、位“或”和位“異或”運算子都是雙目運算子,其結合性都是從左向右的,優先順序高於邏輯運算子,低於比較運算子,且從高到低依次為&、^、|
c++中位運算
3樓:匿名使用者
位運算得到的結果不是邏輯值,而是按照二進位制位規則的運算結果,注意這裡的運專算符屬是&(位與)而不是&&(邏輯與)
比如1,會當成數值1輸出
1<<2=00000001b<<2=1左移2位(相當於乘以2次2)=00000010b<<1=00000100b=4
1&(1<<2)=1&4=00000001b&00000100b=00000000b=0
4樓:匿名使用者
&是位與 1&(1<<2)=1&2=10&01=0
c中遞增運算子的問題,c 中遞增運算子的問題
對於int等整形來說,大部分編譯器都已經做過優化,i和i 效率沒差別 而對於使用者自定義的型別,過載 運算子,type 或者 type 會先返回該型別的臨時複製物件,如果使用者不需要用到這個功能,就造成了無形中的效率降低 而 type 並不會進行複製臨時物件的步驟,所以說字首格式的效率更高 字尾運算...
c 邏輯運算子,c 中邏輯運算子的問題。
x 2 y和z的值不變 邏輯運算 x的值為1,因此後面的語句沒有執行 參考 短路求值 作為 和 操作符的運算元表示式,這些表示式在進行求值時,只要最終的結果已經可以確定是真或假,求值過程便告終止,這稱之為短路求值。這是這兩個操作符的乙個重要屬性。假如expr1和expr2都是表示式,並且expr1的...
《是什麼運算子,C 中 運算子和 運算子有什麼區別
表示位移,3 1 二進位制位移00000011位移1位變成00000110,也就變成了6 魂大人的店鋪 分別表示迴圈左移 和 環右移 比如乙個8 位數 81h,二進位制的就是1000 0001,假設最初的進製位c為0 帶進製迴圈左移後,最高位移入進製位,此時,進製位c為1,數為0000 0010 再...