黑马程序员技术交流社区

标题: 进制转换的问题 [打印本页]

作者: JYcainiao    时间: 2015-10-9 09:20
标题: 进制转换的问题
本帖最后由 JYcainiao 于 2015-10-9 09:21 编辑

//定义一个函数  用来计算一个数的二进制  八进制  十六进制

class jinzhiArr
{
        
        //二进制
        public static void toBin(int num)
        {
                int[] arr=new int[32];
                        
                        for (int pos=arr.length-1;pos>=0 ; pos--)//定义一个指针,将%出来的数
                        {
                                arr[pos]=num & 1;        //arr[pos]=num %2只有当num为正数时  才有正确结果  所以不用这个
                                num=num>>1;                        //num=num /2;  一样的效果
                        }

                bianliArr(arr);
        
        }

        //八进制
        
        public static void toBa(int num)
        {
                int[] arr=new int[?];//这里应该给数组定义为多少呢?
                        
                        for (int pos=arr.length-1;pos>=0 ; pos--)//定义一个指针,将%出来的数
                        {
                                arr[pos]=num & 7;        //arr[pos]=num %2只有当num为正数时  才有正确结果  所以不用这个
                                num=num>>3;                        //num=num /8;  一样的效果
                        }

                bianliArr(arr);
        
        }
        
        //十六进制
        
        public static void toHex(int num)
        {
                int[] arr=new int[8];
                        
                        for (int pos=arr.length-1;pos>=0 ; pos--)//定义一个指针,将%出来的数
                        {
                                arr[pos]=num & 15;        //arr[pos]=num %2只有当num为正数时  才有正确结果  所以不用这个
                                num=num>>4;                        //num=num /16;  一样的效果
                        }

                bianliArr(arr);
        
        }
        
        
        
        
        public static void bianliArr(int[] arr)
        {
                System.out.print("[");
                for (int x=0;x<arr.length ;x++ )
                {
                        if (x<arr.length-1)
                                System.out.print(arr[x]+",");
                        else
                                System.out.print(arr[x]);

                }
                System.out.print("]");
        
        }
        
        
        
        public static void main(String[] args)
        {
                toHex(6);
        }
}

作者: heshiwei    时间: 2015-10-9 09:47
JDK是提供对应的API的
作者: JYcainiao    时间: 2015-10-9 11:24
heshiwei 发表于 2015-10-9 09:47
JDK是提供对应的API的

什么意思啊 ?  表示不懂啊
作者: C威    时间: 2015-10-9 11:43
嗯嗯,不错不错!!!!!!!!!!!!!
作者: JYcainiao    时间: 2015-10-9 12:48
C威 发表于 2015-10-9 11:43
嗯嗯,不错不错!!!!!!!!!!!!!

什么不错啊  我是问问题的啊
作者: iq513394    时间: 2015-10-9 17:08
本帖最后由 iq513394 于 2015-10-9 17:12 编辑

java中int 是32位(二进制位)的,所以在toBin中new int[32], 而toBa中则为32/3(从右往左每3位二进制位为一个八进制位)为10.6,得要11。
toHex中则为32/4(从右往左每3位二进制位为一个八进制位)为8。

作者: dzzheng3    时间: 2015-10-9 19:40
z这长度没法确定啊,但可以倒着打印出来,直到除的最后一个数是小于8的
作者: 斯文阿昊    时间: 2015-10-9 20:27
写的不错,学习了




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