位運算子詳解(與,或,非,異或, , )

2021-10-06 10:07:26 字數 2962 閱讀 2863

位運算子主要是以二進位制規則進行運算

使用規則:兩個二進位制運算元對應位同為1 結果位 才為1,其餘情況為0;

例如:整數 a = 15   整數 b = 127

計算:(a & b)

15的二進位制位:0000 1111127的二進位制為:0111 1111

即:(a & b) = 15使用規則:兩個二進位制運算元對應位只要有乙個為1 結果位 就為1,其餘情況為0;

例如:整數 b = 127   整數 c = 128

計算:(b | c)

127的二進位制位:0111 1111128的二進位制位:1000 0000

即:(b | c) = 255使用規則:乙個二進位制運算元,對應位為0,結果位為1;對應位為1,結果位為0;

作用是將每位二進位製取反

例如:整數 d = 1

計算:(~d)

十進位制1的二進位制表示為:

0000 0001

每位都取反為:

1111 1110

這是記憶體中的儲存形式。我們讀取的十進位制是根據原碼來讀取,而在記憶體中,數值都是以二進位制補碼形式儲存的。正數的補碼和原碼一樣,負數的補碼得到過程:原碼 轉 反碼 再轉 補碼

負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)傳送門:原碼, 反碼, 補碼 詳解

然後計算取反後的補碼,其真值就是結果。

即:(~d) = -2

使用規則:兩個二進位制運算元對應位相同為0,不同為1;

例如:整數 e = 2   整數 f= 3

計算:(e ^ f)

2的二進位制位:0000 00103的二進位制位:0000 0011

即:(e ^ f) = 1移位運算子組成的表示式也屬於算術表示式,其值為算術值。左移運算是將乙個二進位制位的運算元按指定移動的位數向左移動,移出位被丟棄,右邊移出的空位一律補0。右移運算是將乙個二進位制位的運算元按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位一律補0,或者補符號位,這由不同的機器而定。在使用補碼作為機器數的機器中,正數的符號位為0,負數的符號位為1。

5.1 左移(<

按二進位制形式把所有的數字向左移動對應的位數,高位移出(捨棄),低位的空位補零。

語法格式:需要移位的數字number << 移位的次數

例如:整數 g = 10

計算:g<<2

10的二進位制位:0000 1010

數學意義:在數字沒有溢位的前提下,對於正數和負數,左移一位都相當於乘以2的1次方,左移n位就相當於乘以2的n次方。5.2 右移(>>)運算子

按二進位制形式把所有的數字向右移動對應位移位數,低位移出(捨棄),高位的空位補符號位,即正數補零,負數補1。

語法格式:需要移位的數字number >> 移位的次數

例如:整數 h = -7(這裡只列出了計算負數的右移運算,正數運算高位直接補0就行了)

計算:h >> 2

計算流程:首先將負數進行轉換為反碼 ——>補碼,將轉換為補碼的負數的二進位制形式向右位移,空出的高位全補符號位1,再將位移後的二進位制運算元進行轉換為反碼 ——> 補碼,通過補碼計算出來的結果就是乙個負整數字移後的結果。

數學意義:右移一位相當於除2,右移n位相當於除以2的n次方。

6.**實現

public

class

bitwise

}

運算結果:

a和b的 與運算 結果為:15

b和c的 或運算 結果為:255

d 非運算 的結果為:-

2e和f 異或運算 的結果為:

1g 左移2位運算 的結果為:

40h 右移2位運算 的結果為:-2

i 右移1位運算 的結果為:

5

異或運算子和位運算子詳解

一.異或運算子 1.異或運算子是用符號 表示的,其運算規律是 轉換成二進位制的形式來對比每一位數,相同則結果為0,不同則結果為1。分析 a 的值是15,轉換成二進位制為 1111,而b 的值是2,轉換成二進位制為 0010,根據異或的運算規律,可以得出其結果為 1101 即最終 a b的值為13 二...

位運算子和位運算 與,或,異或等

1 運算規則 參加運算的兩個資料,按二進位進行 與 運算,如果兩個相應的二進位都為1,則該位的結果值為1,否則為0,即 0 0 0,0 1 0,1 0 0,1 1 1.2 用途 1 保留某乙個數的某些位。與乙個數進行 運算,此數在一些位取1。eg.按位與運算通常用來對某些位清0或保留某些位。例如把a...

按位異或運算子

參與運算的兩個值,如果兩個相應位相同,則結果為0,否則為1。即 0 0 0,1 0 1,0 1 1,1 1 0 例如 10100001 00010001 10110000 0 0 0,0 1 1 0異或任何數 任何數 1 0 1,1 1 0 1異或任何數 任何數取反 任何數異或自己 把自己置0 1 ...