java邏輯操作符代碼示例

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
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章