public class BitOpt {
public static void main(String[] args) {
//int 類型變量共使用4個字節即32位二進制位存儲
//其中最高位第32位爲符號位,表示此整數是否有負號,0代表沒有即正數1代表有負號即負數
int m = 61; //111101爲其二進制表示形式
//正整數的存儲形式:除第32位符號位爲0外,其餘31位是直接把此數的二進制表示形式通過補0補齊到31位得到的如下
// 0000000 00000000 00000000 00111101
//結合符號位0最終得到61在內存中的存儲形式
//00000000 00000000 00000000 00111101
int n = -61;
//負整數的存儲形式:除第32位符號位爲1外,其餘31位的處理稍複雜一些,如下
//1. 先得到此負數的絕對值61的二進制表示形式通過補0補齊到31位得到
// 0000000 00000000 00000000 00111101
//2. 在上面的基礎上按位取反,即0變1,1變0,得到
// 1111111 11111111 11111111 11000010
//3. 在步驟2的基礎上按二進制計算規則(逢二進一)加上1得到
// 1111111 11111111 11111111 11000011
//結合符號位1最終得到-61在內存中的存儲形式
//11111111 11111111 11111111 11000011
}
}
public class BitOpt {
public static void main(String[] args) {
//位運算符共7個:& | ^ ~ << >> >>>
//計算規則,把二進制位1當作true,0當作false看待,按相應邏輯運算規則計算對應二進制位
//^ 按位異或規則爲相同爲0不同爲1,即1-1和0-0得到0,1-0和0-1得到1
int r = 0;
int a = 61; //00000000 00000000 00000000 00111101
int b = -4; //11111111 11111111 11111111 11111100
r = a & b;
//00000000 00000000 00000000 00111101 : 61 a
//11111111 11111111 11111111 11111100 : -4 b
//--------------------------------------------- &
//00000000 00000000 00000000 00111100 : 60 r
r = a | b;
//00000000 00000000 00000000 00111101 : 61 a
//11111111 11111111 11111111 11111100 : -4 b
//--------------------------------------------- |
//11111111 11111111 11111111 11111101 : -3 r
r = a ^ b;
//00000000 00000000 00000000 00111101 : 61 a
//11111111 11111111 11111111 11111100 : -4 b
//--------------------------------------------- ^
//11111111 11111111 11111111 11000001 : -63 r
r = ~a;
//00000000 00000000 00000000 00111101 : 61 a
//--------------------------------------------- ~
//11111111 11111111 11111111 11000010 : -62 r
}
}
java邏輯操作符代碼示例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.