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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求十进制整数的二进制,八进制,十六进制的表现形式
由之前笔记可知,八进制为整数的二进制的以三位为一组的数值组成,例如:
69二进制为001000101,每三位一组分割001-000-101,每三位表示的十进制数为1-0-5
所以其八进制表现形式为105
十六进制同理
69二进制为001000101,每四位一组分割0100-0101,每四位表示的十进制数为45
所以其十六进制表现形式为45
在逻辑运算思路为
十进制转八进制:69对7进行与操作,取其最低位三位的值,记录在数组,而后无符号右移三位再与,新值与7取值,记录,直到剩下的数为0
十进制转十六进制:69对15进行与操作,取其最低位四位的值,记录在数组,而后无符号右移右位再与,新值与15取值,记录,直到剩下的数为0
转二进制同理,与1,右移1位
代码:
class ArrayDemo
{
        public static void main(String[] args)
        {
                toBin(9);
                toOctal(9);
                toHex(9);

        }
        public static void toBin(int x) //十转二
        {
                trans(x,1,1);
        }
        public static void toOctal(int x)//十转八
        {
                trans(x,7,3);
        }
        public static void toHex(int x) //十转十六
        {
                trans(x,15,4);
        }
        public static void trans(int num,int base,int offset){
                StringBuilder str=new StringBuilder();
                char[] chs=new char[]{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
                char[] ch=new char[32/offset];
                int len=0;
                while(num!=0){
                        ch[len++] = chs[num & base];
                        num=num>>>offset;
                }
                for(int i=len-1;i>=0;i--){
                        str.append(ch[i]);
                }
                System.out.println(str);
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马