A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

2 个回复

倒序浏览
补充一下就是这个可以将进制转换的原理给大家说清楚奥,
   进制:八个毕克伟成为一个字节
   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
回复 使用道具 举报
{:soso_e179:} 参考一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马