C語言之位運算詳解

2021-09-26 08:19:01 字數 1849 閱讀 9583

位運算是指按二進位制進行的運算。

在系統軟體中,常常需要處理二進位制位的問題。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 整數型 位異或 如兩個數值對應位元位的值不相等,...