进制转换

前提知识:

1、位移:

<<:左移:将操作数所有二进制数左移一位,右边空位用零补齐。如:00001011<<1=00010110

>>:右移:将操作数所有二进制右移一位,左边空位如果数为负数补1,正数补0.如:00001011<<1=00000101

>>:无符号右移:将操作数所有二进制右移一位,左边补0.

2、10==A,11==B...代码:

数据int temp;

(char)(temp-10+'A')

 1 public class Total_Exchange {
 2 
 3     public static void main(String[] args) {
 4         // TODO Auto-generated method stub
 5         trans(60,1,1);//十进制--->二进制
 6         trans(60,15,4);//十进制---->十六进制
 7         trans(60,7,3);//十进制----->八进制
 8     }
 9     public static void trans(int num,int base,int offset) {
10         if(num==0) {
11             System.out.println("0");
12             return;
13         }
14         char[] chs= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
15         char[] arr=new char[8];
16         int pos=arr.length;
17         while(num!=0) {
18             int temp=num&base;
19             arr[--pos]=chs[temp];
20             num=num>>>offset;
21         }
22         for(int x=pos;x<arr.length;x++) {
23             System.out.print(arr[x]);
24         }
25         System.out.println();
26     }
27 
28 }

以上代码在JAVA中可用以下代码实现:
Integer.toBinaryString(num);//二进制

........toOctalString(num);..八进制

........toHexString(num);//十六进制

原文地址:https://www.cnblogs.com/fmust/p/12378581.html