JAVA学习之进制转换练习

        public static void main(String[] args)
    {
        toBin(60);
        
        toBa(60);
        
        toHex(60);
    }
    /**
    十进制-->二进制
    */
    public static int toBin(int num)
    {
        trans(num,1,1);
    }
    /**
    十进制-->八进制
    */
    public static int toBa(int num)
    {
        trans(num,7,3);
    }
    /**
    十进制-->十六进制
    */
    public static int toHex(int num)
    {
        trans(num,15,4);
    }
    /**
    查表法
    思路:
    1.通过&方法获取最低进制位。
    2.通过存储的数组获取对应的进制字符
    3.通过>>>方法获取有效位数
    
    参数:
    num:十进制数
    base:根据进制保留二进制位数用于计算每个值
    offset:右移位数
    */
    private static void trans(int num,int base,int offset)
    {
        if(num==0)
        {
            System.out.println(num);
            return;
        }
        //
        char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        StringBuffer strb=new StringBuffer();
        while(num!=0)
        {
            int temp = num & base;
            strb.append(chs[temp]);
            num = num >>> offset;
        }
        
        System.out.println(strb.receive());//strb.receive():反转(如:011=>110)
    }
    
    
    /**
    num:十进制数
    base:根据进制保留二进制位数用于计算每个值
    offset:右移位数
    */
    private static void trans(int num,int base,int offset)
    {
        if(num==0)
        {
            System.out.println(num);
            return;
        }
        //
        char[] chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        char[] arr = new char[32];
        int pos = arr.length;
        while(num!=0)
        {
            int temp = num & base;
            arr[--pos] = chs[temp];//知识点:一、--pos:pos=pos-1;二、从数组后向前存储(arr[length-1]~arr[0])
            num = num >>> offset;
        }
        for(int i=pos;i<arr.length;i++)
        {
            System.out.print(arr[i]);
        }
    }

原理:

原文地址:https://www.cnblogs.com/WarBlog/p/12034549.html