1. 程式人生 > >c語言位運算的作用

c語言位運算的作用


C中的位運算可以對整形INT 或字元型CHAR 進行二進位制按位運算

& 是對兩個二進位制數進行 與運算
| .....................或運算
^ .....................異或運算
~ 是單目運算,對一個二進位制數取反
<< 是對一個二進位制數進行左移運算
>>.....................右移運算
C語言中提供給開發人員一種位的運算,這種位的運算常用在檢測和控制領域中,這和c語言的特性關係非常大,因為c語言是具有高階語言的特點和低階語言的功能,能完成一些組合語言所能完成的功能。給開發人員提供了一定的簡便。 

【運算子】位運算中有6中運算子【&,|,^,~,<<,>>】分別是按位與,按位或,按位異或,取反,左移,右移。 
其中除了~,其他都是二目元,而且在運算中的運算量只能是整形或者是字元型,絕對不能有實型出現。 當然在運算中,所有的運算量都應該是binary. 

下面分別來比較各種運算子: 

【一】:按位與“&”,當二個運算量中相應的二進位制位都為1的時候,則該位才是1,否則其他就是0; 
  • 如果是負數參加運算,則應該是以補碼的形式表示為二進位制,然後再進行按位的與的運算; 按位與的一些作用: 1:清零2:取一個數中的某些指定位 3 :保留某個數中的制定位
【二】:按位或“|”,當二個運算量中相應的二進位制位為1的時候,則該位運算結果是1,否則其他就是0; 

【三】:按位異或“^”,該運算也稱XOR運算子,二個二進位制位同號,該位運算的結果則是0,異號則為1; 
  • 兩個相應是否為“異”,為“異”就取值1,否則為假0;
    • 按位異或的一些作用:
    1:使特定的位翻轉 2:與0相^,保留原值 3:交換兩個值,不用臨時變數
【四】:“取反”運算子“~”,是一個單目元,用來對一個二進位制數按位取反,對任何一個數應該先轉化位二進位制,再進行取反;這裡值得一提的是取反的法則,
就是將資料中的某位中的1變成0,0變成1,但是應該注意一點是將C的source移植到32位存放一個整數的計算機系統上的過程。為了使移植性加強,我
們可以取得某一位時該數&&某數時,可以採用a=a&~1【舉個例子】這種方法來取得最後一位。切記取反與正負號運算是不同的。
 
  • ~運算子的優先級別比算術運算子,關係運算符,邏輯運算子和其他位運算子都高。
【五】:左移運算子“<<”,是指將一個數的各個二進位全部左移若干位,左移的過程中右邊則補0,高位溢位捨棄不用。一般情況下【不包括左移
高位溢位捨棄的數中不包含1的情況】左移N位後,使該數變成原來數的2的n次方倍。對於左移捨棄位中包含1的情況下,日後查詢資料後再做研究:) 

【六】:右移運算子“>>”,與左移運算相反,右移使原來的數縮小到原來數的2的n次方。但是應該注意右移的過程中要注意符號位的問題。對於
無符號數,右移時左邊高位移入0,對於有符號的值,如果原來符號為0【正數】,則左邊也是移入0,如果時1【負數】,左邊移入1,還是0這個就要取決所用
到的計算機系統,移入0時稱為【邏輯右移】,移入1時稱為【算術右移】