C語言 2 位運算

2021-08-18 20:09:23 字數 1628 閱讀 4428

位運算是指以二進位制位為物件的運算,指標運算和位運算往往是編寫系統軟體所需要的。在計算機用於檢測和控制領域也要用到位運算的知識。

位運算子當中除了~以外都是雙目運算子;參加位運算的只能是整型或者字元型資料。

## 按位與運算 ##

運算子為「&」,參與運算的兩個資料,按二進位制位進行「與」運算。如果相應的兩個二進位制位都是1,則該位的結果為1,否則為0。如果參與「&」運算的是負數,(如-7&-5),則以補碼形式表示為二進位制數,然後按位進行「&」運算

即:0&0=0 1&0=0 0&1=0 1&1=1。

例如:7&5結果是5(處理7和5的相應二進位制位);

特殊應用:

1,將某乙個單元清為零:即使其全部二進位制位為零,只要找乙個數滿足以下條

件,原數中為1的位,該數中相應位全為0,然後將二者進行與運算。

2,取乙個數中的指定位。

3,要想將哪一位保留下來,就與乙個數進行「&」運算,此數在該位取1。

##按位或運算##

運算子為「|」,規則是:兩個對應的二進位制位中只要有乙個為1,該位的結果值為1,即: 1|1=1 1|0=1 0|1=1 0|0=0。

用途:按位或運算子常用來對乙個資料的某些位定值為1。例如:a是乙個整數,有表示式:a|0377,則低八位全置為一,高八位保留原樣。

##異或運算##

運算子」^」規則是:若參加運算的兩個二進位制位異號,得到1,若同號,得到0。即:1^1=0 1^0=1 0^0=0 0^1=1。

「異或」的意思是判斷兩個相應的位值是否為異,為「異」就取1,否則為0。

應用:

1,使特定位翻轉,要使哪一位翻轉就將與其進行^運算的數在該位取1。

2,與0相^,保留原值。

3,交換兩個值,不用臨時變數:a=a^b; b=b^a; a=a^b;

##取反運算##

運算子為「~」單目運算子,運來對乙個二進位制數按位取反,即將0變成1,1變成0。

作用:a=a & ~1;將16位或者32位存放的整數a最後一位變成0。

##左移運算##

運算子為「<<」,用來將乙個數的二進位制位全部左移若干位,高位左移後溢位,捨棄。例如:a=a<<2; 若a為15,則運算後a為60。當左移時被溢位捨棄的高位中不包含1時,左移n位相當於該數乘以2的n次方。左移比乘法運算快得多、

##右移運算##

運算子為「>>」,a>>2;表示將a的二進位制位右移兩位,移到右端的低位被捨棄,對無符號數,高位補0;對於有符號整數,如果符號位原來為0,高位補0,如果符號位為1,高位補0還是1,取決於計算機系統。

如果兩個資料長度不同,進行位運算時,系統會將二者按右端對齊。例如(a&b,a為short型別,b為int型別),如果a為正數,則左側十六位補滿0;若a為負數,左端應補滿1,如果a為無符號整數型,則左側填滿0。

c語言位運算

c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1 按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1 取反 是一元運算子,用來對乙個二進位制數按位取反,即將0變1...

C語言位運算

c語言位運算 位運算應用口訣 清零取反要用與,某位置一可用或 若要取反和交換,輕輕鬆鬆用異或 移位運算 1 它們都是雙目運算子,兩個運算分量都是整形,結果也是整形。2 am p 3 amp amp amp qu ot 右 移 右邊 的位被擠 掉。對於 左邊移出 的空位,如果是正 數則空位 補0,若 ...

C語言位運算

位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作 運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位...