關於位運算理解 按位或 按位與 異或

2021-10-23 10:43:49 字數 1300 閱讀 1847

參加運算的兩個數,按二進位制位進行「與」運算

運算規則:只有兩個數的二進位制同時為1,結果才為1,否則為0(負數按補碼形式參加按位與運算)

即 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1

例:3 &5 即 00000011 & 00000101 = 00000001 ,所以 3 & 5 的值為1

參加運算的兩個數,按二進位制位進行「或」運算

運算規則:參加運算的兩個數只要兩個數中的乙個為1,結果就為1

即 0 | 0= 0 , 1 | 0= 1 , 0 | 1= 1 , 1 | 1= 1

例:2 | 4 即 00000010 | 00000100 = 00000110 ,所以2 | 4的值為 6

參加運算的兩個數,按二進位制位進行「異或」運算

運算規則:參加運算的兩個數,如果兩個相應位為「異」(值不同),則該位結果為1,否則為0

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

例: 2 ^ 4 即 00000010 ^ 00000100 =00000110 ,所以 2 ^ 4 的值為6

求反運算子~為單目運算子,具有右結合性。其功能是對參與運算的數的各二進位按位求反

例如

~9的求反運算為:

~(1001)

結果為:

0110

左移運算子,是雙目運算子。左移n位就是乘以2的n次方。 

其功能把,左邊的運算數的各二進位全部左移若干位,

由,右邊的數指定移動的位數,高位丟棄,低位補0。

例如:將a的二進位制數左移2位,右補0。若a=15,即二進位制數00001111,左移2位得00111100,即十進位制數60

右移運算子,是雙目運算子。右移n位就是除以2的n次方

其功能是把,左邊的運算數的各二進位全部右移若干位,「>>」右邊的數指定移動的位數。

例如:設 a=15,a>>2 表示把00001111右移為00000011(十進位制3)。

應該說明的是,對於有符號數,在右移時,符號位將隨同移動。

當為正數時, 最高位補0,而為負數時,符號位為1,

最高位是補0或是補1 取決於編譯系統的規定。

turbo c和很多系統規定為補1。

數學意義:

右移一位相當於除2,右移n位相當於除以2的n次方。這裡是取商哈,餘數就 不要了。

位與 按位或 按位異或 運算

1.按位與運算 按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例如 9 5可寫算式如下 00001001 9的二進位制補碼 00000101 5的二進位制補碼 00000001 1的二進位制補碼...

位運算( 按位與 按位或 異或)

參加運算的兩個數,按二進位制位進行 運算。運算規則 只有兩個數的二進位制同時為1,結果才為1,否則為0。負數按補碼形式參加按位與運算 即 0 0 0 0 1 0,1 0 0,1 1 1。比如10 11 即 0000 1010 0000 1011 0000 1010 所以 10 11 等於10 參加運...

位運算(按位與 按位或 異或)

按位與運算子 參加運算的兩個數,按二進位制位進行 與 運算。運算規則 只有兩個數的二進位制同時為1,結果才為1,否則為0。負數按補碼形式參加按位與運算 即 0 0 0 0 1 0,1 0 0,1 1 1。例 3 5 即 00000011 00000101 00000001 所以 3 5的值為1。按位...