zoukankan      html  css  js  c++  java
  • Java:进制转换

    进制转换是常常需要的一种数据处理,在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);
        }
    
    }
     
     
  • 相关阅读:
    Packet Tracer 5.2实验(十五) 网络端口地址转换NAPT配置
    Packet Tracer 5.3实验(十六) 网络设备系统升级
    PostgreSQL学习手册(一) 数据表
    Access insert 语法错误
    Access2003转换成SQL2005。
    C#实现ACCESS数据库备份还原
    js 图片滚动
    根据日期算出天数
    datetime赋空值
    如何把Sql Server2005 数据库转换成Access
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4914788.html
Copyright © 2011-2022 走看看