黑马程序员技术交流社区

标题: 进制的转换,大家可以学习一下奥,代替计算器 [打印本页]

作者: 刘海源    时间: 2012-7-22 23:09
标题: 进制的转换,大家可以学习一下奥,代替计算器
class  ArrayTest2
{
        public static void main(String[] args)
        {
               
//                toHex(0);
                toBinary(-6);
                System.out.println(Integer.toBinaryString(-6));
//                toOctal(60);
               
        }
        /*
        十进制-->十六进制。
        */
        public static void toHex(int num)
        {
                trans(num,15,4);
        }

        /*
        十进制-->八进制。
        */
        public static void toOctal(int num)
        {
                trans(num,7,3);
        }

        /*
        十进制-->二进制。
        */
        public static void toBinary(int num)
        {
                trans(num,1,1);
        }

        /*
        进制转换功能。
        */
        public static void trans(int num,int base,int offset)
        {

                if(num==0)
                {
                        System.out.println("0");
                        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;

//                        System.out.print(chs[temp]);
                        arr[--pos] = chs[temp];

                        num = num >>> offset;
                }
//                System.out.println("pos="+pos);
                for(int x=pos; x<arr.length; x++)
                {
                        System.out.print(arr[x]);
                }
                System.out.println();
        }
}
作者: 刘海源    时间: 2012-7-23 07:21
补充一下就是这个可以将进制转换的原理给大家说清楚奥,
   进制:八个毕克伟成为一个字节
   a. 二转十进制简便
    八个比各位对应的数字
    1 2 4 8 16 32 64 128
    二进制 0 1
    八进制 0-7
    0 1 0     1 0 1    0 1 0
    必须以0开头   
    十六进制 0-9 A B C D E F
    必须以OX开头
   b. -6二进制什么样的
    对应的二进制进行取反加1
    取反:将二进制中的0变成1,1变成0;
     -1是二进制每一位都是1
作者: 魏-玉-彪    时间: 2012-7-23 19:42
{:soso_e179:} 参考一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2