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

© JYcainiao 中级黑马   /  2015-10-9 09:20  /  358 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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);
        }
}

7 个回复

倒序浏览
JDK是提供对应的API的
回复 使用道具 举报
heshiwei 发表于 2015-10-9 09:47
JDK是提供对应的API的

什么意思啊 ?  表示不懂啊
回复 使用道具 举报
嗯嗯,不错不错!!!!!!!!!!!!!
回复 使用道具 举报
C威 发表于 2015-10-9 11:43
嗯嗯,不错不错!!!!!!!!!!!!!

什么不错啊  我是问问题的啊
回复 使用道具 举报
本帖最后由 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。
回复 使用道具 举报
z这长度没法确定啊,但可以倒着打印出来,直到除的最后一个数是小于8的
回复 使用道具 举报
写的不错,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马