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]);
            }
        }

    原理:

  • 相关阅读:
    ACM ICPC 2008–2009 NEERC MSC A, B, C, G, L
    POJ 1088 滑雪 DP
    UVA 11584 最短回文串划分 DP
    POJ 2531 Network Saboteur DFS+剪枝
    UVa 10739 String to Palindrome 字符串dp
    UVa 11151 Longest Palindrome 字符串dp
    UVa 10154 Weights and Measures dp 降维
    UVa 10271 Chopsticks dp
    UVa 10617 Again Palindrome 字符串dp
    UVa 10651 Pebble Solitaire 状态压缩 dp
  • 原文地址:https://www.cnblogs.com/WarBlog/p/12034549.html
Copyright © 2011-2022 走看看