进制转换(十进制转二进制,八进制,十六进制)
具体规则不说了,直接上代码。今天整理出来,供小伙伴(尤其是开始学习的小伙伴)参考学习。。。
class test
{
public static void main(String[] args)
{
toBin(6);
toEight(20);
toHex(60);
}
//十进制转二进制
public static void toBin(int num){
char[] chs={'0','1'};
char[] arr=new char[32];
int pos=arr.length;
while(num!=0){
int temp=num&1;
arr[--pos]=chs[temp];
num=num>>>1;
}
for(int i=pos;i<arr.length;i++){
System.out.print(arr[i]);
}
}
//十进制转八进制
public static void toEight(int num){
char[] chs={'0','1','2','3','4','5','6','7','8'};
char[] arr=new char[32];
int pos=arr.length;
while(num!=0){
int temp=num&7;
arr[--pos]=chs[temp];
num=num>>>3;
}
for(int i=pos;i<arr.length;i++){
System.out.print(arr[i]);
}
}
//十进制转十六进制
public static void toHex(int num){
char[] chs={'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F'};
char[] arr=new char[8];
int pos=arr.length;
while(num!=0){
int temp=num&15;
arr[--pos]=chs[temp];
num=num>>>4;
}
for(int i=pos;i<arr.length;i++){
System.out.print(arr[i]);
}
}
}
进制转化优化(写一种方法,提高代码的复用性。。。)
num表示的是十进制数。base表示要转化的目标进制。offset表示需要右移的位数
有上述代码,我们可以看到,对于二进制,offset=1; 对于八进制,offset=3;对于十六进制,offset=4。
public static void trans(int num,int base,int offset){
char[] chs[]={'0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'};
int[] arr=new int[32];
int pos=arr.length;
while(num!=0){
int temp=num&base;
arr[--pos]=chs[temp];
temp>>>offset;
}
for(int i=pos;i<arr.length;i++){
System.out.print(arr[i]);
}
}
还没有评论,来说两句吧...