进制转换

黑马程序员

                  进制转换

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

十进制转换为二进制和十六进制两种方法

一:查表法

   思想:先建立一个表里面存放表示各种进制所需要的数,相应的最后位与相应进制的基数相与所得到的数恰好为表中所需数的下标。例:60二进制表示为:0000 0000 0011 1100 最后四位与15相与得到12,即十六进制中表示为C,而12恰好为表中C的下标。

 1:十进制转换为二进制

publicstaticvoid toHex(int num){

//建表

     char[] ch={'0','1'};

   //定义数组存放结果

     char[] result=newchar[32];

     int pos=result.length;

     while(num!=0){

        int temp=num&1;

    //查表

        result[--pos]=ch[temp];

        num=num>>>1;

     }

    //输出结果

     for(int i=pos;i<result.length;i++)

        System.out.print(result[i]);

     System.out.println();

     }

2:十进制转换为十六进制

publicstaticvoid toHex(int num){

    //建表

     char[] ch={'0','1','2','3','4','5','6','7','8','9','A',

            'B','C','D','E','F'};

   //定义数组存放结果

     char[] result=newchar[8];

     int pos=result.length;

     while(num!=0){

        int temp=num&15;

  //查表

        result[--pos]=ch[temp];

        num=num>>>4;

     }

  //输出结果

     for(int i=pos;i<result.length;i++)

        System.out.print(result[i]);

 }

3:由1,2总结十进制转换为其他进制通用的方法

publicstaticvoid trans(int num,int base,int offset){

    //建表

        char[] ch={'0','1','2','3','4','5','6','7','8','9','A',

               'B','C','D','E','F'};

    //定义数组存放结果

        char[] result=newchar[32];

        int pos=result.length;

        while(num!=0){

            int temp=num&base;

   //查表

            result[--pos]=ch[temp];

   //移位

            num=num>>>offset;

        }

    //输出结果

        for(int i=pos;i<result.length;i++)

            System.out.print(result[i]);

     }

二:取余法

    思想:需转换的数与相应的进制取余,按顺序所得到的数即可得到此进制该位的数。逆序输出所得到的的数即为所得结果。

  1:十进制转换为二进制

publicstaticvoid trans(int num,int index){

//定义数组a存放转换结果

        int[] a=newint[32];

        int i=0;

//当被除数为零时停止运算

        while(num>0){

        //将余数即转换的每一位存入数组

            a[i++]=num%index;//取余

            num=num/index;

        }

       //输出结果

        for(intj=i-1;j>=0;j--){

            System.out.print(a[j]);

        }

        System.out.println();

     }

2十进制转换为十六进制

publicstaticvoid trans1(int num){

        //利用StringBuffer类创建字符串序列s存放转换结果

       StringBuffer s=new StringBuffer();

//每次将十进制的二进制最后四位与111115相与即可得到转换结果

       for(int x=0;x<8;x++){

           int temp=num&15;

       //如果大于9需用字母表示,需判断

           if(temp>9){

      //将数字装换为字母表示

              s.append((char)(temp-10+'A'));

           }

           else

              s.append(temp);

           num=num>>>4;

           }

//逆序输出

       System.out.println(s.reverse());

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

 

详细请查看:<a href="http://edu.csdn.net"target="blank">http://edu.csdn.net</a>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值