位運算是指按二進位制進行的運算。
在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。
運算子含義描述&
按位與如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0
| 按位或
兩個相應的二進位制位中只要有乙個為1,該位的結果值為1
^ 按位異或
若參加運算的兩個二進位制位值相同則為0,否則為1
~ 取反
~是一元運算子,用來對乙個二進位制數按位取反,即將0變1,將1變0
<<
左移 用來將乙個數的各二進位制位全部左移n位,右補0
>>
右移將乙個數的各二進位制位右移n位,移到右端的低位被捨棄,對於無符號數,高位補0
除了按位取反運算子~,其它均為雙目運算子。
參加位運算的物件只能是整形或字元型資料,不能為實型資料 。
注意運算子的結合性和優先順序問題。
(1)&(按位「與」)
運算規則為:
0&0=0, 0&1=0, 1&0=0, 1&1=1(即只有當兩者都為真時才為真)
例如:-5&9的值為9,運算過程如下:
-5 =
1111 1011
(&)9 =
0000 1001
0000 1001
例如,-5&3的值為3,此時要把-5寫成補碼的形式,其補碼為11111011,運算過程如下:
-5 =
1111 1011
(&)3 =
0000 0011
0000 0011
(2)|(按位「或」)
運算規則為:
0|0=0, 0|1=1, 1|0=1, 1|1=1(即只要有乙個為真時才為真)
例如:5|9的值為13,運算過程如下:
5 =0000 0101
(|)9 =
0000 1001
0000 1101
(3)^(按位「異或」)
運算規則為:
0^0=0, 0^1=1, 1^0=1, 1^1=0(即當兩者取值相異時為真)
例如:-5|3的值為-8,運算過程如下:
-5 =
1111 1011
(^)3 =
0000 0001
1111 1000
(4)~(按位「取反」)
運算規則為:
~0=1, ~1=0(取相反的值)
例如:~7的值為-8,運算過程如下:
(~)7 =
0000 0111
1111 1000
(5)<<(「左移」)
用佬將乙個數的各二進位制位全部左移若干位,右邊空缺位補0.
例如:將3左移2位,結果為12。如圖:
左移2位
00000011----->00001100
左移1位相當於該數乘以2,左移n位相當於該數乘以2的n。因此,將3左移2位,相當於3乘以4。
(6)>>(「右移」)
用來將乙個數的各二進位制全部右移若干位。移去右端的位將被捨棄,若為無符號數,左端補0。例如,將15右移3位,結果為1。如圖:
右移3位
00001111----->00000001
右移1位相當於該數除以2,右移n位相當於該數除以2的n次方,因此,將15右移3位,相當於15/2的3次方=1(c語言規定整數相除商為整數)。
C語言之位運算
指標和位運算很適合編寫系統軟體的需要。位運算指進行二進位制位的運算。按位與 運算子 用途 1 清零 2 取乙個數中某些指定位 比如只需要低8位 3 想保留哪一位保留下來,就與乙個數進行 運算,此數在該位取1。按位或 按位異或 xor 同0異1 1 使特定位翻轉 2 與0相異或,保留原值 3 交換兩個...
C語言之位運算子
位運算子分析 1.c語言中的位運算子 c語言中的位運算子直接對bit位進行操作,其效率最高。速度快於四則運算和邏輯運算。2.左移和右移的注意點 左運算元必須為整數型別 char和short被隱式轉換為int後進行移位操作 右運算元的範圍必須為 0,31 左移運算子 將運算數的二進位制位左移 規則 高...
易語言 之位運算
一 函式列表 易語言示例 作用整數型 位取反 將指定數值每乙個位元位的值取反後返回 整數型 位與 如兩個數值有某共同位元位為1,則返回值的對應位也為1,否則為0 整數型 位或 如兩個數值中有乙個數值的某一位元位不為零,則返回值的對應位就為1,否則為0 整數型 位異或 如兩個數值對應位元位的值不相等,...