位运算符2

class TestExer1{
    public static void main(String[] args){
        int m = 12;
        int n = 5;
        System.out.println("m:" + m + " n:" + n);
        //方法一:提供一个临时变量。
        //int temp = m;
        //       m = n;
        //       n = temp;
        //System.out.println("m:" + m + " n:" + n);

        //方法二:当m和n较大时,有可能出现精度损失
        //m = m + n;//m = 12 + 5;
        //n = m - n;//n = 17 - 5;
        //m = m - n;//m = 17- 12
        //System.out.println("m:" + m + " n:" + n);

        //方法三:优点:没有上面两种方法的缺点。 缺点:难!
        m = m ^ n;
        n = m ^ n;//(m ^ n) ^ n == m
        m = m ^ n;//(m ^ n) ^ m == n
        System.out.println("m:" + m + " n:" + n);
        
        //问题:
        //60  手动的方式,从控制台输出60的十六进制。
        int i = 61;
        //自动调用Integer类现成的方法
        String binary = Integer.toBinaryString(i);
        
        System.out.println(binary);

        String hex = Integer.toHexString(i);//转为16进制
        System.out.println(hex);
        
        /*
        char c = 'a';
        char c1 = (char)(c + 2);
        System.out.println(c1);//c
        */

        int j = i & 15;//获取到i的最低4位对应的值。//13
        String k1 = (j <= 9)? j + "" : (char)(j - 10 + 'a') + "";//d 
        //System.out.println(k1);

        i = i >> 4;//3
        int z = i & 15;//3
        String k2 = (z <= 9)? z + "" : (char)(z - 10 + 'a') + "";//3
        System.out.println(k2 + k1);//3+d
    }
}

输出结果:

m:12 n:5
m:5 n:12
111101
3d
3d

原文地址:https://www.cnblogs.com/wangmengge/p/8630479.html