c語言的按位運算子

2022-03-29 12:44:12 字數 1238 閱讀 8713

& 按位與 

| 按位或 

^ 按位異或 

1. 按位與運算 按位與運算子"&"是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。 

例如:9&5可寫算式如下: 00001001 (9的二進位制補碼)&00000101 (5的二進位制補碼) 00000001 (1的二進位制補碼)可見9&5=1。 

按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進位制數為0000000011111111)。 

main() 

2. 按位或運算 按位或運算子「|」是雙目運算子。其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有乙個為1時,結果位就為1。參與運算的兩個數均以補碼出現。 

例如:9|5可寫算式如下: 00001001|00000101 

00001101 (十進位制為13)可見9|5=13 

main() 

3. 按位異或運算 按位異或運算子「^」是雙目運算子。其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。參與運算數仍以補碼出現,例如9^5可寫成算式如下: 00001001^00000101 00001100 (十進位制為12) 

main()

4.按位異或運算子^ 

參與運算的兩個值,如果兩個相應位相同,則結果為0,否則為1。即:

0^0=0, 1^0=1, 0^1=1, 1^1=0

例如:     10100001^00010001=10110000

0^0=0,0^1=1  0異或任何數=任何數

1^0=1,1^1=0  1異或任何數-任何數取反

任何數異或自己=把自己置0

(1)按位異或可以用來使某些特定的位翻轉,如對數10100001的第2位和第3位翻轉,可以將數與00000110進行按位異或運算。

10100001^00000110=10100111 //1010 0001 ^ 0x06 = 1010 0001 ^ 6

(2)通過按位異或運算,可以實現兩個值的交換,而不必使用臨時變數。例如交換兩個整數a,b的值,可通過下列語句實現:

a=10100001,b=00000110

a=a^b;   //a=10100111

b=b^a;   //b=10100001

a=a^b;   //a=00000110

(3),在組合語言中經常是變數置零:

C語言按位運算子

c語言按位運算子 二進位制反碼或按位取反 一元運算子 是逐位將1變為 0,0變為 1eg 1001 1010 result 0110 0101 按位與 二元運算子 是逐位比較兩個運算物件,生成乙個新值 對每乙個位上來說,只有當全為 1時,才為 1,否則為 0 也就是全真為真,一假則假 eg 1001...

按位運算子

基本運算子 按位與運算子,可以對變數s的特定位清零,這時可以設定乙個變數mask,將mask中的特定位賦值為0,其他位置為1,然後作運算 s s mask 即可特定位清零。使用按位與運算,可以取變數s的指定位的值,這時可以設定乙個變數mask,將mask中的指定位賦值為1,其他位置賦值為0,然後作運...

按位運算子

1.按位取反或者二進位制補碼 把1變為0,把0變為1 2.按位與 任何位與0組合都為0,任何位與1組合都為本身 應用 關閉位 清空位 需要開啟乙個值中的特定位,同時保持其他位不變 所有位為0 把1變為0,其餘位不變。假設有乙個二進位制數00011010 從左到右的第4位1表示開關,現在要關閉開關 置...