码迷,mamicode.com
首页 > 编程语言 > 详细

Java:进制转换

时间:2015-10-27 19:37:09      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

进制转换是常常需要的一种数据处理,在java中的一些类中封装了具有转换功能的方法,这个不做介绍。其实,进制之间的转化是通过先位异或&,再位移动>>>的方式实现的。

例如,对于一个十进制的整数而言,Int整型占4个字节,每一个字节为8个bit位,所以整型数据有32位bit。将整型转换为二进制,需要先将基数num=num&1,然后将32位bit右移>>>1位,直到num!=0条件不满足即可
将整型转换为八进制,需要先将基数num=num&7,然后将32位bit右移>>>3位,直到num!=0条件不满足即可
将整型转换为十六进制,需要先将基数num=num&15,然后将32位bit右移>>>4位,直到num!=0条件不满足即可
 
通过查表法进行进制的转换具体实例如下:
public class ToBinTest2
{  
    
    //十进制>>>>>二进制 
    public static void toBin(int n)
    {
      trans(n,1,1);
    }


    //十进制>>>>>十六进制 
    public static void toHex(int n)
    {
      trans(n,15,4);
    }


    //十进制>>>>>八进制 
    public static void toOtc(int n)
    {
      trans(n,7,3);
    }


    //转换过程
    public static void trans(int x,int base,int offset)
    {   
        if(x==0)
        {
            System.out.print(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(x!=0)                                     
        {
          int temp = x & base;
          arr[--pos] = chs[temp];
              x = x >>> offset;
        }
         for(int i = pos; i <arr.length; i++)
         {
              System.out.print(arr[i]);
         }
              System.out.println();
    }

    //主函数测试
    public static void main(String[] args)
    {
       int num;
       java.util.Scanner sc = new java.util.Scanner(System.in);
       System.out.print("please enter a integer number:");
       num = sc.nextInt();
       toBin(num);
       toHex(num);
       toOtc(num);
    }

}

 

 
 

Java:进制转换

标签:

原文地址:http://www.cnblogs.com/XYQ-208910/p/4914788.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!