位運算子主要是以二進位制規則進行運算使用規則:兩個二進位制運算元對應位同為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 ...