前提知识:
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);//十六进制