zoukankan      html  css  js  c++  java
  • 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]);
            }
        }

    原理:

  • 相关阅读:
    c#基础之Type
    .Net IOC框架入门之三 Autofac
    EF的三种数据加载方式
    EntityFramework扩展之第三方类库
    EF Codefirst入门之创建数据库
    EasyUI combotree的使用
    MacOS 安装 gdb 踩过的坑
    enex 转 md 格式的几种方式(免费版/氪金版)
    C++ 标准库之 iomanip 、操作符 ios::fixed 以及 setprecision 使用的惨痛教训经验总结
    python list 中 remove 的骚操作/易错点
  • 原文地址:https://www.cnblogs.com/WarBlog/p/12034549.html
Copyright © 2011-2022 走看看